*COMDECK  ENDW
          TITLE  ENDW 
**        ENDW
* 
*         OBTAIN THE LABEL STRING FROM THE ENDW STATEMENT.  THEN
*         BACKSPACE THE CONTROL STATEMENTS TO THE BEGINNING OF
*         THE JOB FILE (OR THE BEGINNING OF THE PROCEDURE)
*         THEN SEARCH FORWARD FOR A WHILE STATEMENT WITH A MATCHING 
*         LABEL.
  
 ENDW1    BSS 
          RJ     =XCCLLAB 
  
          SA5    LABEL
          MX6    0
          BX7    X5 
          SA6    CCPRSK      DO NOT LIST SKIPPED CARDS
  
          SA7    ENDWLAB     SAVE LABEL 
          SX1    1
          RJ     ZFS         DETERMINE Z FILE NAMES 
  
*         ACCESS CONTROL STATEMENT FILE 
  
          SA5    FILECS 
          RJ     =XIOCSA
  
          SX3    237B 
          RJ     =XCCLRPV 
  
 OSBE     IFEQ   HOST,NOSBE 
  
*         WHEN EXECUTING ON NOS/BE AN ENDW WITHIN THE ORIGINAL
*         JOB FILE MUST NOT REPOSITION THE INPUT FILE.  IF
*         PNL=0 THEN SIMPLY ZERO THE FILE POSITION AND
*         THUS WHEN RESET AS THE CONTROL STATEMENT FILE THE SYSTEM
*         WILL CONSIDER POSITION TO BE AT BOI OF THE INPUT FILE(CORRECT)
  
          SA1    SNVPNL 
          MX6    0
          SA6    CSFPOS      ASSUME PNL =0
          ZR     X1,ENDW02   IF PNL =0
  
 OSBE     ENDIF 
  
*         BACKSPACE TO THE BEGINNING OF CONTROL STATEMENT RECORD
  
          SX2    FILEIO 
          SA5    X2 
          RJ     =XIOFET     RESET FET FIELDS 
  
          SX2    FILEIO 
          RJ     =XIOREW
  
          SA3    SNVPNL 
          SB2    X3-1        NEST LEVEL -1 = SKIP COUNT 
          SX2    FILEIO 
          RJ     =XIOSKP
  
          SX2    FILEIO 
          RJ     =XIOPOS     GET POSITION 
  
 ENDW02   BSS 
  
 OSNOS    IFNE   HOST,NOS 
  
*         FOR SCOPE 2 AND FOR NOS/BE THE FILE IS NOW REENTERED
*         AS THE C.S.F..  THEN CONTROLC WILL BE USED (IN THE
*         SUBROUTINE CCLSCS) TO SEARCH FOR THE WHILE
  
          SX2    FILEIO 
          RJ     =XIOCSE     REENTER AS C.S.F.
  
          JP     ENDW11 
  
 OSNOS    ELSE
  
*         READ FORWARD SEARCHING FOR ENDW AND WHILE 
  
          MX7    0
          SA7    NOSWRDS     ZERO COUNT, READ WILL NOW COUNT WORDS READ 
 ENDW03   BSS 
          READ   FILEIO,RECALL  INITIATE READ 
          SX2    FILEIO 
          SX3    PROCWSA
          SX4    V.CCC
          SX6    SCATBF1
          RJ     =XIORDL
  
          NZ     X1,ENDW04   IF EOR ENCOUNTERED 
  
          SA2    SCATBF1
          RJ     =XCCLASV 
  
          SA4    ANSVRB 
          SA5    =0LENDW
          SA1    =0LWHILE 
          BX0    X1-X4
          BX7    X4-X5
          ZR     X0,ENDW04   IF WHILE FOUND 
  
          NZ     X7,ENDW03   READ NEXT CARD IF NEITHER WHILE OR ENDW
  
 ENDW04   BSS 
          SA1    W.RACS      DESTINATION
          SA2    SCATBF1     SOURCE 
          RJ     =XSTRPKS    PLACE CARD INTO RA+70
  
*         IF NOT ON SCOPE 2 MOVE POSITION INFORMATION INTO CSFPOS 
*         THE POSITION INFORMATION NOW IN CSFPOS IS THE FILE POSITION 
*         BEFORE STARTING THE READS TO SEARCH FOR THE WHILE.
*         THE COUNT OF WORDS READ MUST NOW BE ADDED TO THAT 
*         POSITION SO THAT IT REPRESENTS THIS POSITION. 
  
          SA1    NOSWRDS     WORDS READ 
          SA2    CSFPOS      OLD POSITION BEFORE READS
          IX7    X1+X2       CURRENT POSITION 
          SA7    A2          CSFPOS 
          SX2    FILEIO 
          RJ     =XIOCSE     REENTER FILE AS C.S.F. 
  
 OSNOS    ENDIF 
  
 ENDW05   BSS 
          SA5    =0LENDW
          SA4    ANSVRB 
          BX0    X4-X5
          NZ     X0,ENDW06   IF NOT ENDW
  
*         VERB ENCOUNTERED IS AN ENDW,CHECK LABEL 
  
          RJ     =XCCLGNP 
  
          NZ     X5,ENDW07   IF ERROR 
  
          SA1    ENDWLAB
          SA5    ANSSTR 
          BX0    X1-X5
          NZ     X0,ENDW10   IF NO MATCH
  
*         LABELS MATCH, ENDW FOUND BEFORE WHILE, ERROR
  
          MX1    0           DO NOT ADD SKIP PREFIX 
          RJ     =XCCLDSB    PRINT ENDW STATEMENT 
  
          SX3    MSG261      $ENDW WITH MATCHING LABEL FOUND$ 
          RJ     STRMGA      ASSEMBLE AND ISSUE ABORT MESSAGE 
  
          JP     ENDW08 
  
 ENDW06   BSS 
          SA5    =0LWHILE 
  
*         COMPARE VERB WITH WHILE,
*                X4  = ANSVRB 
  
          BX0    X4-X5
          NZ     X0,ENDW10   IF NOT WHILE EITHER
  
          SX6    1
          SA6    PROCESS     WHILE
  
          RJ     =XCCLEVX 
  
          ZR     X5,ENDW09   IF EXPRESSION VALID
  
 ENDW07   BSS 
          SX3    MSG124      $PRECEDING ERR MSG APPLIES TO FOLLOWING$ 
          RJ     STRMGA      ASSEMBLE AND ISSUE ABORT MESSAGE 
  
          SX7    MOSJDT      SET FOR SYSTEM DAYFILE DISPLAY 
          SA7    MSGOPT 
  
          SA1    CCPRSK      IF PRINTING SKIPPED CARDS, ADD PREFIX
          RJ     =XCCLDSB    DAYFILE STATEMENT
  
 ENDW08   BSS 
          SX3    MSG262      $CONTINUING SEARCH, PRINTING SKIPPED CARDS$
          RJ     =XSTRMSG 
  
          SX7    1
          SA7    CCPRSK      PRINT SKIPPED CARDS
          JP     ENDW11      CONTINUE SKIPPING
  
 ENDW09   BSS 
          RJ     =XCCLGNP    GET LABEL
  
          NZ     X5,ENDW07   IF ERROR 
  
          SA5    ANSSTR      LABEL
          SA4    ENDWLAB
          BX0    X4-X5
  
          BX7    X5 
          SA7    LABEL       SAVE FOR POSSIBLE LABEL
  
*         IF THE LABELS MATCH THE VALUE OF THE EXPRESSION IS
*         IN EXPVAL AND THE LABEL IS IN LABEL.  IF TRUE 
*         EXIT, ELSE SKIP TO ENDW.  IN OTHER WORDS ENTER WHILE
*         PROCESSING
  
          NZ     X0,ENDW10   LABELS DONT MATCH
  
          MX1    0
          SX7    MOSJD       SYSTEM AND JOB DAYFILES BUT NOT TERMINAL 
          SA7    MSGOPT 
          RJ     =XCCLDSB    OUTPUT CARD W/O HEADER 
  
  
          JP     WHILE2      ENTER WHILE PROCESSING 
  
  
 ENDW10   BSS 
  
*         IF SKIPPED CARDS ARE BEING PRINTED, DO SO 
  
          SA1    CCPRSK 
          ZR     X1,ENDW11   CONTINUE SKIPPING
  
          SX7    MOJD        SELECT JOB DAYFILE, NOT TERMINAL 
          SA7    MSGOPT 
          RJ     =XCCLDSB    DAYFILE STATEMENT, WITH PREFIX 
  
  
 ENDW11   BSS 
  
*         CONTINUE SKIPPING 
  
          SA5    =0LWHILE 
          SA4    =0LENDW
          BX6    X4 
          BX7    X5 
          SA6    TERMT
          MX6    0
          SA7    A6+B1       TERMT+1
          SA6    TERMT+2     INDICATE END OF SKIP TERMINATORS 
          RJ     =XCCLSCS    SKIP TO NEXT TERMINATOR
  
          NZ     X5,EXIT     EXIT IF ALL CARDS SKIPPED
          JP     ENDW05 
  
  
