*DECK MFQUEUE 
          IDENT  MFQRES 
          ENTRY  MFQRES 
          SYSCOM B1 
          BASE   D
          LIST   F
 MFQUEUE  TITLE  MFQUEUE - ROUTE FILE WITH EXPLICIT TEXT. 
          COMMENT MFQUEUE - ROUTE FILE WITH EXPLICIT TEXT.
          COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1994. 
          SPACE  4,10 
****      MFQUEUE - ROUTE FILE WITH EXPLICIT TEXT.
* 
*         J. P. KELLER       04/09/82.
* 
*         COPYRIGHT (C) CONTROL DATA SYSTEMS INC. 1994. 
*         ALL RIGHTS RESERVED.
          SPACE  4,10 
***       MFQUEUE ALLOWS THE USER TO SEND A LOCAL FILE
*         VIA THE RHF QUEUE TRANSFER FACILITY FROM THE LOCAL HOST 
*         TO A QUEUE ON THE REMOTE HOST. TO ACCOMPLISH THIS,
*         THE USER MAY SPECIFY A ROUTING DIRECTIVE THAT 
*         IS TO BE PROCESSED BY THE REMOTE MAINFRAME. 
*         THE STANDARD NOS OR NOS/BE ROUTE STATEMENT IS THE 
*         NORMAL MEANS FOR ROUTING FILES VIA QTF.  MFQUEUE
*         IS PROVIDED FOR SPECIFYING ARBITRARY ROUTING TEXT 
*         INFORMATION FOR THOSE REMOTE HOSTS WHICH DO NOT 
*         SUPPORT STANDARD ROUTE PARAMETERS.
          SPACE  4,10 
****      THE CONTROL STATEMENT FORMAT IS:  
* 
*         MFQUEUE,LFN,ST=LID,DD=DD,I=DIRFILE,PC=C,DC=DC.
* 
*         WHERE:  
* 
*               LFN = LOCAL FILE TO BE ROUTED TO THE LINKED MAINFRAME.
* 
*               ST  = LOGICAL IDENTIFIER OF THE REMOTE MAINFRAME. 
* 
*               DD  = DATA DESCRIPTION PARAMETER
*                     C6 - CHARACTER DATA IN 64 ASCII.  LOCAL FILE
*                          ASSUMED TO CONSIST OF OR WILL BE WRITTEN AS
*                          6-BIT DISPLAY CODE WITH ZERO BYTE TERMINATED 
*                          LINES. 
*                     C8 - CHARACTER DATA IN GREATER THAN 64 SUBSET OF
*                          ASCII.  LOCAL FILES ASSUMED TO CONSIST 
*                          OF OR WILL BE WRITTEN AS 8-BIT ASCII RIGHT 
*                          JUSTIFIED IN TWELVE BIT FIELDS WITH ZERO 
*                          BYTE TERMINATED LINES. 
*                     US - BINARY DATA AND IS STRUCTURED WITH EOR'S AND 
*                          AND EOF'S. 
*                     UU - NOS AND NOS/BE UU IS TREATED THE SAME AS US. 
* 
*               IF NO DD PARAMETER IS SPECIFIED, THE DATA TYPE IS 
*               DETERMINED BASED ON THE REMOTE ROUTING DIRECTIVE
*               AND THE CHARACTERISTICS OF THE LOCAL FILE.
* 
*               I   = FILE TO BE READ TO OBTAIN REMOTE ROUTING
*                     DIRECTIVES.  THE DIRECTIVE CAN BE A MAXIMUM 
*                     OF 260 6-BIT DISPLAY CODE CHARACTERS LONG.
*                     IF DIRFIL IS OMITTED, FILE NAME INPUT IS
*                     ASSUMED.  IF NO I PARAMETER IS SPECIFIED, THE 
*                     ROUTING DIRECTIVE IS TO BE FOUND IN THE CONTROL 
*                     STATEMENT STREAM IMMEDIATELY FOLLOWING THE
*                     MFQUEUE STATEMENT AND ARE PREFIXED WITH THE 
*                     PREFIX CHARACTER (PC PARAMETER).
* 
*               PC  = PREFIX CHARACTER.  COMMANDS IMMEDIATELY FOLLOWING 
*                     THE MFQUEUE STATEMENT THAT ARE PREFIXED WITH
*                     THIS CHARACTER WILL BE INTERPRETED AS A REMOTE
*                     ROUTING DIRECTIVE.  THE PREFIX CHARACTER WILL BE
*                     REMOVED BEFORE TRANSMISSION THE THE REMOTE
*                     MAINFRAME.  IF THERE IS A SET OF CONTINUOUS 
*                     PREFIXED COMMANDS, THE COMMAND TEXTS WILL BE
*                     CONCATENATED TO FORM ONE STRING UP TO A MAXIMUM 
*                     OF 260 CHARACTERS.  THE DEFAULT PREFIX CHARACTER
*                     IS *. 
* 
*               DC  = 2-CHARACTER DISPOSITION CODE. 
* 
*                     CP - CARD PUNCH.
*                     IN - INPUT. 
*                     IX - INPUT, OUTPUT NOT RETURNED.
*                     LP - PRINT. 
*                     PB - CARD PUNCH, BINARY.
*                     PH - SAME AS CP.
*                     PR - SAME AS LP.
*                     PU - SAME AS CP.
*                     P8 - CARD PUNCH, 80-COLUMN. 
*                     SB - SAME AS PB.
*                     SP - PLOT.
          SPACE  4,10 
***       DAYFILE MESSAGES. 
* 
* 
*         MFQUEUE - CONTROL STATEMENT ERROR.
*         MFQUEUE COMPLETE.     FILE = ROUTED FILE NAME 
*         MFQUEUE COMPLETE.      JSN = ROUTED FILE NAME 
*         MFQUEUE - FIRST PARAMETER NOT VALID LFN.
*         MFQUEUE - INVALID PARAMETER.
*         MFQUEUE - DUPLICATE PARAMETER.
*         MFQUEUE - ILLEGAL DD VALUE SPECIFIED. 
*         MFQUEUE - DIRECTIVE EXCEEDS 256 CHARACTERS. 
*         MFQUEUE - ST PARAMETER MUST BE SPECIFIED. 
*         MFQUEUE - ILLEGAL ST VALUE SPECIFIED. 
*         MFQUEUE - ILLEGAL DC VALUE SPECIFIED. 
          SPACE  4,10 
**        COMMON DECKS. 
* 
*         COMSSFM                  (NOS ONLY).
*         COMCSFM                  (NOS ONLY).
          SPACE  4,10 
*         CALL COMCMAC
*CALL COMCMAC 
  
          USE    // 
  
 ERTLENC  EQU    256D              EXPLICIT TEXT LENGTH (CHARACTERS)
 ERTLENC  DECMIC ERTLENC
 ERTLEN   EQU     26D              EXPLICIT TEXT LENGTH (WORDS) 
  
 DIRBUF   BSS    ERTLEN+2          DIRECTIVES BUFFER
  
 CCBUF    BSS    30 
  
          BSS    8
  
 RFL=     BSS    0
  
          USE    *
 DSPB     CON    *-*               WORD 0 - LFN, ETC. 
  
*                                  WORD 1 - DISPOSITION CODE AND DSP
*                                           FLAGS (RETURN FILE NAME,
*                                           EXTENDED PARAMETER BLOCK, 
*                                           DC AND DID SPECIFIED.)
 .NOS     IFEQ   OS$NOS 
          VFD    12/0,12/0,12/2LPR,6/0,18/1S17+1S6+1S4+1S3
 .NOS     ELSE
          VFD    12/0,12/0,12/2LPR,6/0,18/1S17+1S16+1S6+1S4+1S3 
 .NOS     ENDIF 
  
          VFD    18/0,18/*-*,24/0  DESTINATION ID 
          CON    0                 FID,PRIORITY,ETC.
          CON    0                 SPACING CODE,ETC.
 .NOS     IFEQ   OS$NOS 
          CON    0
          CON    0
          VFD    12/*-*,24/0,6/0,18/0      DD PARAMETER 
          CON    0
          VFD    42/0,18/DSPEX             ADDRESS OF EXPLICIT TEXT 
          CON    0
          CON    0
          CON    0
          CON    0
          CON    0
 .NOS     ELSE
          CON    DSPX              ADDRESS OF EXTENDED PARM BLOCK 
 .NOS     ENDIF 
  
 .NOS     IFEQ   OS$NOS 
 DSPEX    BSSZ   ERTLEN            START OF EXPLICIT TEXT INFO
 .NOS     ELSE
 LE.QLFE  EQU    64                LENGTH OF LOG FILE ENTRY 
 LE.QERT  EQU    ERTLEN            LENGTH OF EXPLICIT TEXT
 LE.QIRT  EQU    26                LENGTH OF IMPLICIT TEXT
          ERRMI  LE.QLFE-1-LE.QIRT-LE.QERT  TEST ASSUMPTIONS
 DSPX     BSSZ   LE.QLFE
 DSPEX    EQU    DSPX+1+LE.QIRT    START OF EXPLICIT TEXT INFO
 .NOS     ENDIF 
  
 ST       BSSZ   1                 STAGING PARAMETER
 DD       BSSZ   1                 DD PARAMETER 
 IASM     DATA   C*INPUT* 
 I        BSSZ   1                 DIRECTIVE FILE NAME
 PC       DATA   C/*/              PREFIX CHARACTER DEFAULT 
 PNAME    DATA   C*MFQUEUE* 
 INT      BSSZ   1                 INTERACTIVE FLAG 
 ERR      BSSZ   1                 ERROR FLAG 
 DC       BSSZ   1                 DISPOSITION CODE 
  
 MXL      CON    ERTLEN+2          LENGTH OF DIR BUFFER (WORDS) 
  
 LEN      BSSZ   1                 LENGTH OF DIRECTIVE
  
 TXTLENC  CON    0                 ERT LENGTH IN CHARACTERS 
 TXTDFWA  CON    DSPEX+1           ERT FWA FOR NEXT DIRECTIVE 
 TXTDBIT  CON    0                 ERT FIRST BIT FOR NEXT DIRECTIVE 
  
 DONEMSG  DATA   10H MFQUEUE C
          DATA   10HOMPLETE.
 .NOS     IFEQ   OS$NOS 
          DATA   10H   JSN =
 .NOS     ELSE
          DATA   10H  FILE =
 .NOS     ENDIF 
 FILE     DATA   0
          DATA   0
  
 .NOS     IFEQ   OS$NOS 
 LIDP     VFD    18/*-*,12/0,29/0,1/1 
  
          XTEXT  COMSSFM
          XTEXT  COMCSFM
  
 .NOS     ENDIF 
*CALL     COMCUCS 
          TITLE  MAIN LINE ROUTINE. 
  
 MFQRES   SUBR
  
          SB1    1
  
 .NOSBE   IFEQ   OS$NOSBE 
          MEMORY CM,MFQA,RCL,RFL= 
 .NOSBE   ENDIF 
  
          RJ     CCC               CRACK CONTROL STATEMENT
  
          RJ     PLF               PROCESS LFN PARAMETER
  
          RJ     PRP               PROCESS REMAINING PARAMETERS 
  
          ROUTE  DSPB,R            ROUTE FILE 
  
          SA1    DSPB              GET ROUTED FILE NAME 
          MX0    42 
          BX1    X0*X1             MASK OFF LAST 18 BITS
          RJ     =XSFN=            SPACE-FILL NAME
          SA1    =10H.......... 
          BX0    X7                FINAL CHARACTER MASK 
          BX6    X7*X6             REMOVE TRAILING SPACES 
          AX7    6                 EXTEND MASK ONE CHARACTER POSITION 
          BX0    X0-X7             (X0) = MASK FOR TERMINATOR 
          BX1    X0*X1             (X1) = PERIOD
          BX6    X6+X1             (X6) = NAME TERMINATED BY PERIOD 
          SA6    FILE 
  
          MESSAGE  DONEMSG,,R 
  
          ENDRUN
  
 MFQA     CON    0                 MEM STATUS WORD
 CCC      TITLE  SUBROUTINES. 
***       CCC - CRACK CONTROL STATEMENT.
* 
*         ENTRY - B1=1. 
* 
*         EXIT   CONTROL STATEMENT UNPACKED INTO CCBUF. 
*                (B6) = PARAMETER COUNT.
*                ABORT IF CONTROL STATEMENT ERROR.
* 
*         USES   A - 1, 2, 5, 6, 7. 
*                B - 2-6. 
*                X - ALL. 
* 
*         CALLS  UPC=.
* 
*         MACROS ABORT, MESSAGE.
* 
*         MESSAGES  MFQUEUE - CONTROL STATEMENT ERROR.
  
  
 CCC      SUBR                     ENTRY/EXIT 
          SA5    RA.CCD            (A5) = FWA OF CONTROL STATEMENT. 
          SB7    CCBUF             (B7) =  WHERE TO UNPACK
          SB7    -B7               BLANKS ARE LEGAL SEPARATORS
          RJ     UCS               UNPACK CONTROL STATEMENT 
          ZR     X6,CCCX           IF NO ERROR
  
          MESSAGE (=C* MFQUEUE - CONTROL STATEMENT ERROR.*),,R
          ABORT  ,ND
 PLF      SPACE  4,10 
***       PLF - PROCESS LFN.
* 
*         ENTRY  (B1) = 1.
*                (B6) = ARGUMENT COUNT. 
*                (CCBUF)+1 = LFN. 
* 
*         EXIT   LFN STORED IN DSP PARAMETER BLOCK. 
*                ABORT IF INVALID LFN.
* 
*         USES   A - 1, 6.
*                B - 1, 6.
*                X - 0, 1, 5, 6.
* 
*         MACROS ABORT, MESSAGE.
* 
*         MESSAGES  MFQUEUE - FIRST PARAMETER NOT VALID LFN.
  
  
 PLF      SUBR                     ENTRY/EXIT 
          MX0    42                FORM MASK FOR LFN
          SB6    B6-B1             PARAMETER COUNT
          ZR     B6,PLF2           NO LFN SPECIFIED 
          SA1    CCBUF+B1          GET LFN
          BX6    X0*X1             MASK LFN 
          ZR     X6,PLF2           NO LFN 
          SA6    DSPB              STORE LFN IN DSP PARM BLOCK
          BX6    -X0*X1 
          NZ     X6,PLF2           FIRST PARAMETER NOT LFN
          MX0    -6 
          LX1    6                 FIRST CHAR IN LOWER SIX BITS 
          BX6    -X0*X1 
 NOS      IFEQ   OS$NOS 
          SX5    X6-0R9-1          FIRST CHAR LETTER OR DIGIT 
 NOS      ELSE
          SX5    X6-0RZ-1          FIRST CHAR MUST BE LETTER
 NOS      ENDIF 
          PL     X5,PLF2           IF INVALID LFN 
 PLF1     SX5    X6-0RA 
          MI     X5,PLF2           IF INVALID LFN 
          LX1    6                 NEXT CHAR IN LOWER 6 BITS
          BX6    -X0*X1 
          ZR     X6,PLFX           IF VALID LFN 
          SX5    X6-0R9-1          NTH CHAR LETTER OR DIGIT 
          MI     X5,PLF1           IF VALID LFN CHARACTER 
  
 PLF2     BSS    0
          MESSAGE (=C* MFQUEUE - FIRST PARAMETER NOT VALID LFN.*),,R
          ABORT  ,ND
 PRP      SPACE  4,10 
***       PRP - PROCESS REST OF PARAMETERS. 
* 
*         ENTRY  (CCBUF+2) HAS PARAMETERS FOR MFQUEUE.
*                (B6) = NUMBER OF PARAMETERS. 
* 
*         EXIT   DSP PARAMETER BLOCK SET UP.
*                ABORT IF INVALID OR DUPLICATE PARAMETER. 
* 
*         USES   A - 0, 4, 5
*                B - 4, 5, 6
*                X - 0, 1, 4, 5 
* 
*         CALLS  ARG=, GET, PDC, PDD, PST.
  
  
 PRP      SUBR                     ENTRY/EXIT 
          SA4    CCBUF+2           POINTER TO FIRST PARM
          SB4    B6-B1             ARGUMENT COUNT 
          SB5    ARGTBL            ARGUMENT TABLE 
          RJ     =XARG=            PROCESS ARGUMENTS
          ZR     X1,PRP10          IF NO ERROR
          SX1    X1-1 
          NZ     X1,PRP1           IF NOT INVALID PARAMETER 
  
          MESSAGE (=C* MFQUEUE - INVALID PARAMETER.*),,R
          EQ     PRP2 
  
 PRP1     BSS    0
          MESSAGE (=C* MFQUEUE - DUPLICATE PARAMETER.*),,R
  
 PRP2     BSS    0
          ABORT  ,ND
  
 PRP10    BSS    0
          RJ     PDD               PROCESS DD PARAMETER 
          RJ     PST               PROCESS ST PARAMETER 
          RJ     PDC               PROCESS DC PARAMETER 
          RJ     GET               GET EXPLICIT (ROUTING) TEXT
          EQ     PRP
          SPACE  4,10 
* 
*         ARGUMENT TABLE FOR ARG CALL 
* 
 ARGTBL   BSS    0
          VFD    12/1LI,18/IASM,12/0,18/I 
          VFD    12/2LDD,18/0,12/0,18/DD
          VFD    12/2LST,18/0,12/0,18/ST
          VFD    12/2LPC,18/0,12/0,18/PC
          VFD    12/2LDC,18/0,12/0,18/DC
          CON    0
 GET      SPACE  4,10 
***       GET - GET EXPLICIT TEXT.
* 
*         ENTRY  DC = 0 (EXPLICIT ROUTING TEXT REQUIRED). 
*                   = DISPOSITION CODE. 
* 
*         EXIT   DSP PARAMETER BLOCK SET UP.
*                ABORT, IF NO EXPLICIT ROUTING TEXT FOUND AND DC = 0. 
* 
*         CALLS  DFINIT, DFREAD, DFTERM.
  
  
 GET      SUBR                     ENTRY/EXIT 
          SA1    DC 
          BX6    X1 
          SA6    NODIR             (X6) <> 0, IF DIRECTIVES OPTIONAL
          SA1    DFINLST           PARAMETER LIST 
          RJ     =XDFINIT          DIRECTIVE FILE INITIALIZE
          SA1    ERR               ERROR FLAG 
          NZ     X1,GET10          IF ERROR 
          SA1    NODIR
          NZ     X1,GET9           IF NO DIRECTIVES FOUND 
 GET1     SA1    DIRFLST           PARAMETER LIST 
          RJ     =XDFREAD          DIRECTIVE FILE READ
          SA1    LEN               DIRECTIVE FILE LENGTH
          MI     X1,GET9           IF NO MORE DIRECTIVES
          SB1    1
          SA2    TXTLENC           CURRENT LENGTH OF ERT
          SX0    6                 NUMBER OF BITS PER CHARACTER 
          IX0    X0*X1             LENGTH OF DIRECTIVE IN BITS
          IX6    X1+X2
          SX2    X6-ERTLENC-1      MAXIMUM LENGTH OF ERT + 1
          MI     X2,GET3           IF TEXT DOES NOT EXCEED ERT LENGTH 
          SA6    ERR               SIGNAL ERROR 
          MESSAGE (=C* MFQUEUE - DIRECTIVE EXCEEDS "ERTLENC" CHARACTERS.
,*),,R
          EQ     GET10             TERMINATE
  
 GET3     SA6    A2 
 NOSBE    IFEQ   OS$NOSBE 
          SX2    X6+9 
          SX3    10D
          IX4    X2/X3             (X4) = ERT LENGTH IN WORDS 
          LX6    6
          BX6    X6+X4             (X6) = 42/0,12/CHARS,6/WORDS 
 NOSBE    ENDIF 
          SA6    DSPEX             UPDATE DSP LENGTH
          SB2    B0                SOURCE FIRST BIT 
          SX2    DIRBUF            SOURCE FIRST WORD ADDRESS
          SA4    TXTDFWA           DESTINATION FIRST WORD ADDRESS 
          ERRNZ  TXTDBIT-TXTDFWA-1 TEST ASSUMPTION
          SA3    A4+B1             DESTINATION FIRST BIT
          SB4    X3                CONCATENATE DIRECTIVE TO ERT 
          RJ     =XMNS=            MOVE NON-OVERLAPPING BIT STRING
          BX6    X4                DESTINATION NEXT WORD ADDRESS
          SA6    A4                SAVE IN TXTDFWA
          SX6    B4                DESTINATION NEXT BIT 
          SA6    A6+B1             SAVE IN TXTDBIT
          EQ     GET1              GET NEXT DIRECTIVE 
  
 GET9     BSS    0
          SA1    DSPEX             LENGTH OF ROUTING TEXT 
          NZ     X1,GET10          IF SOME TEXT READ
 .NOS     IFEQ   OS$NOS 
          SA1    DSPB+11B          CLEAR ADDR OF EXPLICIT ROUTING TEXT
          MX6    -18
          BX6    X6*X1
          SA6    A1 
 .NOS     ENDIF 
          SA1    DC                DC SPECIFIED 
          NZ     X1,GET10          IF DIRECTIVES ARE OPTIONAL 
          MX6    59 
          SA6    ERR               SIGNAL ERROR 
  
 GET10    BSS    0
          RJ     =XDFTERM          DIRECTIVE FILE TERMINATION 
          SB1    1
          SA1    ERR
          ZR     X1,GETX           IF NO ERROR
          ABORT  ,ND
  
* 
*         DFINT PARAMETER LIST
* 
 NODIR    BSSZ   1
  
 DFINLST  BSS    0
          CON    I
          CON    PC 
          CON    PNAME
          CON    INT
          CON    ERR
          CON    NODIR
          CON    0
* 
*         DFREAD PARAMETER LIST 
* 
 DIRFLST  BSS    0
          CON    DIRBUF 
          CON    MXL
          CON    LEN
          CON    0
 PDC      SPACE  4,10 
***       PDC - PROCESS DC PARAMETER. 
* 
*         ENTRY  DC = DISPOSITION CODE, IF SPECIFIED. 
*                B1 = 1.
* 
*         EXIT   DC = 0 (NO DC PARAMETER SPECIFIED).
*                DC = DISPOSITION CODE. 
*                     (DSP PARAMETER BLOCK UPDATED -- 
*                      WORD 1, BITS 35-00 = DC + EC + IC + FLAGS, 
*                      WORD 2, BITS 59-42 = DEST ID (IF DC = IX).)
* 
*                ABORT IF ILLEGAL DC. 
* 
*         USES   A - 3,5,6. 
*                X - 0,3,4,5,6. 
* 
*         MACROS ABORT, MESSAGE.
* 
*         MESSAGES  MFQUEUE - ILLEGAL DC VALUE SPECIFIED. 
  
  
 PDC      SUBR
          SA5    DC                GET DC PARAMETER 
          MX0    42 
          BX6    X0*X5             MASK OFF SEPARATOR 
          SA6    A5                UPDATE DC
          ZR     X6,PDCX           IF NO DC SPECIFIED 
  
          SA3    PDCA              FIRST TABLE ENTRY
          MX0    12 
  
 PDC1     BSS    0
          BX4    X0*X3             MASK DC FROM TABLE 
          IX4    X4-X6
          ZR     X4,PDC2           IF DC VALID
          SA3    A3+B1             NEXT TABLE ENTRY 
          NZ     X3,PDC1           IF NOT END OF TABLE
  
          MESSAGE (=C* MFQUEUE - ILLEGAL DC VALUE SPECIFIED.*),,R 
          ABORT  ,ND
  
 PDC2     BSS    0
          BX4    -X0*X3            MASK NEW DC+EC+IC+FLAGS
          SA5    DSPB+1            DSP PARAM BLOCK, WORD 1
          BX3    X0*X3             MASK MATCHING DC 
          LX0    -24               POSITION MASK (BYTE 2) 
          LX3    12                POSITION MATCHING DC 
          BX6    -X0*X5            CLEAR OLD DC (BYTE 2)
          BX6    X6+X4             ADD NEW DC + EC + IC + FLAGS 
          SX3    X3-2RIX
          NZ     X3,PDC3           IF MATCHING DC NOT *IX*
          SA6    A5                UPDATE WORD 1
  
*         SET SID(SLID) = DID(DLID).
  
          MX0    18                MASK FOR DID 
          SA5    A5+B1             DSP PARAM BLOCK, WORD 2
          BX6    -X0*X5            CLEAR OLD SID/SLID 
          LX5    18                POSITION DID 
          BX5    X0*X5             MASK DID 
          BX6    X6+X5             SID = DID
  
 PDC3     BSS    0
          SA6    A5                UPDATE DSP PARAM BLOCK, WORD 1 OR 2
          EQ     PDCX              RETURN 
  
*         TABLE OF VALID MFQUEUE DC PARAMETER VALUES. 
*         EACH ENTRY HAS THE FORMAT --
*                12/MFQUEUE DC PARAMETER VALUE. 
*                12/0.
*                12/DC MNEMONIC FOR DSP PARAM BLOCK (REPLACEMENT).
*                 3/EC VALUE FOR DSP PARAM BLOCK (ADDITION).
*                 1/0.
*                 2/IC VALUE FOR DSP PARAM BLOCK (ADDITION).
*                18/FLAGS FOR DSP PARAM BLOCK (ADDITION). 
* 
*             MFQUEUE DC       DSP DC  EC      IC    FLAGS
*                     --           --  --      --    -----
 PDCA     BSS    0
          VFD    12/2LCP,12/0,12/2LPU,3/0,1/0,2/0,18/0        PUNCH 
          VFD    12/2LPU,12/0,12/2LPU,3/0,1/0,2/0,18/0        PUNCH 
          VFD    12/2LPH,12/0,12/2LPU,3/0,1/0,2/0,18/0        PUNCH 
          VFD    12/2LIN,12/0,12/2LIN,3/0,1/0,2/0,18/0        INPUT 
          VFD    12/2LIX,12/0,12/2LIN,3/0,1/0,2/0,18/0        INPUT 
          VFD    12/2LLP,12/0,12/2LPR,3/0,1/0,2/0,18/0        PRINT 
          VFD    12/2LPR,12/0,12/2LPR,3/0,1/0,2/0,18/0        PRINT 
          VFD    12/2LPB,12/0,12/2LPU,3/1,1/0,2/2,18/1S8+1S7  PUNCH BIN 
          VFD    12/2LSB,12/0,12/2LPU,3/1,1/0,2/2,18/1S8+1S7  PUNCH BIN 
          VFD    12/2LP8,12/0,12/2LPU,3/2,1/0,2/2,18/1S8+1S7  PUNCH 80C 
  
 .NOS     IFEQ   OS$NOS 
          VFD    12/2LSP,12/0,12/2LPL,3/0,1/0,2/2,18/1S8      PLOT BIN
 .NOS     ELSE
          VFD    12/2LSP,12/0,12/2LPT,3/0,1/0,2/2,18/1S8      PLOT BIN
 .NOS     ENDIF 
  
          VFD    60/0              END OF TABLE 
 PDD      SPACE  4,10 
***       PDD - PROCESS DD PARAMETER. 
* 
*         ENTRY  DD CONTAINS DD PARAMETER.
*                (B1) = 1.
* 
*         EXIT   DSP PARAMETER BLOCK UPDATED. 
*                ABORT IF ILLEGAL DD. 
* 
*         USES   A - 3,5,6. 
*                X - 0,1,3,4,5,6. 
* 
*         MACROS ABORT, MESSAGE.
* 
*         MESSAGES  MFQUEUE - ILLEGAL DD VALUE SPECIFIED. 
  
  
 PDD      SUBR                     ENTRY/EXIT 
          SA5    DD                GET DD PARM SPECIFIED
          MX0    42 
          BX5    X0*X5             MASK OFF SEPARATOR 
          ZR     X5,PDDX           IF NO DD SPECIFIED 
  
          SA3    PDDA              POINT TO LEGAL DD VALUES 
 PDD10    BSS    0
          IX4    X5-X3
          ZR     X4,PDD20          IF LEGAL VALUE 
          SA3    A3+B1             INCREMENT POINTER
          NZ     X3,PDD10          IF NOT AT END
          MESSAGE (=C* MFQUEUE - ILLEGAL DD VALUE SPECIFIED.*)
          ABORT  ,ND
  
 PDD20    BSS    0
 .NOS     IFEQ   OS$NOS 
          SX1    B1 
          SA3    DSPB+7 
          BX6    X3+X5             ADD DD PARAMETER 
          BX6    X6+X1             SET DD PRESENT 
          SA6    A3 
 .NOS     ELSE
          LX5    12                SHIFT TO LOW ORDER 
          BX6    X5 
          SA6    DSPX+54           STORE DD IN PARMS TO DSP 
 .NOS     ENDIF 
          EQ     PDD               EXIT 
  
 PDDA     CON    2LC6 
          CON    2LC8 
          CON    2LUU 
          CON    2LUS 
          CON    0
 PST      SPACE  4,10 
***       PST - PROCESS STAGING MF ID.
* 
*         ENTRY  ST CONTAINS STAGING PARAMETER. 
* 
*         EXIT   DSP PARAMETER BLOCK UPDATED. 
*                ABORT IF ST ILLEGAL OR UNSPECIFIED.
* 
*         USES   A - 3, 4, 5, 6, 7
*                B - 3, 4, 5
*                X - 0, 3, 4, 5, 6, 7 
* 
*         MACROS ABORT, GETLIDA, MESSAGE. 
* 
*         MESSAGES  MFQUEUE - ILLEGAL ST VALUE SPECIFIED. 
*                   MFQUEUE - ST PARAMETER MUST BE SPECIFIED. 
  
  
 PST      SUBR                     ENTRY/EXIT 
          SA5    ST                GET STAGING MF ID
          MX0    42 
          BX5    X0*X5             MASK OFF SEPERATOR 
          ZR     X5,PST15          IF ST NOT SPECIFIED
* 
*         TEST LEGALITY OF STAGING ID 
* 
          MX3    54 
          MX4    18 
          BX4    -X4*X5 
          NZ     X4,PST20          IF MORE THAN 3 CHARS 
          SB4    3
          SB5    B0 
 PST10    BSS    0
          LX5    6
          BX4    -X3*X5            GET A CHARACTER
          SB3    X4-1RA 
          LT     B3,PST20          IF NON-ALPANUMERIC 
          SB3    B3-1R9+1RA 
          GT     B3,PST20          IF NON-ALPANUMERIC 
          SB5    B5+B1
          LT     B5,B4,PST10       IF NOT DONE
* 
*         PUT STAGING MF ID INTO DSP PARM BLOCK 
* 
          SA4    DSPB+2 
          LX5    24 
          BX6    X5+X4             INSERT IN DSP PARM BLOCK 
          SA6    A4 
 .NOS     IFEQ   OS$NOS 
          SA3    LIDP 
          LX5    18 
          BX6    X5+X3
          SA6    A3 
          GETLIDA  LIDP            VALIDATE LID 
          SA3    LIDP 
          LX3    59-40             POSITION LINKED ATTRIBUTE
          BX4    X3 
          LX3    59-36-59+40       POSITION STORE-FORWARD LINKED ATTR 
          BX4    X3+X4
          LX3    59-35-59+36       POSITION LOOPBACK ATTRIBUTE
          BX4    X3+X4
          PL     X4,PST20          IF NOT LINKED, S/F LINKED, NOR LOOPB 
 .NOS     ENDIF 
          EQ     PST               EXIT 
  
 PST15    BSS    0
          MESSAGE (=C* MFQUEUE - ST PARAMETER MUST BE SPECIFIED.*),,R 
          EQ     PST30
  
 PST20    BSS    0
          MESSAGE (=C* MFQUEUE - ILLEGAL ST VALUE SPECIFIED.*),,R 
  
 PST30    BSS    0
          ABORT  ,ND
  
          END 
