*DECK SKSFDSQ 
          IDENT     SKSF$SQ 
          TITLE     SKSF$SQ 
          SST 
 1        MICRO     1,, B1
          B1=1
          COMMENT   CRM S-RECORD SKIP FORWARD.
*#
*1CD  SKSF$SQ 
*0D   PURPOSE 
*#
*#
*         (1) PERFORM SKIPFL DUTIES FOR FILES THAT HAVE BEEN OPES.SQ-D
*             SUCCESSFULLY. 
*0D   CALLING SEQUENCE
* 
*                   SB6       M 
*                   EQ        =YSKSF$SQ 
*         M         BSS       0 
*0D   PARAMETERS
*         A0        FIT ADDRESS 
*         B2        SKIP COUNT
*0D   REGISTERS 
*         ALL VOLATILE. 
*0D   ACTION
*#
 SKSF$SQ  CAP.RM    TRANSIENT 
*#
*         CHECK IF PREVIOUS OPERATION HAS BEEN CHECKS-D 
*#
          SB4        #EOR#
          OFF.RM    WSI,NOSBF      IF BUFFER NOT SUPPRESSED 
          F.RM       CKS
          SX6       111B
          PL        X1,=YERR$RM    IF NOT CHECKS-D, ERROR.
 NOSBF    BSS       0 
          F.RM      SKP,B2         PICK UP SKIP COUNT 
          SA2       A0
          LE        B2,B0,ZSKIP 
          INC.RM    RC,B2          INCREMENT RECORD COUNT 
*#
*0D       SKIP OVER RECORDS CHECKING EACH FOR EOF OR EOI
*#
 RLOOP    BSS        0
          SX6       "1"            SET SKIP COUNT TO 1
          SYSY      240B,R,6
          SX2       #SF#           SAVE FOR GET$S 
          SET.RM    LOP,X2
          F.RM      F18 
          SX2        30B
          BX6       -X1*X2
          LX1       59-9
          NG        X1,EOI         IF EOI, SKIP 
          ZR        X6,FMARK       IF EOF 
          SB2        B2-"1"        DECREMENT SKIPCOUNT
          GT         B2,B0,RLOOP   IF MORE TO SKIP, RETURN
 RTURN    BSS        0
          SET.RM     FP,B4         STORE FILE POSITION
          CLCD.SQ                  CLEAR FOR GET$S
          SX2       #SF#           SET LOP FOR GET$S
DONE      JP        B6             RETURN TO USER.
*#
*0D       IF EOF ENCOUNTERED SET FP=EOP AND RSC TO RECORD -NOT - SKIPPED
*#
 FMARK    BSS        0
          DEC.RM     RC,B2         RESET RECORD COUNT 
          SB4        #EOP#         SET FP 
          EQ        DEXIT          GO TO THE DATA EXIT
*#
*0D       IF BOI HIT SET FP=EOL AND RSC TO RECORDS NO SKIPPED 
*#
 EOI      BSS       0 
          DEC.RM    RC,B2          RESET RECORD COUNT.
          SB4       #EOI#          SET FP 
*#
*0D       DATA EXIT ROUTINE... SETS FP TO #EOI# OR #EOP#, RL TO 
*         ZERO, AND SETS UP THE RETURN JUMP BEFORE GOING TO 
*         THE USERS DATA EXIT (DX) IF PRESENT, ELSE RETURNS 
*         TO USER (DX=0). 
*#
DEXIT     BSS       0 
          SET.RM    FP,B4          FP TO #EOI# OR #EOP# 
          CLCD.SQ 
          SET.RM    RL,0           RL IS ZEROED 
          SX0       B2             STORE RESIDUAL SKIP COUNT IN X0. 
          F.RM      DX,B2          GET USERS DX 
          EQ        B0,B2,DONE     IF DX=0, ALL DONE
          SX2       40B            * ELSE GENERATE  AN
          SX7       B6             *  EQ  B6  INSTRUCTION 
          LX2       21             *
          BX7       X7+X2          *
          LX7       30             *
          SA7       B2             STORE INSTR IN DX ADR FOR RTN JMP
          JP        B2+1           GO TO USERS DX+1 
 ZSKIP    BSS       0        ZERO SKIP COUNT
          RCL.RM    A0,AUTO 
          F.RM      FP
          NZ        X1,NMIDREC     NOT AT MID-RECORD
          SET.RM    GPS,0 
          SET.RM    GSF,0 
          SET.RM    PRD,0 
          EQ        =XSKGT$S       GO SKIP TO EOR 
NMIDREC   BSS       0 
          F.RM      IN,3      RESET BUFFER TO EMPTY 
          SET.RM    OUT,X3
          ON.RM     SOL,RTURN           NOT A PRU DEVICE
          SA2       A0
          LX2       59-4
          NG        X2,RTURN            NOP IF AT EOR 
          F.RM      FP
          NZ        X1,RTURN       IF NOT MID RECORD
          SB2       "1" 
          EQ        RLOOP 
          END 
