LISTLB
          IDENT  LISTLB,FETS
          ABS 
          ENTRY  LISTLB 
          ENTRY  RFL= 
          ENTRY  ARG= 
          SYSCOM B1 
*COMMENT  LISTLB - LIST MAGNETIC TAPE LABELS. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  LISTLB - LIST MAGNETIC TAPE LABELS.
          SPACE  4
***       LISTLB - LIST MAGNETIC TAPE LABELS. 
*         W. E. GOEBEL.      74/01/21.
*         R. L. MUELLER.     75/10/15.
*         L. C. HAAS.        76/09/21.  RESEQUENCE. 
          SPACE  4
***              LISTLB READS ANSI LABELS ON A SPECIFIED TAPE FILE
*         AND LISTS THE DESIRED LABELS ON AN OUTPUT FILE. 
* 
*         IF LISTLB IS ABORTED, THE OUTPUT BUFFER IS FLUSHED. 
* 
*         THE COMMAND.
* 
*         LISTLB(LFN,P1=VAL1,P2=VAL2,...,PN=VALN) 
* 
*         ARGUMENT PARAMETERS.
* 
*         LFN                NAME OF THE TAPE FILE. 
* 
*         SI=SETID  OR       MULTI-FILE TAPE PARAMETER AND USED IN
*         M=SETID            CONJUNCTION WITH THE QN(OR P) PARAMETER
*                            AS FOLLOWS-
*                            1. SI .NE. 0 AND QN = 0 - LIST THE LABELS
*                               OF ALL FILES IN THE MULTI-FILE SET
*                               WITH SET IDENTIFIER = *SETID*.
*                            2. SI .NE. 0 AND QN = N -  LIST ONLY THE 
*                               LABELS FOR FILE N OF THE MULTI-FILE SET.
*                            3. SI = 0 AND QN .NE. 0 -  INCORRECT COM-
*                               BINATION - JOB WILL BE ABORTED. 
* 
*         QN=SEQNO  OR       MULTI-FILE TAPE PARAMETER AND USED IN
*         P=SEQNO            CONJUNCTION WITH THE SI(OR M) PARAMETER. 
*                            (SEE ABOVE)
* 
*         LO=AROVHFEU        A - LIST ALL LABELS. 
*                            R - LIST ALL REQUIRED LABELS.
*                                VOL1,HDR1,EOF1,EOV1. 
*                            O - LIST ALL OPTIONAL LABELS.
*                                VOL2-9,HDR2-9,EOF2-9,EOV2-9, 
*                                UVLN,UHLX,UTLX.
*                            V - LIST ALL VOLN LABELS.
*                            H - LIST ALL HDRN LABELS.
*                            F - LIST ALL EOFN LABELS.
*                            E - LIST ALL EOVN LABELS.
*                            U - LIST ALL UVL,UHL,UTL LABELS. 
* 
*         L=FILENAM          LIST LABELS ON FILE FILENAM. 
* 
*         DEFAULTS           LFN = TAPE 
*                            LO = A 
*                            L = OUTPUT 
          SPACE  10 
***       DAYFILE MESSAGES. 
* 
*         * COMMAND ERROR.* = UNABLE TO INTERPRET COMMAND.
* 
*         * FILE NAME ERROR.* = FILE NAME IS TOO LONG.
* 
*         * INCORRECT PARAMETER.* = PARAMETER IS IN ERROR.
* 
*         * INCORRECT COMBINATION OF QN/SI.* = PLEASE SPECIFY *SETID*.
* 
*         * LISTLB ABORT.* = CHECK DAYFILE FOR REASON.
* 
*         * NO HDR1 LABEL RETURNED ON OPEN.* = NOTIFY CDC ANALYST.
* 
*         * LISTLB COMPLETE.* 
          TITLE  ASSEMBLY CONSTANTS AND FETS. 
  
*CALL     COMCMAC 
*CALL     COMCCMD 
  
****      ASSEMBLY CONSTANTS. 
  
  
 TBUFL    EQU    1*9+9*9+9*9+64*9+1 
 OBUFL    EQU    1001B
  
  
****
  
          ORG    110B 
  
*         FETS. 
  
 FETS     BSS    0
  
 T        BSS    0           TAPE FILE
 TAPE     FILEB  TBUF,TBUFL,(FET=10),XL,UPR 
  
 O        BSS    0           LIST FILE
 OUTPUT   FILEB  OBUF,OBUFL,(FET=8) 
          TITLE  MAIN ROUTINE.
 LISTLB   SPACE  4
**        LISTLB - MAIN ROUTINE.
  
  
 LISTLB   BSS    0
          RJ     PRS
          MX6    0           CLEAR XL BUFFER
          SA6    TBUF 
          SA1    QN 
          NZ     X1,LIS1     IF MULTI-FILE AND 1 FILE WANTED
          OPEN   T,ALTER,R   OPEN FILE - GET HEADER GROUP LABELS
          SA1    SI          CHECK FOR MULTI-FILE 
          ZR     X1,LIS2     IF NOT MULTI-FILE TAPE 
          RJ     FHR         FIND *HDR1* LABEL
          SA1    TBUF+B2+4   GET FILE SEQUENCE NUMBER 
          MX0    24 
          LX1    6
          BX5    X0*X1
          SB7    B1 
          RJ     DXB         CONVERT TO BINARY
          SA6    SN 
          EQ     LIS2        PRINT LABELS FROM XL BUFFER
  
 LIS1     RJ     SHD         SET UP *HDR1* LABEL IN EXTENDED BUFFER 
          MX2    1           CLEAR *UP* BIT TO ALLOW AUTO REEL SWAP 
          SA1    T+1
          LX2    45+1 
          BX6    -X2*X1 
          SA6    A1 
          SA1    T+1         SET *EPR* BIT IN FET 
          MX6    1
          LX6    44-59       SET EPR BIT
          BX6    X6+X1
          SA6    A1          STORE BACK IN FET
          POSMF  T,R         POSITION FILE - GET HEADER LABELS
          SA1    T+1         CLEAR *EPR* BIT IN FET 
          MX6    1
          LX6    44-59       CLEAR EPR BIT
          BX6    -X6*X1 
          SA6    A1          STORE BACK IN FET
          SA1    A1-B1       CHECK FET STATUS 
          AX1    9
          MX2    -5 
          BX1    -X2*X1      GET FET STATUS BITS 13-9 
          SX2    X1-21B      CHECK FOR END-OF-SET 
          ZR     X2,LIS5     IF END-OF-MULTIFILE SET
          NZ     X1,LIS6     IF ANY OTHER ERROR 
          MX2    1           NOW RESET *UP* BIT 
          SA1    T+1
          LX2    45+1 
          BX6    X1+X2
          SA6    A1 
 LIS2     RJ     PXL         PRINT LABELS FROM XL BUFFER
          SA1    TF 
          ZR     X1,LIS4     IF IGNORE TRAILER LABELS 
          SKIPEI T,R         SKIP TO EOI
          SX5    TBUF-9 
          SA1    T           CHECK FOR END-OF-REEL
          LX1    59-10
          PL     X1,LIS3     IF NOT AT END-OF-REEL
          CLOSER T,,R        CLOSE REEL - GET TRAILER LABELS
          RJ     PXL         PRINT LABELS FROM XL BUFFER
          OPEN   T,REELNR,R  OPEN NEXT REEL - GET HEADER LABELS 
          EQ     LIS2 
  
 LIS3     CLOSE  T,NR,R      CLOSE FILE - GET TRAILER LABELS
          RJ     PXL         PRINT LABELS FROM XL BUFFER
 LIS4     SA1    SI          CHECK FOR SETID
          ZR     X1,LIS5     IF NO SET ID SPECIFIED 
          SA1    QN          NUMBER OF DESIRED FILE 
          NZ     X1,LIS5     IF ONLY ONE FILE WANTED
          SA1    SN          INCREMENT SEQUENCE NUMBER
          SX6    X1+1 
          SA6    A1 
          EQ     LIS1        GO PROCESS MORE LABELS 
  
 LIS5     SA1    LR          LABELS READ
          RJ     CDD
          SA6    LBR
          SA1    LP          LABELS PRINTED 
          RJ     CDD
          SA6    LBP
          WRITEW O,LRP,LRPL 
          WRITER X2 
          SA1    EF 
          NZ     X1,LIS7     IF ERROR FLAG SET
          MESSAGE  (=C* LISTLB COMPLETE.*)
          ENDRUN
  
*         ENTER HERE AFTER ERROR CONDITION
  
 LIS6     SX6    B1          SET ERROR FLAG 
          SA6    EF 
          EQ     LIS5 
  
 LIS7     MESSAGE  (=C* LISTLB ABORT.*) 
          ABORT 
          TITLE  SUBROUTINES. 
**        COV - CONVERT OCTAL NUMBER TO DECIMAL DISPLAY CODE
* 
*         ENTRY  (X1) = OCTAL NUMBER. 
* 
*         EXIT   (X6) = DISPLAY CODE VALUE RIGHT JUSTIFIED WITH 
*                       LEADING ZEROS (4 DIGITS ONLY).
* 
*         USES   X - 0, 1, 2, 3, 6. 
*                B - 4. 
*                A - NONE.
* 
*         CALLS  CDD. 
  
  
 COV      SUBR               ENTRY/EXIT 
          RJ     CDD         CONVERT VALUE TO DISPLAY CODE
          LX6    36 
          BX1    X6 
          MX6    0
          MX2    -6 
          SB4    4
 COV1     LX6    6
          LX1    6
          BX3    -X2*X1      MASK OFF A CHARACTER 
          SX0    X3-1R       CHECK FOR SPACE (BLANK)
          NZ     X0,COV2     IF NO SPACE
          SX3    1R0         REPLACE WITH 0 
 COV2     BX6    X6+X3
          SB4    B4-B1
          NZ     B4,COV1     IF MORE CHARACTERS TO DO 
          EQ     COVX        RETURN 
 FHR      SPACE  4,10 
**        FHR - SEARCH LABEL BUFFER FOR *HDR1* LABEL. 
* 
*         ENTRY  TBUF CONTAINS HEADER GROUP LABELS. 
* 
*         EXIT   (B2) = INDEX IN TBUF OF *HDR1* LABEL.
* 
*         USES   X - 0, 1, 2, 3.
*                B - 2, 7.
*                A - 1, 2, 3. 
  
  
 FHR      SUBR               ENTRY/EXIT 
          SB2    B0 
          MX0    24 
          SA3    =4LHDR1
 FHR1     SA1    TBUF+B2     GET CHARACTER COUNT
          MX2    -12
          BX1    -X2*X1 
          ZR     X1,FHR2     IF NO *HDR1* LABEL 
          SA2    A1+B1       GET LABEL ID 
          BX2    X0*X2
          BX2    X2-X3       CHECK IF *HDR1*
          ZR     X2,FHRX     IF FOUND *HDR1* LABEL
          SX1    X1+9        CALCULATE WORD COUNT OF LABEL
          SX2    10 
          IX1    X1/X2
          SB2    B2+B1       INCREMENT TO FIRST WORD OF LABEL 
          SB2    B2+X1       INCREMENT TO CHARACTER COUNT OF NEXT LABEL 
          EQ     FHR1        LOOP 
  
 FHR2     MESSAGE  (=C* NO HDR1 LABEL RETURNED ON OPEN.*) 
          EQ     LIS6        TERMINATE JOB
          SPACE  4
**        FLT - FIND LABEL TYPE.
* 
*         ENTRY  (X5) = ADDRESS OF FIRST WORD OF LABEL. 
* 
*         EXIT   (B4) = POSITION OF LABEL TYPE IN TABLE.
*                (B4) = 0 IF LABEL TYPE NOT FOUND.
* 
*         USES   X - 1, 2, 3. 
*                B - 3, 4, 6, 7.
*                A - 1, 2.
  
  
 FLT      SUBR               ENTRY/EXIT 
          SA1    X5+B1
          SB3    TLAB 
          SB4    B0 
          SB6    TLABA
          SB7    TLABL-1
 FLT1     SB4    B4+B1
          SA2    B3+B4
          BX3    X1-X2
          AX3    36 
          ZR     X3,FLTX     IF MATCH ON FOUR CHARACTERS
          LT     B4,B6,FLT1  IF NOT END OF FOUR CHARACTER ENTRIES 
 FLT2     SB4    B4+B1
          SA2    B3+B4
          BX3    X1-X2
          AX3    42 
          ZR     X3,FLTX     IF MATCH ON THREE CHARACTERS - RETURN
          LT     B4,B7,FLT2  IF NOT END OF TABLE
          SB4    B0 
          EQ     FLTX        ERROR EXIT 
 PHE      SPACE  4
**        PHE - PROCESS HDR1, EOF1, EOV1 PARAMETERS.
* 
*         ENTRY  (LAB - LAB+7) = EIGHT WORD LABEL BLOCK.
* 
*         EXIT   (HEP - HEP+9) = OUTPUT LINE WITH PARAMETERS MERGED IN. 
* 
*         USES   X - 0, 1, 2, 3, 4, 6, 7. 
*                B - 6, 7.
*                A - 1, 2, 3, 4, 6, 7.
  
  
 PHE      BSS    0           ENTRY
          SA1    LAB         MOVE LABEL PARAMETERS TO OUTPUT LINE 
          SA3    HEP
          MX0    -36
          SA2    A1+B1
          BX1    -X0*X1 
          BX3    X0*X3
          LX7    X2          CHARACTERS 7-16 FILE IDENTIFIER
          BX6    X3+X1       MERGE CHARACTERS 1-6 FILE IDENTIFIER 
          SA1    A2+B1
          SA7    A3+B1
          SA6    A3 
          SA3    A7+B1
          MX0    6
          BX6    X0*X1
          BX3    -X0*X3 
          SA4    A3+B1
          BX3    X6+X3       MERGE CHARACTER 17 FILE IDENTIFIER 
          LX1    30 
          MX0    -24
          BX6    -X0*X1 
          BX3    X0*X3
          MX0    12 
          BX6    X6+X3       MERGE CHARACTERS 1-4 SET IDENTIFIER
          SA6    A7+B1
          BX4    -X0*X4 
          BX7    X0*X1
          AX1    30 
          SA2    A1+B1
          BX4    X4+X7       MERGE CHARACTERS 5-6 SET IDENTIFIER
          MX0    -18
          BX1    -X0*X1 
          BX4    X0*X4
          BX7    X4+X1       MERGE CHARACTERS 1-3 SECTION NUMBER
          SA7    A6+B1
          MX0    6
          SA3    A4+B1
          BX6    X0*X2
          BX3    -X0*X3 
          LX2    30 
          BX3    X3+X6       MERGE CHARACTER 4 SECTION NUMBER 
          MX0    -24
          BX6    -X0*X2 
          SA4    A3+B1
          BX3    X0*X3
          MX0    24 
          BX6    X3+X6       MERGE SEQUENCE NUMBER
          BX7    X0*X2
          SA6    A3 
          LX0    -24
          SA3    A4+B1
          LX7    -24
          SA1    A2+B1
          BX4    -X0*X4 
          MX0    6
          BX7    X4+X7       MERGE GENERATION NUMBER
          LX2    24 
          SA7    A6+B1
          BX6    X0*X1
          BX2    X0*X2
          MX0    12 
          LX2    6
          BX6    X6+X2
          LX0    -12
          LX6    42 
          BX3    -X0*X3 
          LX1    6
          MX0    6
          BX3    X3+X6       MERGE GENERATION VERSION NUMBER
          AX3    6
          SA2    A1+B1
          BX0    X0*X1
          BX6    X0+X3       MERGE CHARACTER 1 CREATION DATE
          SA4    A3+B1
          LX6    6
          MX0    30 
          SA6    A7+B1
          BX4    -X0*X4 
          LX1    6
          SA3    A4+B1
          BX7    X0*X1
          MX0    36 
          BX7    X4+X7       MERGE CHARACTERS 2-6 CREATION DATE 
          AX1    12 
          BX3    -X0*X3 
          SA7    A6+B1
          SA4    A3+B1
          MX0    18 
          BX6    X0*X2
          LX0    18 
          BX1    X0*X1
          MX0    6
          BX6    X6+X1
          LX6    42 
          BX6    X6+X3       MERGE EXPIRATION DATE
          LX0    -6 
          BX4    -X0*X4 
          LX2    12 
          SA6    A7+B1
          BX2    X0*X2
          BX7    X2+X4       MERGE FILE ACCESSIBILITY 
          SA7    A6+B1
          SB6    HEP-1
          SB7    HEPL+1 
          EQ     PRL4        RETURN 
 PRL      SPACE  4
**        PRL - PRINT LABEL.
* 
*         ENTRY  (A0) = POSITION OF LABEL TYPE IN TABLE.
*                (B4) = (A0) = POSITION OF LABEL TYPE IN TLAB.
*                (X5) = POSITION OF LABEL IN BUFFER.
* 
*         EXIT   NONE.
* 
*         USES   X - 0, 1, 2, 3, 6, 7.
*                B - 2, 4, 5, 6, 7. 
*                A - 1, 2, 3, 6, 7. 
* 
*         CALLS  MVE=, PHE, PVE, WHL, WTW=. 
  
  
 PRL      SUBR               ENTRY/EXIT 
          SA1    A0+TLAB     ENTER LABEL TYPE 
          SA2    LIN+1
          MX0    4*6
          BX2    -X0*X2 
          BX1    X0*X1
          BX6    X1+X2
          SA6    A2 
          MOVE   8,X5+B1,LAB
          SA2    LC 
          SA3    A2+B1
          IX3    X2-X3
          NG     X3,PRL1     IF NOT END OF PAGE 
          RJ     WHL         PROCESS END OF PAGE
 PRL1     SA2    LC 
          SX6    X2+2 
          SA6    A2 
          SB4    A0 
          SA3    TITL+5      BLANK WORD 
          NZ     B4,PRL2     IF STANDARD LABEL TYPE 
          SA3    NSL
 PRL2     BX6    X3 
          SA6    LIN
          WRITEW O,A6,LINL
          SB4    A0+
          SB5    10B
          GT     B4,B5,PRLX  IF NO MORE LABEL PROCESSING
          ZR     B4,PRLX     IF NO MORE LABEL PROCESSING
          SA1    A0+TLAB     CHECK SPECIAL PROCESSING REQUIRED
          LX1    59-35+18 
          SB2    X1          ADDRESS OF LABEL PRINT PROCESSOR 
          ZR     B2,PRLX     IF NO SPECIAL PROCESSING REQUIRED
          JP     B2          GO TO CORRECT PROCESSOR
  
 PRL4     BSS    0           RETURN HERE
          SA2    LC 
          SA1    A2+B1
          IX6    X2-X1
          NG     X6,PRL5     IF NOT END OF PAGE 
          SX6    B6 
          SX7    B7 
          SA6    PRLA        SAVE (B6)
          SA7    A6+B1       SAVE (B7)
          RJ     WHL         WRITE HEADER LINE
          SA1    PRLA        RESTORE (B6) AND (B7)
          SA2    A1+B1
          SB6    X1 
          SB7    X2 
 PRL5     SA3    LC          INCREMENT LINE COUNT 
          SX6    X3+2 
          SA6    A3 
          WRITEW O,B6,B7     WRITE PARAMETER LINE 
          EQ     PRLX        RETURN 
  
 PRLA     BSS    2           REGISTER SAVE AREA 
 PVE      SPACE  4
**        PVE - PROCESS VOL1 PARAMETERS.
* 
*         ENTRY  (LAB - LAB+7) = EIGHT WORD LABEL BLOCK.
* 
*         EXIT   (VEP - VEP+4) = OUTPUT LINE WITH PARAMETERS MERGED IN. 
* 
*         USES   X - 0, 1, 2, 3, 4, 6, 7. 
*                B - 2, 6, 7. 
*                A - 1, 2, 3, 4, 6, 7.
  
  
 PVE      BSS    0           ENTRY
          SA1    LAB         MOVE LABEL PARAMETERS TO OUTPUT LINE 
          MX0    -30
          SB2    B1+B1
          SA2    A1+B1
          SA3    VEP
          LX1    -6 
          SA4    A3+B1
          BX3    X0*X3
          BX6    -X0*X1 
          MX0    6
          BX6    X6+X3       MERGE CHARACTERS 1-5 VSN 
          BX4    -X0*X4 
          SA6    A3 
          BX1    X0*X1
          BX2    X0*X2
          LX0    -36
          BX4    X1+X4       MERGE CHARACTER 6 VSN
          LX2    -36
          BX4    -X0*X4 
          SA1    A2+B2
          BX7    X4+X2       MERGE ACCESSIBILITY
          SA3    A4+B1
          SA2    A1+B1
          SA7    A6+B1
          MX0    -18
          BX7    X2          CHARACTERS 4-13 OWNER IDENTIFIER 
          BX1    -X0*X1 
          SA4    A3+B2
          BX6    X0*X3
          MX0    6
          BX6    X6+X1       MERGE CHARACTERS 1-3 OWNER IDENTIFIER
          SA1    A2+B1
          SA6    A7+B1
          SA7    A6+B1
          BX4    -X0*X4 
          BX1    X0*X1
          LX0    18 
          SA2    A1+B2
          BX6    X4+X1       MERGE CHARACTER 14 OWNER IDENTIFIER
          LX2    12 
          BX6    -X0*X6 
          BX2    X0*X2
          BX6    X6+X2       MERGE LABEL STANDARD LEVEL 
          SA6    A7+B1
          SB6    VEP-1
          SB7    VEPL+1 
          EQ     PRL4        RETURN 
 PXL      SPACE  4
**        PXL - PRINT LABELS FROM XL BUFFER.
* 
*         ENTRY  (LR) = NUMBER OF LABELS READ SO FAR. 
*                (LP) = NUMBER OF LABELS PRINTED SO FAR.
* 
*         EXIT   (LR), (LP) UPDATED.
*                XL BUFFER CLEARED. 
* 
*         USES   X - 1, 4, 5, 6.
*                A - 0, 1, 4, 6.
* 
*         CALLS  FLT, PRL.
  
  
 PXL2     SX6    B0+         CLEAR XL BUFFER
          SA6    TBUF 
  
 PXL      SUBR               ENTRY/EXIT 
          SX5    TBUF-9      PRESET XL BUFFER ADDRESS 
 PXL1     SX5    X5+9        INCREMENT BUFFER ADDRESS 
          SA1    LR 
          SA4    X5          READ BUFFER ENTRY
          SX6    X1+B1
          ZR     X4,PXL2     IF END OF LABELS IN BUFFER 
          SA6    LR          INCREMENT LABELS READ
          RJ     FLT         FIND LABEL TYPE
          SA0    B4          SET POSITION OF LABEL IN TABLE 
          SA1    B4+TLAB
          LX1    59-0 
          PL     X1,PXL1     IF NOT PERMITTED TO PRINT THIS TYPE
          SA1    LP          INCREMENT LABELS PRINTED 
          SX6    X1+B1
          SA6    A1 
          RJ     PRL         PRINT LABEL
          EQ     PXL1        LOOP FOR NEXT LABEL
 SHD      SPACE  4
**        SHD - SET UP *HDR1* LABEL IN EXTENDED LABEL BUFFER. 
* 
*         ENTRY  (SI) = SET IDENTIFIER. 
*                (QN) = SEQUENCE NUMBER FROM COMMAND. 
*                (SN) = SEQUENCE NUMBER TO BE USED IN *HDR1* LABEL. 
* 
*         EXIT   *HDR1* LABEL TYPE, SET ID, AND SEQUENCE NUMBER SET 
*                IN EXTENDED LABEL BUFFER.
* 
*         USES   X - 1, 2, 5, 6, 7. 
*                B - NONE.
*                A - 1, 5, 6, 7.
  
  
 SHD      SUBR               ENTRY/EXIT 
          SX6    80          SET LENGTH OF LABEL IN CHARACTERS
          SA6    TBUF 
          SX1    3RHDR       SET *HDR1* 
          SX6    1R1
          LX1    6
          BX6    X1+X6       *HDR1* 
          LX6    36 
          SA6    TBUF+1+0 
          MX6    0           CLEAR OUT FI FIELD IN XL BUFFER
          SA6    TBUF+1+1 
          SA5    SI          SET SETID IN XL BUFFER 
          BX6    X5 
          SA6    TBUF+1+2 
          SA1    SN          SEQUENCE NUMBER
          RJ     COV         CONVERT TO DISPLAY CODE
          MX2    -24
          BX6    -X2*X6 
          LX6    30 
          SA6    TBUF+1+3    SET SEQUENCE NUMBER IN XL BUFFER 
          SX2    4
          MX6    0
 SHD1     SA6    TBUF+1+X2   ZERO REMAINING PORTION OF *HDR1* LABEL 
          SX2    X2+1 
          SX3    X2-9 
          NZ     X3,SHD1     IF MORE TO CLEAR 
          EQ     SHDX 
          SPACE  4
**        WHL - WRITE HEADER LINE.
* 
*         ENTRY  (PN) = PAGE NUMBER.
* 
*         EXIT   (PN) = (PN) + 1. 
*                (LC) = 3.
* 
*         USES   X - 0, 1, 6. 
*                B - 3. 
*                A - 1, 6.
* 
*         CALLS  CDD. 
* 
*         MACROS WRITEW.
  
  
 WHL      SUBR               ENTRY/EXIT 
          SA1    PN          INCREMENT PAGE NUMBER
          SX6    X1+B1
          BX1    X6 
          SA6    PN 
          RJ     CDD         CONVERT PAGE NUMBER TO DISPLAY CODE
          SB3    B2-47
          SA1    PAGE 
          LX6    12 
          MX0    1
          SB3    -B3
          AX0    X0,B3
          BX6    -X0*X6 
          BX1    X0*X1
          BX6    X1+X6
          SA6    A1 
          WRITEW O,TITL,TITLL 
          SX6    3           SET LINE COUNT 
          SA6    LC 
          EQ     WHLX        RETURN 
          TITLE  CONSTANTS AND VARIABLES. 
**        CONSTANTS AND VARIABLES.
  
  
**        TLAB FIELD DEFENITION.
*T,TLAB   VFD    24/LABEL IDENTIFIER
*T,       VFD    18/ADDRESS OF LABEL PRINT PROCESSOR
*T,       VFD    17/NOT USED
*T,       VFD    1/LABEL TYPE MAY BE PRINTED
  
  
 TLAB     BSS    0
          LOC    0
          VFD    24/4LDARD,18/0,18/0    UNIDENTIFIED LABEL
 VOL1     VFD    24/4LVOL1,18/PVE,18/0  VOL1
 HDR1     VFD    24/4LHDR1,18/PHE,18/0  HDR1
 EOF1     VFD    24/4LEOF1,18/PHE,18/0  EOF1
 EOV1     VFD    24/4LEOV1,18/PHE,18/0  EOV1
 TLABA    EQU    *-VOL1      NUMBER OF REQUIRED LABELS
 VOL      VFD    24/4LVOLN,18/0,18/0    VOL2-9
 HDR      VFD    24/4LHDRN,18/0,18/0    HDR2-9
 EOF      VFD    24/4LEOFN,18/0,18/0    EOF2-9
 EOV      VFD    24/4LEOVN,18/0,18/0    EOV2-9
 UVL      VFD    24/4LUVLX,18/0,18/0    UVLX
 UHL      VFD    24/4LUHLX,18/0,18/0    UHLX
 UTL      VFD    24/4LUTLX,18/0,18/0    UTLX
          LOC    *O 
 TLABL    EQU    *-TLAB 
  
 QN       CON    0           FILE SEQUENCE NUMBER 
 SN       CON    1           SEQUENCE NUMBER TO USE IN *HDR1* LABEL 
 CR       CON    0           CLOSE REEL FLAG
 EF       CON    0           SAVE ERROR FLAG HERE 
 TF       CON    0           0=DO NOT READ TRAILER LABELS 
*                            1=READ TRAILER LABELS
 SI       CON    0           SET IDENTIFIER 
 PN       BSSZ   1           PAGE NUMBER
 LC       BSSZ   2           LINE COUNT 
 LL       EQU    LC+1        LINE LIMIT 
 LR       BSSZ   1           LABELS READ
 LP       BSSZ   1           LABELS PRINTED 
  
 TLOF     VFD    12/0,18/TLOF+1,30/1
          CON    3           SETLOF FLUSH TABLE 
          VFD    42/6LOUTPUT,18/O 
          CON    0           END OF SETLOF TABLE
  
 NSL      DATA   10H  NON-STAN
 LIN      DATA   10H           LABEL OUTPUT LINE
          DATA   6A LABEL 
          DATA   10H READ:  
 LAB      BSS    8
          DATA   8L 
          DATA   8L 
 LINL     EQU    *-LIN
  
          DATA   10H           HDR1,EOF1,EOV1 PARAMETER OUTPUT LINE 
 HEP      DATA   10H FI=......
          DATA   10H..........
          DATA   10H., SI=....
          DATA   10H.., SN=...
          DATA   10H., QN=....
          DATA   10H, G=...., 
          DATA   10HE=.., CR=.
          DATA   10H....., RT=
          DATA   10H......, FA
          DATA   3L=..
          DATA   2L 
 HEPL     EQU    *-HEP
  
          DATA   10H           VOL1 PARAMETER OUTPUT LINE 
 VEP      DATA   10H VSN=.....
          DATA   10H., VA=., O
          DATA   10HWNERID=...
          DATA   10H..........
          DATA   10H., LSL=.. 
          DATA   8L 
          DATA   2L 
 VEPL     EQU    *-VEP
  
 TITL     DATA   10H
          DATA   40H LISTLB - LIST MAGNETIC TAPE LABELS.
          DATA   40H
 DATE     DATA   10H
 TIME     DATA   10H
          DATA   4APAGE 
 PAGE     DATA   8L 
          DATA   2L 
          DATA   2L 
 TITLL    EQU    *-TITL 
  
 LRP      DATA   10H           LABELS READ AND PRINTED
 LBR      DATA   10H
          DATA   10H LABELS RE
          DATA   10HAD. 
 LBP      DATA   10H
          DATA   10H LABELS PR
          DATA   6LINTED. 
 LRPL     EQU    *-LRP
 COMC     SPACE  4
**        CALL COMMON DECKS.
  
  
*CALL     COMCCDD 
*CALL     COMCCIO 
*CALL     COMCLFM 
*CALL     COMCMVE 
*CALL     COMCSYS 
*CALL     COMCWTW 
          EJECT 
          USE    // 
          SEG 
 BUFS     BSS    0
  
 TBUF     EQU    *
  
 OBUF     EQU    TBUF+TBUFL 
  
 RFL=     EQU    OBUF+OBUFL+4 
 ARG=     EQU    *
          TITLE  PRESET.
 PRS      SPACE  4
          ORG    BUFS 
  
  
**        THE FOLLOWING CODE IS OVERLAYED BY TLAB THE TABLE OF LABELS 
*         READ FROM THE TAPE. 
  
**        PRS - PRESET. 
* 
*         USES   X - 0, 1, 3, 4, 5, 6.
*                A - 1, 4, 5, 6.
*                B - 2, 3, 4. 
* 
*         CALLS  IPP, KWD, PER, POP, USB, WHL.
* 
*         MACROS CLOCK, DATE, REWIND. 
  
 PRS      SUBR               ENTRY/EXIT 
          SB1    1
          SB2    CCDR        UNPACK COMMAND 
          RJ     USB
          SA5    PRSA 
 PRS0     RJ     POP         PICK OUT PARAMETER 
          NG     B5,PRS6     IF COMMAND ERROR 
          BX3    X6-X5
          NZ     X3,PRS0     IF NOT PROGRAM NAME
          RJ     POP
          NG     B5,PRS6     IF COMMAND ERROR 
          SA4    A1 
          SX5    X6 
          SX3    X4-1R= 
          ZR     X3,PRS2     IF NO TAPE FILE SPECIFIED
          NZ     X5,PRS8     IF INCORRECT PARAMETER 
          SA1    T           PLACE USER SPECIFIED FILE NAME IN FET
          SX1    X1 
          BX6    X1+X6
          SA6    T
  
*         RETURN FROM ARGUMENT PROCESSORS.
  
 PRS1     RJ     POP         GET NEXT PARAMETER 
          SA4    A1+
          NG     B5,PRS6     IF COMMAND ERROR 
 PRS2     SX3    X4-1R= 
          NZ     X3,PRS6     IF NOT *=* 
          ZR     X2,PRS8     IF INCORRECT TERMINATOR
          RJ     KWD
          ZR     B3,PRS6     IF INCORRECT KEYWORD 
          RJ     POP
          NG     B5,PRS8     IF INCORRECT PARAMETER 
          JP     B3          JUMP TO ELEMENT PROCESSOR
  
 PRS3     SA1    SI          CHECK FOR *SETID*
          NZ     X1,PRS4     IF *SET ID* SPECIFIED
          SA1    QN          SEQUENCE NUMBER
          ZR     X1,PRS4     IF FILE SEQUENCE NUMBER SPECIFIED
          SX1    QNS         INCORRECT COMBINATION OF PARAMETERS
          JP     PER
  
 PRS4     REWIND T,R
          CLOCK  TIME 
          DATE   DATE 
          RJ     IPP         INITIALIZE PAGE PARAMETERS 
          RJ     WHL         WRITE HEADER LINE
          SX1    TBUFL       SET EXTENDED LABEL BUFFER LENGTH AND 
*                            ADDRESS
          SX6    TBUF 
          LX1    18 
          BX6    X6+X1
          SA6    T+9
          MX0    1           SET FLUSH BIT IN LIST OUTPUT FET 
          LX0    36-59
          SA1    O+1
          BX6    X0+X1
          SA6    A1 
          MX0    42          MOVE LIST OUTPUT LFN TO SETLOF TABLE 
          SA1    A1-B1
          BX1    X0*X1
          SX6    O
          BX6    X1+X6
          SA6    TLOF+2 
          SETLOF TLOF        SET FLUSH BIT TABLE POINTER
          SA1    LO 
          NZ     X1,PRSX     IF LO PROCESSED
          SB4    TLABL
          SX5    B1 
          SB3    B0 
 PRS5     SA1    TLAB+B3     SET PERMISION TO PRINT ALL LABELS
          SB3    B3+B1
          BX6    X1+X5
          SA6    A1+
          LT     B3,B4,PRS5  IF NOT END OF LABEL TABLE
          SX6    B1          SET READ TRAILER LABELS FLAG 
          SA6    TF 
          JP     PRSX        RETURN 
  
 PRS6     ZR     B6,PRS3     IF END OF PARAMETERS 
          SX1    CCE         COMMAND ERROR
          JP     PER
  
 PRS7     SX1    FNE         FILE NAME ERROR
          JP     PER
  
 PRS8     SX1    IPE         INCORRECT PARAMETER ERROR
          JP     PER
  
 PRSA     CON    0LLISTLB 
 IPP      SPACE  4,15 
**        IPP - INITIALIZE PAGE PARAMETERS. 
* 
*         EXIT   (LL)  =  LINE LIMIT. 
* 
*         USES   X - 1, 2, 6. 
*                A - 1, 6.
* 
*         CALLS  STF. 
* 
*         MACROS GETPP, WRITEC. 
  
  
 IPP      SUBR               ENTRY/EXIT 
          GETPP  IPPA,LL,IPPA  GET PAGE SIZE PARAMETERS 
          SX2    O
          RJ     STF
          ZR     X6,IPPX     IF TERMINAL PRINT FILE 
          WRITEC X2,IPPA
          SA1    =10H1
          BX6    X1          FORCE PAGE EJECT 
          SA6    TITL 
          EQ     IPPX        RETURN 
  
  
 IPPA     BSS    2           PAGE SIZE PARAMETERS 
 KWD      SPACE  4
**        KWD - KEYWORD VERIFIER. 
* 
*         ENTRY  (X6) = KEYWORD.
* 
*         EXIT   (B3) = ADDRESS OF KEYWORD PROCESSOR. 
*                (B3) = 0, IF KEYWORD NOT FOUND.
* 
*         USES   A - 1, 7.
*                X - 0, 1, 7. 
  
  
 KWD      SUBR               ENTRY/EXIT 
          BX1    X6 
          AX1    59 
          SA1    X1+TKWD-1
 KWD1     SA1    A1+B1
          BX0    X6-X1
          SB3    X1          ADDRESS OF KEYWORD PROCESSOR 
          AX0    48 
          ZR     X1,KWDX     IF END OF TABLE
          NZ     X0,KWD1     IF NO MATCH
          MX7    -1          ENABLE/DISABLE LITERAL PROCESSING
          LX1    0-18 
          BX7    -X7*X1 
          SA7    LIT
          JP     KWDX        RETURN 
  
  
**        TKWD - TABLE OF KEYWORDS. 
* 
*T        12/ARGUMENT,29/0,1/LA,18/ARGUMENT PROCESSOR 
*         LA = 0 IF LITERALS ARE ALLOWED
*         LA = 1 IF LITERALS ARE NOT ALLOWED
  
  
 TKWD     BSS    0
          VFD    12/0LL,29/0,1/0,18/PLP 
          VFD    12/0LLO,29/0,1/0,18/PLO
          VFD    12/0LSI,29/0,1/1,18/PSI
          VFD    12/0LM,29/0,1/1,18/PSI 
          VFD    12/0LQN,29/0,1/0,18/PQN
          VFD    12/0LP,29/0,1/0,18/PQN 
          CON    0           END OF TABLE 
 PER      SPACE  4
**        PER - PROCESS ERRORS. 
* 
*         ENTRY  (X1) = ADDRESS OF ERROR MESSAGE. 
  
  
 PER      BSS    0
          MESSAGE X1
          ABORT 
  
  
 CCE      DATA   C* COMMAND ERROR.* 
 FNE      DATA   C* FILE NAME ERROR.* 
 IPE      DATA   C* INCORRECT PARAMETER.* 
 QNS      DATA   C* INCORRECT COMBINATION OF QN/SI.*
          TITLE  ARGUMENT PROCESSORS. 
**        PLO - PROCESS LO PARAMETER. 
* 
*         ENTRY  (X6) = LIST OPTIONS. 
  
  
 PLO      BSS    0           ENTRY
          MX0    -6 
          BX1    -X0*X6 
          NZ     X1,PRS8     IF TOO MANY LIST OPTIONS 
 PLO1     LX6    6
          SX5    1RA
          BX1    -X0*X6 
          ZR     X1,PLO4     IF END OF LIST OPTIONS - RETURN
          BX1    X1-X5
          ZR     X1,PRS1     IF *A* LIST OPTION 
          SX5    B1          PRINT LABEL BIT
          SA1    TPLO-1 
 PLO2     SA1    A1+B1
          BX3    X6-X1
          ZR     X1,PRS8     IF LIST OPTION NOT IN TABLE
          BX3    -X0*X3 
          NZ     X3,PLO2     IF NO MATCH
          MX3    -4 
          SA2    TF 
          NZ     X2,PLO3     IF READ TRAILER LABEL FLAG ALREADY SET 
          BX2    -X0*X1      CHECK OPTIONS
          SX7    X2-1RH 
          ZR     X7,PLO3     IF *H* OPTION SELECTED 
          SX7    X2-1RV 
          ZR     X7,PLO3     IF *V* OPTION SELECTED 
          SX7    B1          SET READ TRAILER LABELS FLAG 
          SA7    A2 
 PLO3     LX1    4
          BX4    -X3*X1 
          ZR     X4,PLO1     IF DONE PROCESSING THIS LIST OPTION
          SA4    X4+TLAB
          BX7    X4+X5
          SA7    A4 
          EQ     PLO3 
  
 PLO4     SA6    LO          SET LIST OPTIONS PROCESSED 
          EQ     PRS1        GET NEXT PARAMETER 
  
 LO       CON    0
  
 TPLO     BSS    0
          VFD    4/VOL1,4/HDR1,4/EOF1,4/EOV1,4/VOL,4/HDR,4/EOF,4/EOV
          VFD    4/UVL/,4/UHL,4/UTL,10/0,6/1RA  A - OPTION
          VFD    4/VOL1,4/HDR1,4/EOF1,4/EOV1,38/0,6/1RR  R - OPTION 
          VFD    4/VOL,4/HDR,4/EOF,4/EOV,4/UVL,4/UHL,4/UTL,26/0 
          VFD    6/1RO       O - OPTION 
          VFD    4/VOL1,4/VOL,46/0,6/1RV  V - OPTION
          VFD    4/HDR1,4/HDR,46/0,6/1RH  H - OPTION
          VFD    4/EOF1,4/EOF,46/0,6/1RF  F - OPTION
          VFD    4/EOV1,4/EOV,46/0,6/1RE  E - OPTION
          VFD    4/UVL,4/UHL,4/UTL,42/0,6/1RU  U - OPTION 
          CON    0           END OF TABLE 
 PLP      SPACE  4
**        PLP - PROCESS L PARAMETER.
* 
*         ENTRY  (X6) = OUTPUT FILE NAME. 
  
  
 PLP      BSS    0           ENTRY
          MX0    42 
          BX0    -X0*X6 
          SA1    O
          NZ     X0,PRS7     IF FILE NAME TOO LONG
          SX1    X1 
          BX6    X6+X1
          SA6    A1 
          JP     PRS1        GET NEXT PARAMETER 
 PSI      SPACE  4
**        PSI - PROCESS SI PARAMETER. 
* 
*         ENTRY  (X6) = SET IDENTIFIER. 
  
  
 PSI      BSS    0           ENTRY
          MX0    6*6
          BX0    -X0*X6 
          NZ     X0,PRS8     IF SET IDENTIFIER TOO LONG 
          BX1    X6 
          RJ     SFN         SPACE FILL NAME
          MX0    6*6
          BX6    X0*X6
          LX6    54 
          SA6    SI 
          JP     PRS1        GET NEXT PARAMETER 
 PQN      SPACE  4
**        PQN - PROCESS QN PARAMETER. 
* 
*         ENTRY  (X6) = FILE SEQUENCE NUMBER. 
  
  
 PQN      BSS    0           ENTRY
          MX0    4*6
          BX5    X6 
          BX0    -X0*X6 
          NZ     X0,PRS8     IF FILE SEQUENCE NUMBER TOO LONG 
          SB7    B1 
          RJ     DXB         CONVERT TO BINARY
          SA6    SN 
          SA6    QN 
          JP     PRS1        GET NEXT PARAMETER 
          SPACE  4
**        COMMON DECKS. 
  
*CALL     COMCCPM 
*CALL     COMCDXB 
 LIT      CON    0           DEFINE LITERAL PROCESSING
*CALL     COMCPOP 
*CALL     COMCSFN 
*CALL     COMCSTF 
*CALL     COMCUSB 
*CALL     COMCWTC 
          SPACE  4
          END 
