*DECK REWDSQ
          IDENT     REW$SQ
          COMMENT   CRM SQ REWIND ROUTINE 
          TITLE     REW$SQ - REWIND SQ
          SST 
          LIST      F 
          B1=1
*#
*1CD  REW$SQ PROGRAM
*0D   PURPOSE 
*0        REWIND A SEQUENTIAL FILE. 
*0D   CALL
*                   SB6       RETURN-ADDRESS
*                   EQ        =XREW$SQ
*0D   PARAMETERS
*0        A0     FIT ADDRESS. 
*         B1     1. 
*         B6     RETURN ADDRESS.
*0D   ACTION
*0        IF THE LAST OPERATION ON THIS FILE WAS A *PUT*, ZERO OUT
*         *LVL* AND *WEOX*, SAVE USERS RETURN ADDRESS, SETUP RETURN 
*         ADDRESS IN *REW$SQ*, JUMP TO *FLSH$SQ* TO FLUSH ANY DATA
*         REMAINING IN THE CIRCULAR BUFFER, AND RESTORE THE USERS 
*         RETURN ADDRESS.  THEN UNLOAD ANY PUT ROUTINES.
*0        REGARDLESS OF THE LAST OPERATION, *REW$SQ* NEXT ISSUES
*         A CIO FUNCTION *REWIND* WITH RECALL BEFORE AND AFTER THE
*         REWIND, SETS *LOP* TO REWIND STATUS, SETS *FP* TO BOI,
*         SETS *PAE* TO 1 (PHYSICAL AND LOGICAL POSITIONS AGREE) AND
*         JUMPS TO *RSPT$SQ* TO RE-INITIALIZE FIELDS FOR SUBSEQUENT 
*         *GET* AND *PUT* OPERATIONS ON THIS FILE.
*0D   OTHER CODE
*0        PROGRAMS- FLSH$SQ, FLSH$S, RSPT$SQ, RM$TUC
*         MACROS-  F.RM, SET.RM, SAVE, RESTORE, SYSY
*#
 REW$SQ   CAP.RM    INTERMEDIATE
          SAVE
          SET.RM    LVL,0          LEVEL 0
          NE.RM     LOP,#PU#,NOTPUT,B2   JUMP IF LAST OP NOT PUT
          ON.RM     WSI,NOBUF 
          SET.RM    WEOX,0         WCW FLAG 
          SB6       ENDFLSH 
          F.RM      RT,X1,-#ST# 
          NZ        X1,=YFLSH$SQ   NOT -S-
          EQ        =YFLSH$S       -S-
  
NOBUF     RCL.RM    A0,AUTO 
          SX6       A0+#FTL#
          EQ        GOTFWB
  
Z999999   CON       7LZ999999+1 
          CON       01010101010101010101B 
  
 NOTPUT   EQ.RM     OC,#OPE#,NOFLSH,B2
*         NOT OPEN
  
*         CHECK FILE NAME VALIDITY
          SA1       A0             LFN
          SA3       Z999999        UPPER BOUND
          SA2       A3+B1 
          MX7       42
          BX1       X7*X1          CLEAR C/S
          SX6       165B+1S17      FATAL ERROR 165
          ZR        X1,=XERR$RM 
          MX0       -1
          IX4       X1+X0 
          BX5       X1-X4 
          IX4       X3-X1          SHOULD NOT BORROW
          AX5       6 
          BX2       -X5*X2         LOWER BOUND
          IX0       X1-X2          SHOULD NOT BORROW
          LX2       6 
          BX3       -X0-X4
          BX4       X2*X3 
          NZ        X4,=XERR$RM 
          F.RM      FIRST,X6
          NZ        X6,GOTFWB 
          SX6       A0+#FTL#
 GOTFWB   BSS 
          SA6       A0+2           IN 
          SX2       X6+2
          SA6       A6+B1          OUT
          SET.RM    FIRST,X6
          SET.RM    LIMIT,X2
          SET.RM    CMPLT,1 
          F.RM      FTS,X1,-#MNF# 
          PL        X1,ENDFLSH
          SET.RM    FTS,#MNF# 
 ENDFLSH  BSS 
 NOFLSH   BSS 
          SET.RM    PRL,0 
          OFF.RM    WPN,DOREW      IF LOP NOT OUTPUT
          SB2       =0LBAM         GROUP NAME 
* CALL /UNLPUT/ 
*CALL /UNLPUT/
 DOREW    BSS 
         SA3        =YRM$SYS=      PRESERVE THE XJPLUG INDICATOR
          SYSY      050B,R         REWIND FILE WITH RECALL
         BX7        X3
         SA7        A3
          SET.RM    LOP,#RE#,7,2
          SET.RM    FP,#BOI#
          F.RM      BT,X1,-#IT# 
          NZ        X1,NOTIBLK
          SET.RM    BN,0
NOTIBLK   BSS       0 
          RESTORE 
* CALL /RSPTDSQ/
*CALL /RSPTDSQ/ 
 JPB6     BSS 
          SA1       CAPSTAT 
          BX7       X1
          SA7       =XRM$TMP       TO GET REW$SQ UNLOADED 
          JP        B6
* CALL /UNL/
*CALL /UNL/ 
          END 
