*DECK S$SKIP
          IDENT  S$SKIP 
          ENTRY  S$SKIP 
          TITLE  S$SKIP - SKIP AN INTERNAL FIELD
          COMMENT  SKIP AN INTERNAL FIELD 
          SPACE  4
  
**        S$SKIP - SKIP AN INTERNAL FIELD 
* 
*  CALLING SEQUENCE-
* 
*         S$SKIP(NBITS);
* 
*  GIVEN- 
* 
*         NBITS = NUMBER OF BITS IN INTERNAL RECORD TO IGNORE 
*                 I.E. SKIP OVER AND NOT REVERT (USED WHEN THE
*                 RETAIN OPTION PUTS IN THE RECORD ORDINAL) 
* 
*  DOES-
* 
*         SKIPS THEM BY CALLING S$GNRNX WITH THE ARGUMENT NBITS 
*         IN REGISTER B5 AND IGNORING THE RESULT
* 
*  RAISON D'ETRE- 
* 
*         S$GNRNX IS VERY JEALOUS AND INSISTS ON REVERTING EVERY
*         BIT IN THE INTERNAL RECORD. IN PARTICULAR, IT SETS *A0
*         WITH MEANINGFUL INFORMATION WHEN CROSSING FROM THE RECORD 
*         DESCRIPTOR TO THE RECORD STORAGE AREA. FOR THIS REASON, 
*         SIMPLY INCREMENTING S$LK DOES NOT WORK - WE HAVE TO 
*         LET S$GNRNX DO IT 
  
S$SKIP    SUBR
          SB1    1           REMEMBER MLF 
          SA1    X1          NUMBER OF BITS TO SKIP 
          SB4    X1          NUMBER OF BITS TO SKIP 
                             S$GNRNX WILL ACCEPT MAX. 60
  
L1        SB2    60          MAXIMUM FOR S$GNRNX
          IFTHEN  B4@B2      IF LESS THAN OR EQUAL TO 60
            SB5  B4          S$GNRNX LIKES IT IN B5 
            SB4  B4-B4       ZERO B4 FOR PROGRAM LOGIC
          ELSE- 
            SB5  B2          B2=60
            SB4  B4-B2       B4-60
            ENDIF.
  
* HOLD ON TO THE DECREASED B4 REGISTER IN CASE IT 
* IS LARGER THAN 60 
  
          SX7    B4 
          SA7    HOLDB4 
  
          CALL   S$GNRNX
  
          SA1    HOLDB4 
          SB4    X1 
          NE     B4,B0,L1 
  
  
          EXIT
HOLDB4    DATA   0           HOLD B4 BETWEEN CALLS TO S$GNRNX 
  
          END 
