429 { \
430 Int quot__, i__, imb__, inb__, j__, mb__, mydist__, \
431 nb__, nblk__, src__; \
432 imb__ = desc_[
IMB_]; mb__ = desc_[
MB_]; pr_ = desc_[
RSRC_]; \
433 if( ( pr_ >= 0 ) && ( nr_ > 1 ) ) \
434 { \
435 if( ( i__ = (i_) - imb__ ) < 0 ) \
436 { ii_ = ( r_ == pr_ ? (i_) : 0 ); } \
437 else \
438 { \
439 src__ = pr_; \
440 pr_ += ( nblk__ = i__ / mb__ + 1 ); \
441 pr_ -= ( pr_ / nr_ ) * nr_; \
442 if( ( mydist__ = r_ - src__ ) < 0 ) mydist__ += nr_; \
443 if( mydist__ >= nblk__ - ( quot__ = nblk__ / nr_ ) * nr_ ) \
444 { \
445 if( r_ != src__ ) ii_ = mb__; \
446 else ii_ = imb__; \
447 if( r_ != pr_ ) \
448 ii_ += ( quot__ - 1 ) * mb__; \
449 else \
450 ii_ += i__ + ( quot__ - nblk__ ) * mb__; \
451 } \
452 else \
453 { \
454 if( r_ != src__ ) ii_ = mb__ + quot__ * mb__; \
455 else ii_ = imb__ + quot__ * mb__; \
456 } \
457 } \
458 } \
459 else \
460 { \
461 ii_ = (i_); \
462 } \
463 inb__ = desc_[
INB_]; nb__ = desc_[
NB_]; pc_ = desc_[
CSRC_]; \
464 if( ( pc_ >= 0 ) && ( nc_ > 1 ) ) \
465 { \
466 if( ( j__ = (j_) - inb__ ) < 0 ) \
467 { jj_ = ( c_ == pc_ ? (j_) : 0 ); } \
468 else \
469 { \
470 src__ = pc_; \
471 pc_ += ( nblk__ = j__ / nb__ + 1 ); \
472 pc_ -= ( pc_ / nc_ ) * nc_; \
473 if( ( mydist__ = c_ - src__ ) < 0 ) mydist__ += nc_; \
474 if( mydist__ >= nblk__ - ( quot__ = nblk__ / nc_ ) * nc_ ) \
475 { \
476 if( c_ != src__ ) jj_ = nb__; \
477 else jj_ = inb__; \
478 if( c_ != pc_ ) \
479 jj_ += ( quot__ - 1 ) * nb__; \
480 else \
481 jj_ += j__ + ( quot__ - nblk__ ) * nb__; \
482 } \
483 else \
484 { \
485 if( c_ != src__ ) jj_ = nb__ + quot__ * nb__; \
486 else jj_ = inb__ + quot__ * nb__; \
487 } \
488 } \
489 } \
490 else \
491 { \
492 jj_ = (j_); \
493 } \
494 }