SCTD
          IDENT  SCTD,FWA 
          ABS 
          SST 
          ENTRY  SCTD 
          ENTRY  RFL= 
          ENTRY  SSJ= 
          SYSCOM B1 
          TITLE  SCTD - SERVICE CLASS CONTROL TABLE DISPLAY.
*COMMENT  SCTD - SERVICE CLASS CONTROL TABLE DISPLAY. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4,10 
***       SCTD - SERVICE CLASS CONTROL TABLE DISPLAY. 
* 
*         W. T. COLEMAN      82/09/16.
          SPACE  4,10 
***       *SCTD* IS A CPU UTILITY USED BY THE OPERATOR TO DISPLAY 
*         THE SERVICE CLASS CONTROL TABLE AND THE PRIORITY ORDERED
*         SERVICE CLASSES ON THE *L* DISPLAY OR TO FORMAT IT FOR
*         A PRINTER.
          SPACE  4,20 
***       CONTROL STATEMENT CALL. 
* 
* 
*         SCTD(LFN,OP)       ORDER DEPENDENT PARAMETERS.
*          OR 
*         SCTD(L=LFN,LO=OP)  ORDER INDEPENDENT (KEYWORD = PARAMETER). 
* 
*          WHERE
* 
*         OP = *L*           FORMAT DATA FOR A LINE PRINTER.
* 
*         OP = *D*           FORMAT DATA FOR *L* DISPLAY (DEFAULT). 
* 
*         LFN                LIST OUTPUT FILE NAME (DEFAULT = OUTPUT).
*                            THIS PARAMETER VALID ONLY WITH (LO=L). 
* 
*         NOTES  SPECIAL PRIVILEGES REQUIRED. 
*                1. USER MUST BE *SYOT* TO USE *L* DISPLAY (LO=D).
*                2. USER MUST BE *SYOT* OR HAVE SYSTEM ORIGIN 
*                   PRIVILEGES TO GENERATE A LISTING (LO=L).
          SPACE  4,20 
***       DAYFILE MESSAGES. 
* 
*         THESE MESSAGES ARE ISSUED TO THE JOB AND SYSTEM DAYFILES. 
* 
*         *ARGUMENT ERROR.* 
*                AN INCORRECT PARAMETER WAS ENTERED. (FATAL ERROR)
* 
*         *INCORRECT USER ACCESS.*
*                CALLING JOB WAS NOT SYSTEM ORIGIN. (FATAL ERROR) 
* 
*         *SCTD UTILITY COMPLETE.*
*                INDICATES NORMAL COMPLETION OF PROGRAM.
* 
*         *CANNOT ACCESS L-DISPLAY.*
*                *DSD* DETECTED AN ERROR CONDITION WHEN INPUT WAS 
*                ENTERED VIA THE *L* DISPLAY. 
          SPACE  4,15 
***       OPERATOR MESSAGES.
* 
*         *END PROCESSED.*
*                AN INFORMATIVE MESSAGE INDICATING THAT AN END COMMAND
*                WAS ENTERED VIA THE *L* DISPLAY.  THE UTILITY HAS
*                BEEN TERMINATED. 
* 
*         *UNRECOGNIZABLE DIRECTIVE.* 
*                AN ERROR MESSAGE INDICATING THAT THE DIRECTIVE 
*                ENTERED VIA THE *L* DISPLAY WAS NOT ONE OF THE VALID 
*                DIRECTIVES.
          SPACE  4,10 
***       *L* DISPLAY COMMANDS. 
* 
*         THE FOLLOWING ARE LEGAL COMMANDS TO BE ENTERED BY THE 
*         OPERATOR THROUGH THE *L* DISPLAY. 
* 
*         L.END.             TERMINATE THE UTILITY. 
* 
*         L.+.               ADVANCE TO THE NEXT SCREEN.
* 
*         L.-.               REVERSE TO THE PREVIOUS SCREEN.
          SPACE  4,15 
***       DEFINITION COMMON DECKS.
* 
*CALL     COMCCMD 
*CALL     COMCDCM 
*CALL     COMCDCP 
*CALL     COMCMAC 
*CALL     COMSEVT 
*CALL     COMSSFM 
*CALL     COMSSSJ 
 SCLASS   SPACE  4,15 
**        SCLASS - DEFINE SERVICE CLASS TABLE.
* 
*         SCLASS NM,MN,DF,ST,TX 
* 
*         ENTRY  *NM* = SERVICE CLASS NAME. 
*                *MN* = TWO CHARACTER MNEMONIC. 
*                *DF* = DAYFILE MESSAGE CHARACTER.
*                *ST* = SHORT TEXT FOR *QFTLIST*. 
*                *TX* = TEXT OF SERVICE CLASS NAME FOR BANNER PAGE. 
* 
*         NOTE - THE CALL TO *COMSSCD* MUST FOLLOW THE DEFINITION OF
*                THIS MACRO.
  
  
          PURGMAC SCLASS
  
 SCLASS   MACRO  NM,MN,DF,ST,TX 
 .SCL     RMT 
 .A       IFLT   NM,12D 
          VFD    12/0L_MN,48/MN_MK  TX
 .A       ELSE
          VFD    12/0L_MN,36/MN_MK,12/0  TX 
 .A       ENDIF 
 .SCL     RMT 
 SCLASS   ENDM
  
  
 SCL$     EQU    0           ONLY PROCESS CLASSES WITH JCB-S
*CALL     COMSSCD 
          TITLE  ASSEMBLY CONSTANTS.
****      ASSEMBLY CONSTANTS. 
  
 CNCI     EQU    4           NO COMMAND INPUT (*CPM* RETURN STATUS) 
 LBUFL    EQU    LDSY        *L* DISPLAY BUFFER LENGTH
 LCOMU    EQU    LCOM/2+1    INPUT BUFFER PACKED
 NPXW     EQU    5           PRIORITY ORDERED SERVICE CLASSES PER WORD
 NSPL     EQU    10          NUMBER OF SERVICE CLASSES PER LINE 
 NUMPX    EQU    10B         NUMBER OF PRIORITY ORDERED SERVICE CLASSES 
 SCTL     EQU    SCTE        LENGTH OF OF *SCT* 
 XCDT     EQU    4           X - COORDINATE FOR *L* DISPLAY 
 YCDT     EQU    2           Y - COORDINATE FOR *L* DISPLAY 
  
****
          TITLE  TABLES AND BUFFER DEFINITIONS. 
          ORG    111B 
 FWA      BSS    0
          SPACE  4,10 
*         DAYFILE MESSAGES. 
  
 DAFC     DATA   C* SCTD UTILITY COMPLETE.* 
 ERAR     DATA   C* ARGUMENT ERROR.*
 ERCA     DATA   C* CANNOT ACCESS L-DISPLAY.* 
 ERIU     DATA   C* INCORRECT USER ACCESS.* 
          SPACE  4,10 
*         FLAG DEFINITIONS. 
  
 LFLG     CON    0           *L* DISPLAY FLAG 
 PFLG     CON    0           PRINTER OUTPUT FLAG
 SYOF     CON    0           SYSTEM ORIGIN FLAG 
          SPACE  4,5
*         GLOBAL STORAGE DEFINITIONS. 
  
 CPAG     DATA   1           INDEX OF SCREEN TO DISPLAY 
          SPACE  4,10 
**        *SETJOB* PARAMETER BLOCK. 
  
 SETB     VFD    60/0 
          VFD    48/0,12/2LDF 
          SPACE  4,10 
**        *SFM* PARAMETER BLOCK.
  
  
 SFMB     VFD    12/RSCF,12/0,12/SCTL,6/0,18/WBUF 
          CON    0           END OF *SFM* PARAMETER BLOCK 
 ROLB     SPACE  4,5
**        ROLB - ROLLOUT PARAMETER BLOCK. 
  
 ROLB     VFD    30/0,18/LINE,12/60 
 TMLD     SPACE  4,10 
**        TMLD - TABLE OF MESSAGES TO *L* DISPLAY.
  
 TMLD     BSS    0
          LOC    0
          DATA   C*                           * 
 ENDM     DATA   C*END PROCESSED.             * 
 EUND     DATA   C*UNRECOGNIZABLE DIRECTIVE.  * 
          LOC    *O 
 EMOR     CON    0           ERROR MESSAGE ORDINAL
 LDPT     SPACE  4,5
**        LDPT - *L* DISPLAY PAGE TABLE.
  
  
 LDPT     PAGT   SDTA,SDTA+SDMP,SDTA+SDIP  LEFT SCREEN PAGE 1 
          PAGT   SDTB,SDTB+SDMP,SDTB+SDIP  LEFT SCREEN PAGE 2 
          PAGT   *
          SPACE  4,5
*         SSJ= PARAMETER BLOCK. 
  
  
 SSJ=     BSS    0           SSJ= ENTRY POINT 
          BSSZ   SSJL        SSJ= PARAMETER BLOCK 
 FETS     SPACE  4,10 
*         FET DEFINITIONS.
  
 O        BSS    0           PRINTER OUTPUT FILE BUFFER 
 OUTPUT   FILEB  OBUF,SDTAE-SDTH,(FET=6)
 TSCT     SPACE  4,10 
**        TSCT - SERVICE CLASS TABLE. 
* 
*T        12/CLASS, 48/VALUE
* 
*         CLASS - TWO CHARACTER SERVICE CLASS MNEMONIC. 
*         VALUE - CORRESPONDING SERVICE CLASS MASK VALUE. 
  
  
 TSCT     BSS    0
          LIST   G
 .SCL     HERE
          LIST   *
 TSCTL    EQU    *-TSCT 
          ERRNZ  TSCTL-MXJC+1  ENSURE ALL SERVICE CLASSES PRESENT 
          CON    0           END OF TABLE 
 SCTD     TITLE  MAIN PROGRAM.
**        SCTD - MAIN PROGRAM.
* 
*         EXIT   *SCTD* PROGRAM COMPLETED.
* 
*         CALLS  PRS, LOP.
* 
*         MACROS ENDRUN, MESSAGE. 
  
  
 SCTD     BSS    0           ENTRY
          RJ     PRS         PRESET ROUTINE 
          RJ     LOP         PROCESS LIST OPTIONS 
          MESSAGE  DAFC,0,R  * SCTD UTILITY COMPLETE.*
          ENDRUN
 LOP      TITLE  LIST OPTION PROCESSOR. 
 LOP      SPACE  4,25 
**        LOP - LIST OPTION PROCESSOR.
* 
*         *LOP* FORMATS THE *SCT* DATA TO A LOCAL FILE FOR PRINTING,
*         IF THE PRINT OPTION IS SPECIFIED.  IF THE *L* DISPLAY IS
*         SELECTED *LOP* WILL DISPLAY THE APPROPRIATE DATA ON THE 
*         *L* DISPLAY UNTIL AN *L.END.* COMMAND IS ENTERED. 
* 
*         ENTRY  USER HAS BEEN VALIDATED (EITHER SYSTEM ORIGIN
*                OR SYSTEM ORIGIN PRIVILEGES).
* 
*                (SFMB) = *SFM* PARAMETER BLOCK SET UP
*                         FOR *RSCF* SUBFUNCTION. 
*                (PFLG) = 1, IF PRINT FILE REQUESTED. 
*                (LFLG) = 1, IF *L* DISPLAY REQUESTED.
* 
*         EXIT   PRINT FILE, IF REQUESTED, LOCAL TO USER JOB. 
* 
*         USES   X - 1, 2, 5, 6.
*                A - 1, 2, 5. 
* 
*         CALLS  CMP, EFP, FDB, GSD, ILD, OLD.
* 
*         MACROS SETFS, SETJOB, WRITER. 
  
  
 LOP      SUBR               ENTRY/EXIT 
          RJ     GSD         GET *SCT* DATA 
          SA2    PFLG 
          ZR     X2,LOP1     IF NOT TO BE PRINTED 
          SX2    O           SET OUTPUT FET ADDRESS 
          SX1    SDTH        FWA PAGE 1 WITH PRINTER HEADER 
          SX6    SDTAE       LWA PAGE 1 
          RJ     FDB         BUILD PRINT FILE 
          WRITER O           FLUSH OUTPUT BUFFER
          SX1    SDTB        FWA PAGE 2 
          SX6    SDTBE       LWA PAGE 2 
          RJ     FDB         BUILD PRINT FILE 
          WRITER O           FLUSH OUTPUT BUFFER
          SETFS  O,0         SAVE OUTPUT AS LOCAL FILE
          SETJOB SETB        CHANGE JOB DISPOSITION TO *DF* 
          SX2    B0+         SET FORMATTING FOR *L* DISPLAY 
 LOP1     SA1    LFLG 
          ZR     X1,LOPX     IF *L* DISPLAY NOT SELECTED
 LOP2     RJ     OLD         OUTPUT *L* DISPLAY DATA
          RJ     ILD         INPUT *L* DISPLAY DATA 
          RJ     CMP         COMMAND PROCESSOR
          SA1    EMOR        CHECK FOR ERROR MESSAGE
          NZ     X1,LOP2     IF ERROR IN COMMAND
          RJ     EFP         EXECUTE FUNCTION PROCESSOR 
          EQ     LOP2        LOOP 
          TITLE  FUNCTION PROCESSORS. 
 END      SPACE  4,15 
**        END - *END* FUNCTION PROCESSOR. 
* 
*         *END* TERMINATES THE UTILITY. 
* 
*         USES   X - 6. 
*                A - 6. 
* 
*         CALLS  OLD. 
* 
*         MACROS DSDINP, ENDRUN, MESSAGE. 
  
  
 END      SUBR               ENTRY/EXIT 
          SX6    ENDM        *END PROCESSED.* 
          SA6    EMOR        SET MESSAGE ORDINAL
          RJ     OLD         OUTPUT *L* DISPLAY 
          DSDINP IPW,C       CLEAR *L* DISPLAY INPUT BUFFER 
          MESSAGE  DAFC,0,R  * SCTD UTILITY COMPLETE.*
          ENDRUN
          TITLE  SUBROUTINES. 
 CMP      SPACE  4,20 
**        CMP - COMMAND FUNCTION PROCESSOR. 
* 
*         *CMP* VALIDATES THE COMMAND ENTERED VIA THE *L* DISPLAY AND 
*         SETS THE PROCESSOR ADDRESS FOR THE COMMAND ENTERED.  PAGING 
*         IS PROCESSED DIRECTLY BY *CMP*. 
* 
*         ENTRY  (IBUF) = *L* DISPLAY INPUT DIRECTIVE.
* 
*         EXIT   (B5) = ADDRESS OF FUNCTION PROCESSOR, IF NO ERROR. 
*                (B5) = 0, IF PAGING COMMAND. 
*                (EMOR) = 0, IF NO ERROR IN DIRECTIVE INPUT.
*                (EMOR) = ERROR MESSAGE ADDRESS, IF ERROR.
*                (X3) = COMMAND, LEFT JUSTIFIED, ZERO FILLED. 
* 
*         USES   X - 0, 1, 2, 3, 4, 6, 7. 
*                A - 1, 3, 6, 7.
*                B - 2, 3, 5, 6.
* 
*         CALLS  PGD, POP, USB. 
  
  
 CMP2     SB5    X1+         SET PROCESSOR ADDRESS
 CMP3     SX6    B0+         SET NO ERROR 
          SA6    EMOR        SET MESSAGE ORDINAL
  
 CMP      SUBR               ENTRY/EXIT 
  
*         CHECK FOR PAGING COMMAND. 
  
          SX1    CMPA        *L* DISPLAY BUFFER FWA 
          SX2    LDPT        PAGE TABLE FWA 
          SA3    IBUF        GET PAGING CHARACTER 
          MX0    6           PAGING CHARACTER MASK
          BX3    X0*X3
          SX4    B1+         INDICATE *L* DISPLAY 
          RJ     PGD         PAGE *L* DISPLAY 
          SB5    B0          INDICATE PAGING COMMAND
          MX0    -18         SCREEN INDEX MASK
          SA1    LDPT        PAGE TABLE FWA 
          LX1    30 
          BX6    -X0*X1      GET LEFT SCREEN INDEX
          SA6    CPAG        SAVE LEFT SCREEN INDEX 
          ZR     X4,CMP3     IF LEGAL PAGING
  
*         CHECK FOR VALID NON PAGING COMMAND. 
  
          SB2    IBUF        FWA OF PACKED COMMAND BUFFER 
          SB3    B0+         INDICATE DISPLAY CODE
          RJ     USB         UNPACK STRING BUFFER 
          SB6    USBB        FWA UNPACKED STRING BUFFER 
          RJ     POP         PICK OUT PARAMETER 
          SX7    EUND        *UNRECOGNIZABLE DIRECTIVE.*
          SA7    EMOR        SET MESSAGE ORDINAL
          SA1    TCOM        TABLE OF COMMANDS
          MX0    42          COMMAND MASK 
 CMP1     ZR     X1,CMPX     IF END OF TABLE (INCORRECT COMMAND)
          BX3    X0*X1       GET COMMAND
          BX2    X3-X6       CHECK IF CURRENT ENTRY IN TABLE
          ZR     X2,CMP2     IF A MATCH 
          SA1    A1+1        NEXT ENTRY IN TABLE
          EQ     CMP1        CHECK NEXT COMMAND IN TABLE
  
  
 CMPA     BSS    1           *L* DISPLAY BUFFER FWA REQUIRED BY *PGD* 
 PGD      HERE               REMOTE BLOCK FROM *COMCDCP*
 TCOM     SPACE  4,10 
**        TCOM - TABLE OF COMMANDS. 
* 
*T        36/COMMAND,6/0,18/ADDR
* 
*         COMMAND = DISPLAY CODE COMMAND VALUE. 
* 
*         ADDR = PROCESSING ROUTINE ADDRESS.
  
  
 TCOM     BSS    0
          VFD    42/0LEND,18/END
          CON    0
 EFP      SPACE  4,15 
**        EFP - EXECUTE FUNCTION PROCESSOR. 
* 
*         *EFP* JUMPS TO THE CORRECT FUNCTION PROCESSOR, BASED UPON 
*         THE COMMAND ENTERED VIA THE *L* DISPLAY.  THE FUNCTION
*         PROCESSING ROUTINE IS SET UP SO THAT IT RETURNS TO THE
*         ADDRESS *EFP* WOULD HAVE RETURNED TO. 
* 
*         ENTRY  (B5) = ADDRESS OF FUNCTION PROCESSOR.
*                (B5) = 0, IF PAGING COMMAND. 
* 
*         EXIT   TO FUNCTION PROCESSOR WITH RETURN ADDRESS SET. 
* 
*         USES   X - 2, 7.
*                A - 2, 7.
  
  
 EFP      SUBR               ENTRY/EXIT 
          ZR     B5,EFPX     IF PAGING COMMAND
          SA2    EFPX        SET RETURN ADDRESS 
          BX7    X2 
          SA7    B5 
          JP     B5+1        JUMP TO SUBROUTINE 
 ERR      SPACE  4,10 
**        ERR - ERROR PROCESSOR.
* 
*         *ERR* ISSUES AN ERROR MESSAGE TO THE USER AND SYSTEM
*         DAYFILE AND THEN ABORTS THE UTILITY.
* 
*         ENTRY  (X2) = ADDRESS OF ERROR MESSAGE. 
* 
*         EXIT   MESSAGE ISSUED IN SYSTEM AND USER DAYFILE. 
* 
*         MACROS ABORT, MESSAGE.
  
  
 ERR      BSS    0           ENTRY
          MESSAGE X2,0,R
          ABORT 
 FDB      SPACE  4,20 
**        FDB - FORMAT DISPLAY BUFFER.
* 
*         ENTRY  (X1) = FWA BUFFER TO FORMAT. 
*                (X2) = 0, IF FORMATTING FOR *L* DISPLAY. 
*                     = FET ADDRESS OF OUTPUT FILE IF FOR PRINTER.
*                (X5) = (PADT) ENTRY FOR PAGE TO REFORMAT.
*                (X6) = LWA BUFFER TO FORMAT. 
*                (B2) = *L* DISPLAY MESSAGE INDEX.
* 
*         EXIT   (LBUF) = FWA FORMATTED *L* DISPLAY BUFFER. 
* 
*         USES   X - 3. 
*                B - 2, 3, 4, 6.
* 
*         CALLS  FLB. 
  
  
 FDB      SUBR               ENTRY/EXIT 
  
*         SET UP PARAMETERS FOR *FLB*.
  
          SX3    B1+         *C* DISPLAY FORMAT 
          SB2    LBUF        FWA TO PLACE FORMATTED DATA
          SB6    LBUF+LBUFL  LWA+1 OF BUFFER TO RECEIVE CONVERTED DATA
          NZ     X2,FDB1     IF FORMATTING FOR PRINTER
          SB3    XCDT        SET X-COORDINATE FOR *L* DISPLAY 
          SB4    YCDT        SET Y-COORDINATE FOR *L* DISPLAY 
 FDB1     RJ     FLB         FORMAT DATA TO BE OUTPUT 
          EQ     FDBX        RETURN 
 GSD      SPACE  4,10 
**        GSD - GET *SCT* DATA. 
* 
*         *GSD* UPDATES THE SERVICE CLASS CONTROL TABLE TEMPLATES.
* 
*         ENTRY  (WBUF) = ADDRESS OF FIRST *SCT* ENTRY. 
* 
*         CALLS  WOS, WPO.
* 
*         MACROS SYSTEM.
  
  
 GSD      SUBR               ENTRY/EXIT 
          SYSTEM SFM,R,SFMB,RSDF*100B  RETURN SYSTEM DATA 
          RJ     WOS         WRITE ORIGIN-S SERVICE CLASSES 
          RJ     WPO         WRITE PRIORITY ORDERED SERICE CLASSES
          EQ     GSDX        RETURN 
 IDT      SPACE  4,15 
**        IDT - INITIALIZE DISPLAY TEMPLATES. 
* 
*         *IDT* BLANK FILLS THE SERVICE CLASS DATA AREAS OF THE *L* 
*         DISPLAY TEMPLATES.
* 
*         EXIT   SERVICE CLASS DATA AREAS REINITIALIZED.
* 
*         USES   X - 5. 
*                A - 5. 
* 
*         MACROS MOVE.
  
  
 IDT      SUBR               ENTRY/EXIT 
          SA5    TJOS-1      TABLE OF JOB ORIGIN SERVICE CLASSES
 IDT1     SA5    A5+1        GET NEXT ENTRY FROM TABLE
          ZR     X5,IDTX     IF END OF TABLE
          MOVE   23,IDTA,X5  RESET TEMPLATE DATA AREA 
          EQ     IDT1        RESET NEXT SERVICE CLASS AREA
  
  
 IDTA     BSS    0           TO RESET SERVICE CLASS DATA AREAS
          DATA   50H
          DATA   60H
          DATA   60H
          DATA   60H
 ILD      SPACE  4,15 
**        ILD - INPUT *L* DISPLAY.
* 
*         *ILD* WILL ROLLOUT UNTIL A COMMAND IS ENTERED VIA THE *L* 
*         DISPLAY.  IF NO COMMAND HAS BEEN ENTERED AFTER THE
*         SPECIFIED ROLLOUT TIME, THE DISPLAY IS REBUILT TO REFLECT 
*         THE CURRENT STATE OF THE SYSTEM.
* 
*         USES   X - 0, 1, 2. 
*                A - 1. 
*                B - 2, 3.
* 
*         CALLS  GSD, OLD.
* 
*         MACROS DSDINP, ROLLOUT. 
  
  
 ILD      SUBR               ENTRY/EXIT 
 ILD1     DSDINP IPW         REQUEST INPUT FROM OPERATOR
          SA1    IPW
          MX0    -12
          BX1    -X0*X1 
          AX1    1           IGNORE COMPLETION BIT
          SX2    X1-CNCI
          SB3    X1 
          NZ     X2,ILDX     IF COMMAND ENTERED 
          ROLLOUT  ROLB      WAIT FOR *L* DISPLAY INPUT 
          RJ     OLD         OUTPUT *L* DISPLAY 
          EQ     ILD1        CHECK *L* DISPLAY INPUT
 OLD      SPACE  4,15 
**        OLD - OUTPUT *L* DISPLAY DATA.
* 
*         *OLD* OUTPUTS THE DATA IN THE *L* DISPLAY BUFFER, THE 
*         OPERATOR INPUT AND THE ERROR MESSAGE, IF ANY, TO THE
*         OPERATOR CONSOLE *L* DISPLAY. 
* 
*         ENTRY  (EMOR) = *L* DISPLAY MESSAGE INDEX.
*                (CMPB) = INDEX INTO *PADT*.
* 
*         USES   X - 1, 2, 3, 5, 6. 
*                A - 1, 5.
* 
*         CALLS  FDB, GSD, IDT, ZTB.
* 
*         MACROS DSDOUT, MOVE.
  
  
 OLD      SUBR               ENTRY/EXIT 
          RJ     IDT         INITIALIZE DISPLAY TEMPLATES 
          RJ     GSD         GET *SCT* DATA 
  
*         SET OPERATOR INPUT AND ERROR MESSAGE IN BUFFER. 
  
          SA1    CPAG        GET INDEX OF PAGE TO DISPLAY 
          SA5    X1+LDPT
          SA3    EMOR        GET MESSAGE ORDINAL
          SX3    TMLD+X3     GET MESSAGE FOR *L* DISPLAY
          LX5    -18         RIGHT JUSTIFY MESSAGE BUFFER ADDRESS 
          MOVE   3,X3,X5     SET MESSAGE IN BUFFER
          SB2    LCOMU-1     OPERATOR INPUT LINE LENGTH 
          SA1    IBUF        FIRST WORD OF OPERATOR INPUT 
 OLD1     ZR     B2,OLD2     IF ALL WORDS CONVERTED 
          RJ     ZTB         CONVERT ALL ZERO BYTES TO BLANKS 
          SA6    A1          REPLACE IN *IBUF*
          SB2    B2-B1       DECREMENT NUMBER OF WORDS TO CONVERT 
          SA1    A1+1        NEXT WORD IN *IBUF*
          EQ     OLD1        CONVERT NEXT WORD
  
 OLD2     SX3    IBUF        GET OPERATOR INPUT 
          LX5    -18         RIGHT JUSTIFY INPUT BUFFER ADDRESS 
          MOVE   6,X3,X5     SET OPERATOR INPUT IN BUFFER 
  
*         FORMAT AND OUTPUT *L* DISPLAY BUFFER. 
  
          SX2    B0+         INDICATE *L* DISPLAY FOR *FDB* 
          SA1    CPAG        GET FWA BUFFER TO FORMAT 
          SA1    X1+LDPT
          SX6    X1+SDTAL-1  LWA BUFFER TO FORMAT 
          RJ     FDB         FORMAT *L* DISPLAY BUFFER
          DSDOUT LFWA        DISPLAY *L* DISPLAY BUFFER 
          EQ     OLDX        RETURN 
 WOS      SPACE  4,15 
**        WOS - WRITE ORIGINS-S SERVICE CLASS(ES).
* 
*         *WOS* WRITES THE ORIGIN-S SERVICE CLASSES TO THE
*         APPROPRIATE AREAS IN THE *L* DISPLAY TEMPLATES. 
* 
*         ENTRY  (WBUF) = ADDRESS OF FIRST *SCT* ENTRY. 
* 
*         EXIT   SERVICE CLASS DATA SET IN TEMPLATES. 
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 6, 7. 
*                B - 2, 3, 4, 5.
  
  
 WOS      SUBR               ENTRY/EXIT 
  
*         INITIALIZE FOR PROCESSING LOOP. 
  
          SB2    TJOS        FWA OF WORD TO FILL IN TEMPLATE
          SB3    NSPL        NUMBER OF SERVICE CLASSES PER LINE 
          SA1    TSCT-1      FWA-1 OF SERVICE CLASS TABLE 
          SA2    B2 
          SA2    X2          GET FIRST TEMPLATE WORD
          SA3    WBUF        FWA OF *SCT* DATA BUFFER 
          MX0    -36
          BX3    -X0*X3 
          SX6    B1+         USED TO TOGGLE WRITE WORD FLAG 
          SX5    B0+         CLEAR WRITE WORD FLAG
  
*         MAIN PROCESSING LOOP. 
  
 WOS1     SA1    A1+B1       GET NEXT ENTRY IN SERVICE CLASS TABLE
          ZR     X1,WOS2     IF END OF TABLE
  
*         CHECK FOR MATCH WITH TABLE ENTRY. 
  
          BX4    -X0*X1      GET SERVICE CLASS MASK 
          BX4    X3*X4
          ZR     X4,WOS1     IF NOT A MATCH, CHECK NEXT ENTRY IN TABLE
  
*         PROCESS SERVICE CLASS MATCH.
  
          MX0    12          GET SERVICE CLASS MNEMONIC 
          BX4    X0*X1
          BX2    -X0*X2      CLEAR TWO CHARACTERS FOR SERVICE CLASS 
          MX0    -36
          BX2    X4+X2       SET SERVICE CLASS INTO WORD
          LX2    30 
          BX5    X6-X5       TOGGLE WRITE WORD FLAG 
          SB3    B3-1 
          NZ     X5,WOS3     IF WRITE WORD FLAG IS SET
          ZR     B3,WOS3     IF END OF LINE 
          EQ     WOS1        LOOP FOR NEXT SERVICE CLASS
  
*         PROCESS END OF SERVICE CLASS TABLE. 
  
 WOS2     SX5    B1+         SET WRITE WORD FLAG
  
*         WRITE WORD IN TEMPLATE. 
  
 WOS3     SB5    B3-NSPL+1
          ZR     B5,WOS4     IF ONLY ONE SERVICE CLASS THIS LINE
          SX4    B3 
          BX4    X5*X4
          NZ     X4,WOS4     IF JUSTIFICATION NOT NEEDED
          LX2    30 
 WOS4     BX7    X2 
          SA7    A2          SET WORD IN TEMPLATE 
          ZR     X1,WOS6     IF END OF THIS ORIGIN TYPE 
  
*         CHECK NEXT SERVICE CLASS FOR THIS ORIGIN TYPE.
  
          ZR     B3,WOS5     IF END OF LINE 
          SA2    A2+1        SET NEXT WORD IN TEMPLATE
          EQ     WOS1        LOOP FOR NEXT SERVICE CLASS
  
*         RESET FOR NEXT LINE IN TEMPLATE.
  
 WOS5     SA2    A2+1        GET FIRST WORD NEXT LINE IN TEMPLATE 
          SB3    NSPL 
          EQ     WOS1        LOOP FOR NEXT SERVICE CLASS
  
*         PROCESS END OF THIS ORIGIN TYPE.
  
 WOS6     SB2    B2+B1       GET FWA OF NEXT LINE IN TEMPLATE 
          SA2    B2 
          ZR     X2,WOS7     IF END OF DATA 
          SA2    X2          GET FIRST WORD NEXT LINE IN TEMPLATE 
          BX5    X5-X5       CLEAR WRITE FLAG 
          SB3    NSPL 
          SA1    TSCT-1 
          SA3    A3+1        GET NEXT WORD IN *SCT* BUFFER
          EQ     WOS1        LOOP FOR NEXT SERVICE CLASS
  
*         ADD LINE TERMINATORS TO ALL SERVICE CLASS DATA LINES. 
  
 WOS7     MX0    48          MASK FOR ZERO BYTE TERMINATOR
          SB3    TJOS-1      INITIALIZE AREAS TO PROCESS
 WOS8     SB3    B3+B1       GET FWA OF AREA TO PROCESS 
          SA2    B3 
          ZR     X2,WOSX     IF ALL AREAS PROCESSED 
          SA2    X2-1 
          SB4    4           NUMBER OF DATA LINES PER AREA
 WOS9     SA2    A2+6        LAST WORD IN LINE
          BX6    X0*X2       ADD IN ZERO BYTE TERMINATOR
          SA6    A2          REPLACE IN BUFFER
          SB4    B4-1        COUNT ONE LINE 
          NZ     B4,WOS9     IF MORE LINES IN THIS AREA 
          EQ     WOS8        PROCESS NEXT SERVICE CLASS AREA
 TJOS     SPACE  4,10 
**        TJOS - TABLE OF JOB ORIGIN SERVICE CLASS LIST.
* 
*T        42/0,18/SCOA
* 
*         (SCOA) = FWA OF SERVICE CLASS OUTPUT AREA.
  
  
 TJOS     BSS    0
          VFD    42/0,18/SDSO 
          VFD    42/0,18/SDBO 
          VFD    42/0,18/SDRB 
          VFD    42/0,18/SDIO 
          CON    0           END OF TABLE 
 WPO      SPACE  4,20 
**        WPO - WRITE PRIORITY ORDERED SERVICE CLASSES. 
* 
*         *WPO* WRITES THE PRIORITY ORDERED SERVICE CLASSES TO THE
*         APPROPRIATE AREAS IN THE *L* DISPLAY TEMPLATES. 
* 
*         ENTRY  TPOS = TABLE OF PRIORITY ORDERED SERVICE CLASSES IN
*                       TEMPLATES.
*                (WBUF) = ADDRESS OF FIRST *SCT* ENTRY. 
* 
*         EXIT   PRIORITY ORDERED SERVICE CLASSES SET IN TEMPLATES. 
* 
*         USES   X - 0, 1, 3, 4, 5, 6, 7. 
*                A - 1, 3, 5, 7.
*                B - 2, 3.
* 
*         MACROS MOVE.
  
  
 WPO      SUBR               ENTRY/EXIT 
          MOVE   PBUFL,WPOA,PBUF  RE-INITIALIZE *PBUF*
          SB2    NPXW        NUMBER OF SERVCE CLASSES PER WORD
          SB3    NUMPX       NUMBER OF PRIORITY ORDERED SERVICE CLASSES 
          SA1    PBUF        FWA OF TEMPORARY BUILD BUFFER
          SA3    WBUF+PLSC   FWA OF PRIORITY ORDERED SERVICE CLASS DATA 
          MX0    12          MASK FOR SERVICE CLASSES 
          SX6    B1          USED TO TOGGLE WRITE FLAG
          SX5    B0+         CLEAR WRITE FLAG 
  
*         PROCESS ALL PRIORITY ORDERED SERVICE CLASSES. 
  
 WPO1     BX4    X0*X3       GET NEXT SERVICE CLASS 
          SB3    B3-B1       COUNT ONE SERVICE CLASS
          SB2    B2-1        COUNT ONE SERVICE CLASS THIS LINE
          LX3    12 
          BX5    X6-X5       TOGGLE WRITE FLAG
          ZR     X4,WPO2     IF NO SERVICE CLASS PRESENT
          BX1    -X0*X1      CLEAR 2 CHARACTERS 
          BX1    X1+X4       SET SERVICE CLASS
 WPO2     LX1    30 
          NZ     B2,WPO3     IF MORE SERVCE CLASSES THIS LINE 
          SB2    NPXW 
          SA3    A3+1        GET MORE SERVCE CLASSES FROM SYSTEM BUFFER 
 WPO3     NZ     X5,WPO4     IF WRITE FLAG SET
          NZ     B3,WPO1     IF MORE SERVICE CLASSES
  
*         WRITE CURRENT WORD TO BUILD BUFFER. 
  
 WPO4     NZ     B3,WPO5     IF NOT END OF SERVICE CLASSES
          LX1    30 
          BX7    X1          WRITE LAST SERVICE CLASS ENTRY 
          SA7    A1+
          EQ     WPO6        SET SERVICE CLASSES IN TEMPLATES 
  
 WPO5     BX7    X1          WRITE CURRENT WORD TO BUILD BUFFER 
          SA7    A1+
          SA1    A1+B1       NEXT WORD IN BUILD BUFFER
          EQ     WPO1        LOOP FOR NEXT SERVICE CLASS
  
*         SET PRIORITY ORDERED SERVICE CLASSES INTO TEMPLATES.
  
 WPO6     SA5    TPOS        TABLE OF TEMPLATE ADDRESSES
 WPO7     ZR     X5,WPOX     IF NO MORE PAGES IN TEMPLATE 
          MOVE   PBUFL,PBUF,X5  PUT DATA INTO TEMPLATE
          SA5    A5+B1       NEXT TEMPLATE ADDRESS
          EQ     WPO7        LOOP FOR NEXT TEMPLATE PAGE
  
  
 WPOA     DATA   50H
 TPOS     SPACE  4,10 
**        TPOS - TABLE OF PRIORITY ORDERED SERVICE CLASS ORIGINS. 
* 
*T        42/0,18/ADDR
* 
*         (ADDR) = ADDRESS OF DATA OUTPUT AREA ON TEMPLATE PAGE.
  
 TPOS     BSS    0
          VFD    42/0,18/SDPA 
          VFD    42/0,18/SDPB 
          CON    0           END OF TABLE 
          SPACE  4,20 
*         COMMON DECKS. 
  
*CALL     COMCCIO 
*CALL     COMCCOD 
*CALL     COMCCPM 
*CALL     COMCFLD 
*CALL     COMCLFM 
*CALL     COMCMVE 
*CALL     COMCPOP 
*CALL     COMCSFN 
*CALL     COMCSYS 
*CALL     COMCUSB 
*CALL     COMCWOD 
*CALL     COMCWTC 
*CALL     COMCWTO 
*CALL     COMCWTW 
*CALL     COMCZTB 
          TITLE  BUFFER AREA. 
          USE    BUFFERS
  
 SDTA     SPACE  4,5
**        SERVICE CLASS DISPLAY TEMPLATES.
  
 SDTH     BSS    0           HEADER FOR PRINT OPTION
          DATA   50HSCTD - SERVICE CLASS CONTROL TABLE DISPLAY
 SDAT     BSSZ   1           DATE STAMP 
 STIM     BSSZ   1           TIME STAMP 
          CON    0
  
 SDTA     BSS    0           PAGE 1 DATA
          DATA   50HSERVICE CLASS CONTROL TABLE DISPLAY            PAG
          DATA   8CE 1 OF 2 
          DATA   C* * 
          DATA   58C   SYSTEM ORIGIN SERVICE CLASSES
          DATA   C* * 
 SDSO     DATA   60H
          DATA   60H
          DATA   60H
          DATA   60H
          DATA   C* * 
          DATA   58C   LOCAL BATCH ORIGIN SERVICE CLASSES 
          DATA   C* * 
 SDBO     DATA   60H
          DATA   60H
          DATA   60H
          DATA   60H
          DATA   C* * 
          DATA   58C   PRIORITY ORDERED SERVICE CLASSES 
          DATA   C* * 
          DATA   58C     P0   P1   P2   P3   P4   P5   P6   P7
 SDPA     DATA   50C
 SDMP     EQU    *-SDTA      MESSAGE LINE POSITION IN TEMPLATE
          DATA   28C
 SDIP     EQU    *-SDTA      INPUT LINE POSITION IN TEMPLATE
          DATA   50C
 SDTAL    EQU    *-SDTA      LENGTH OF HEADER BUFFER
 SDTAE    EQU    *-1         END OF PAGE 1
 SDTB     BSS    0           PAGE 2 DATA
          DATA   50HSERVICE CLASS CONTROL TABLE DISPLAY            PAG
          DATA   8CE 2 OF 2 
          DATA   C* * 
          DATA   58C   REMOTE BATCH ORIGIN TYPE SERVICE CLASSES 
          DATA   C* * 
 SDRB     DATA   60H
          DATA   60H
          DATA   60H
          DATA   60H
          DATA   C* * 
          DATA   58C   INTERACTIVE ORIGIN SERVICE CLASSES 
          DATA   C* * 
 SDIO     DATA   60H
          DATA   60H
          DATA   60H
          DATA   60H
          DATA   C* * 
          DATA   58C   PRIORITY ORDERED SERVICE CLASSES 
          DATA   C* * 
          DATA   58C     P0   P1   P2   P3   P4   P5   P6   P7
 SDPB     DATA   50C
          DATA   28C
          DATA   50C
 SDTBL    EQU    *-SDTB      LENGTH OF PAGE 2 TEMPLATE
 SDTBE    EQU    *-1         END OF PAGE 2
          ERRNZ  SDTBL-SDTAL TEMPLATES NOT SAME LENGTH
  
 IPW      BSS    0           INPUT BUFFER FOR *L* DISPLAY 
          VFD    12/6,1/0,1/0,46/0
 IBUF     BSS    LCOMU       INPUT BUFFER 
  
*         SCRATCH BUFFER. 
  
 PBUF     DATA   50H
 PBUFL    EQU    *-PBUF      *PBUF* LENGTH
  
*         *L* DISPLAY BUFFER. 
  
 LFWA     VFD    12/LBUFL,1/0,1/0,46/0  *L* DISPLAY CONTROL WORD
 LBUF     EQU    *           *L* DISPLAY BUFFER STARTS HERE 
 LBUFE    EQU    LBUF+LBUFL  END OF *L* DISPLAY BUFFER
          ERRNG  LFWA-SDTBE  TEMPLATE OVERFLOWS *L* DISPLAY BUFFER
          ERRNG  LBUFL-SDTAL TEMPLATE IS LARGER THAN *LBUF* 
  
*         OUTPUT FILE BUFFER. 
  
 OBUF     EQU    LBUF        OUTPUT BUFFER OVERLAYS *L* DISPLAY BUFFER
 OBUFE    EQU    OBUF+SDTAE-SDTH  END OF OUTPUT BUFFER
  
*         *SFM* WORKING BUFFER. 
  
 .WBUF    MAX    LBUFE,OBUFE
 WBUF     EQU    .WBUF       *WBUF* FOLLOWS *OBUF* AND *LBUF* 
 WBUFE    EQU    WBUF+SCTL   END OF *WBUF*
 PRS      TITLE  PRESET.
**        PRS - PRESET ROUTINE. 
* 
*         ENTRY  CONTROL STATEMENT ARGUMENT LIST AT RA+2 (ARGR) 
*                IN OPERATING SYSTEM FORMAT.
* 
*         EXIT   (B1) = 1.
*                (PFLG) = 1, IF PRINT FILE REQUESTED. 
*                (LFLG) = 1, IF *L* DISPLAY REQUESTED.
* 
*         ERROR  TO *ERR*, IF ARGUMENT ERROR OR INCORRECT USER ACCESS.
*                (X2) = FWA ERROR MESSAGE.
* 
*         USES   X - 0, 1, 2, 3, 4, 6.
*                A - 1, 2, 3, 6.
*                B - 1, 2, 3, 4, 5, 6, 7. 
* 
*         CALLS  ARM, CPA, FNB, USB.
* 
*         MACROS ARG, CLOCK, DATE, GETSPS, SUBR.
  
  
*         SET DATE AND TIME IN HEADER.
  
 PRS      SUBR               ENTRY/EXIT 
          SB1    1           SYSTEM COMMUNICATION (B1)=1
          DATE   SDAT 
          CLOCK  STIM 
          GETSPS SYOF        CHECK FOR SYSTEM ORIGIN PRIVILEGES 
          SA1    SYOF 
          ZR     X1,PRS1     IF SYSTEM ORIGIN PRIVILEGES
          SX2    ERIU        *INCORRECT USER ACCESS.* 
          EQ     ERR         ABORT
  
*         PROCESS ARGUMENT LIST.
  
 PRS1     SB2    CCDR        UNPACK CONTROL CARD
          RJ     USB
          SA1    A6          ASSURE TERMINATOR CHARACTER
          SX6    1R.
          SA6    X1+B1
          SA2    PRSB        SET SEPARATOR MASK 
          SB2    60          SET MAXIMUM NON-DELIMITER DISPLAY CODE 
          SB7    PRS9        SET EXIT FOR TERMINATOR CHARACTER
          RJ     FNB         FIND NON-BLANK CHARACTER 
  
*         SKIP PROGRAM NAME.
  
          SB7    PRS6        SET EXIT FOR TERMINATOR CHARACTER
 PRS4     RJ     FNB         FIND NON-BLANK CHARACTER 
          SB4    B5-B2
          LX4    X2,B5
          PL     B4,PRS5     IF SEPARATOR CHARACTER 
          PL     X4,PRS4     IF NOT SEPARATOR CHARACTER 
 PRS5     SB3    TARG        FWA ARGUMENT EQUIVALENCE TABLE 
          SB2    TARGL       LENGTH ARGUMENT TABLE
          SB4    PRSA        ADDRESS TO PLACE DATA
          RJ     CPA         CONVERT POSITIONAL ARGUMENTS 
          NG     B5,PRS9     IF ARGUMENT ERROR
          PL     X1,PRS6     IF NO ARGUMENTS PROCESSED
          SX6    B5+         SET LWA OF ARGUMENTS 
          SA6    USBC 
          SB6    PRSA        FWA OF ARGUMENTS 
          RJ     ARM         PROCESS ARGUMENTS
          NZ     X1,PRS9     IF ERROR 
  
*         DETERMINE LIST OPTIONS. 
  
 PRS6     SA1    LO          GET CHARACTER FROM LIST OPTION 
          SA2    TLOP-1 
          MX0    6
          SB4    A2+         SAVE ADDRESS OF ARGUMENT TABLE 
 PRS7     BX3    X0*X1       PROCESS NEXT CHARACTER FROM LIST OPTION
          ZR     X3,PRSX     IF ALL OPTIONS PROCESSED 
 PRS8     SA2    A2+B1       SEARCH ARGUMENT TABLE
          ZR     X2,PRS9     IF LIST OPTION NOT DEFINED IN TABLE
          BX4    X0*X2
          BX4    X4-X3
          NZ     X4,PRS8     IF MATCH NOT FOUND 
          SX6    B1          SET FLAG FOR THIS OPTION 
          SA6    X2 
          SX3    A2-TLOP
          LX1    6
          SA2    B4          INITIALIZE TABLE ADDRESS 
          NZ     X3,PRS7     IF NOT LO=D
          MX4    -12
          SA3    JOPR        CHECK FOR SYSTEM ORIGIN
          LX3    0-24 
          BX3    -X4*X3 
          SX3    X3-SYOT
          ZR     X3,PRS7     IF SYSTEM ORIGIN JOB 
          SX2    ERIU        *INCORRECT USER ACCESS.* 
          EQ     ERR         ABORT
  
 PRS9     SX2    ERAR        *ARGUMENT ERROR.*
          EQ     ERR         ABORT
  
 PRSA     BSS    100
  
 PRSB     CON    40000000000033127777B  SEPARATOR MASK
  
**        ASSUMED VALUES FOR LIST OPTIONS.
  
  
 LO       CON    0LD         SELECTED LIST OPTION (DEFAULT = *D*) 
          SPACE  4,10 
**        ARGUMENT EQUIVALENCE TABLE. 
  
  
 TARG     BSS    0
 L        ARG    O,O,0,0     OUTPUT FILE NAME 
 LO       ARG    LO,LO,0,0   LIST OPTIONS 
          ARG                END OF ARGUMENT TABLE
 TARGL    EQU    *-TARG-1    LENGTH OF ARGUMENT TABLE 
 TLOP     SPACE  4,15 
**        TLOP - TABLE OF LIST OPTIONS. 
* 
*T,       42/ OPTION,18/ ADDR 
* 
*         (ADDR) WILL BE SET NON-ZERO IN PRS IF OPTION IS SELECTED. 
  
  
 TLOP     BSS    0
          VFD    42/0LD,18/LFLG  SELECT *L* DISPLAY 
          VFD    42/0LL,18/PFLG  SELECT LINE PRINTER
          CON    0           END OF TABLE 
 FNB      SPACE  4,15 
**        FNB - FIND NON-BLANK CHARACTER. 
* 
*         ENTRY  (B6) = NEXT CHARACTER ADDRESS. 
*                (B7) = EXIT ADDRESS, IF TERMINATOR ENCOUNTERED.
* 
*         EXIT   (X1) = (B5) = NEXT NON-BLANK CHARACTER.
*                (B6) = NEXT CHARACTER ADDRESS (UPDATED). 
*                EXIT IS MADE TO (B7), IF TERMINATOR ENCOUNTERED. 
* 
*         USES   X - 1, 4.
*                A - 1. 
*                B - 1, 5, 6, 7.
* 
*         CALLS  ARM, CPA, FNB, USB.
* 
*         MACROS CLOCK, DATE, GETSPS, SUBR. 
  
  
 FNB      SUBR               ENTRY/EXIT 
 FNB1     SA1    B6          GET NEXT CHARACTER 
          SB6    B6+B1
          SX4    X1-1R
          ZR     X4,FNB1     IF BLANK CHARACTER 
          SB5    X1+
          SX4    X1-1R. 
          ZR     X4,FNB2     IF TERMINATOR CHARACTER
          SX4    X1-1R) 
          NZ     X4,FNBX     IF NOT TERMINATOR CHARACTER, RETURN
 FNB2     JP     B7          TERMINATOR CHARACTER 
          TITLE  PRESET COMMON DECKS. 
*CALL     COMCARM 
*CALL     COMCCPA 
          SPACE  4,5
 SCTDE    EQU    *           END OF PROGRAM 
 .RFL=    MAX    SCTDE,WBUFE
 RFL=     EQU    .RFL=
          SPACE  4,5
          END 
