         PROC  &P,0,&LOC1=0,&LOC2=0,&LOC3=0,&LOC4=0,&LOC5=0,&LOC6=0,&LOXCTA00010
               C7=0,&LOC8=0,&LOC9=*,&LOC10=*,&LOC11=*,&LOC12=0,&LOC13=0 CTA00020
MA#P13   NAME                                                           CTA00030
CTABLE   NAME                                                           CTA00040
         USING *,4                                                      CTA00050
CTDATE   DC    X'02057300'           DATE AND VERSION MMDDYYVV          CTA00060
CTIND    DC    3F'0'              INDICATOR BITS FIELD                  CTA00070
CTIND1   EQU   CTIND                                                    CTA00080
JIWE     EQU   1*/7               WARNING ERROR                         CTA00090
JIFE     EQU   1*/6               FATAL ERROR                           CTA00100
JISC     EQU   1*/5               SINGLE CYCLE SORT                     CTA00110
JITN     EQU   1*/4               TAPE 'NO' LABELS                      CTA00120
JIDP     EQU   1*/3               DROC PRESENT                          CTA00130
JIDD     EQU   1*/2               DROC = DELETE                         CTA00140
JIRP     EQU   1*/1               RSOC PRESENT                          CTA00150
JIVR     EQU   1*/0               VARIABLE LENGTH RECORDS               CTA00160
CTIND2   EQU   CTIND+1                                                  CTA00170
JIFT     EQU   1*/7               TAPE PRESENT                          CTA00180
JIFD     EQU   1*/6               DISK PRESENT                          CTA00190
JITSG    EQU   1*/5                  T STRING METHOD                    CTA00200
JIMC     EQU   1*/4               MULTICYCLE SORT                       CTA00210
JIPMC    EQU   JIMC                                                     CTA00220
JINTRN   EQU   1*/3               INTERNAL ONLY SORT                    CTA00230
JICOB    EQU   1*/2                COBOL SO-T                           CTA00240
JIBIGT   EQU   1*/0                  ALL TAPES USED                     CTA00250
CTIND3   EQU   CTIND+2                                                  CTA00260
JIDCK    EQU   1*/7               NO DISK CHECKSUM                      CTA00270
JITCK    EQU   1*/6               NO TAPE CHECKSUM                      CTA00280
JI7L     EQU   1*/5               7-LEVEL TAPE PRESENT                  CTA00290
JISHAR   EQU   1*/4               SHARE FILE PRESENT                    CTA00300
JIRESV   EQU   1*/3               RESERV FILE PRESENT                   CTA00310
JITPSY   EQU   1*/2                  TAPE SYSTEM INDICATOR              CTA00320
JINOCT   EQU   1*/1               SUPRESS RECORD IN-OUT COUNT CHECK     CTA00330
JIRZBI   EQU   1*/0               RCSZ/BIN ERROR OCCURRED IN SM$ORT00   CTA00340
CIPHAM   EQU   CTIND+3                                                  CTA00350
CTREDS   EQU   CIPHAM                                                   CTA00360
JIREDO   EQU   1*/7               REDO PRESENT                          CTA00370
JIRESU   EQU   1*/6               RESUME PRESENT                        CTA00380
JIDEXT   EQU   1*/5               DOEXT PRESENT                         CTA00390
JIMCA    EQU   1*/4               M/C ACCEPT MODULE OPEN                CTA00400
JIMCM    EQU   1*/3               MERGE MODULE REQUIRED                 CTA00410
JIDBRK   EQU   1*/2               DISK CYCLE BREAK INDICATOR            CTA00420
JICAREA  EQU   1*/1               LIST CONFIGURATION                    CTA00430
JISEL    EQU   1*/0                    SELECTION SORT                   CTA00440
CIPHAS   EQU   CTIND+4                                                  CTA00450
JIPTP    EQU   1*/7               TAPE ACCEPT MODULE MODULE OPEN        CTA00460
JIPTPM   EQU   1*/6               TAPE MERGE MODULE REQUIRED            CTA00470
JIPD     EQU   1*/5               DISK ACCEPT MODULE OPEN               CTA00480
JIPDM    EQU   1*/4               DISK MERGE MODULE REQUIRED            CTA00490
JIEOB    EQU   1*/3               END OF BATCH (MR$SRT EXECUTED)        CTA00500
JIBRK    EQU   1*/2               MULTICYCLE USER BREAK (MR$BRK EXEC)   CTA00510
JIPEB    EQU   JIEOB++JIBRK                                             CTA00520
JINODA   EQU   1*/1               NO DATA RECEIVED                      CTA00530
JICAOPT  EQU   1*/0               CALCAREA OPR OPTION                   CTA00540
CTPMCI   EQU   CTIND+5                                                  CTA00550
JIAUTO   EQU   1*/7               AUTO SORT                             CTA00560
JIDOA    EQU   1*/6               DOA PART A SORT                       CTA00570
JIDOM    EQU   1*/5               DOM PART M SORT                       CTA00580
JIDOF    EQU   1*/4               DOF PART F SORT                       CTA00590
JIPASS   EQU   1*/3               RESUME PASS RECOVERY                  CTA00600
JICYCL   EQU   1*/2               CYCLE RESUME OR REDO                  CTA00610
JIMERG   EQU   1*/1               MERGE RESUME OR REDO                  CTA00620
JIFINL   EQU   1*/0               FINAL RESUME                          CTA00630
SASTSW    EQU   CTIND+6                                                 CTA00640
SADICH   EQU   CTIND+6                                                  CTA00650
SAEQ     EQU   CTIND+6                                                  CTA00660
SAREV    EQU   1*/4               REVERSE SEQUENCE OF NEXT STRING       CTA00670
SAFT     EQU   1*/3               INDICATES NOT FIRST STRING OF A CYCLE CTA00680
JBDITP   EQU   CTIND+7            HOLDS POLYPHASE SEQUENCE DIRECTION    CTA00690
CTIND9   EQU   CTIND+8                                                  CTA00700
JIMEG    EQU   1*/7               MERGE ONLY APPLICATION                CTA00710
JIADROT  EQU   1*/6               TAG SORT OPTION                       CTA00720
JISEGIN  EQU   1*/5               USER INPUT ROUTINE                    CTA00730
JISEGOT  EQU   1*/4               USER OUTPUT ROUTINE                   CTA00740
JIIPM    EQU   1*/3 OVERLAP DISK MODULES INPUT ROUTINES                 CTA00750
JIOPM    EQU   1*/2               OVERLAP DISK MODULES OUTPUT ROUTINES  CTA00760
JITGRET  EQU   1*/1               TAG ADDRESS RETURN OPTION             CTA00770
JIDAOV   EQU   1*/0                  OVERLAP DISC ACCEPT                CTA00780
CTIND10  EQU   CTIND+9                                                  CTA00790
JISEQ    EQU   1*/7                                                     CTA00800
ERMSK    EQU 0                                                          CTA00810
CTPTCH   DC    XL6'0'             PATCH AREA                            CTA00820
*                                 FIRST TWO BYTES USED FOR DEBUGGING    CTA00830
*                                 TYPEOUTS.  IF MODULE BIT SET, THEN    CTA00840
*                                 ALTER MESSAGE TYPED OUT BY THE        CTA00850
*                                 SPECIFIED MODULE                      CTA00860
*                                                                       CTA00870
*                                 BYTE 0          BYTE 1                CTA00880
*                                 ------          ------                CTA00890
*                                 2**0 SM$ORT09   2**0 SM$ORT01         CTA00900
*                                 2**1 SM$ORT10   2**1 SM$ORT02         CTA00910
*                                                 2**2 SM$ORT03         CTA00920
*                                                 2*2**3M$ORT04         CTA00930
*                                                 2**4 SM$ORT05         CTA00940
*                                                 2**5 SM$ORT06         CTA00950
*                                                 2**6 SM$ORT07         CTA00960
*                                                 2**7 SM$ORT08         CTA00970
SACRC    DC    PL6'0'             WORKING COUNT AREA FOR KEEPING AUTO   CTA00980
*                                 OR DOA RECORDS PER CYCLE COUNT.  WHEN CTA00990
*                                 THIS OPTION IS PRESENT AND SACRC =    CTA01000
*                                 CTRPCLY, THE SORT INITIATES AN        CTA01010
*                                 AUTOMATIC CYCLE BREAK.  THE FIELD IS  CTA01020
*                                 INCREMENTED FOR EACH RECORD UP TO     CTA01030
*                                 THE LIMIT OF CTRPCYL.  IT IS RESET    CTA01040
*                                 TO ZERO FOR EACH CYCLE.               CTA01050
CTCURCAP DC    F'0'               THE CURRENT TAPE STORAGE CAPACITY IN  CTA01060
*                                 BYTES.  INCREMENTED BY USER RECORD LN CTA01070
*                                 FOR EACH RECORD.  WHEN CTCURCAP NOT<  CTA01080
*                                 CTTCAP, A MULTICYCLE BREAK IS INIT.   CTA01090
*                                 FIELD USED ONLY IN MULTICYCLE SORT.   CTA01100
CTPASS   DC    X'000C000C'        CURRENT PASS RECOVERY VALUE.  BYTES   CTA01110
*                                 0-1 = PASS COUNT.  BYTE 2-3 TEMP      CTA01120
*                                 STORAGE FOR VALUE WHEN A RESUME PASS  CTA01130
*                                 IS INITIATED.                         CTA01140
CTFREC   DC    PL6'1'             FROM RECORD COUNT                     CTA01150
CTPTCH$  DC    A(0)                ADDRESS OF PATCH ROUTINE             CTA01160
DC##VARB EQU   X'08'               DATA MANAGEMENT VLR FLAG             CTA01170
DC##FIXB EQU   X'10'               DATA MANAGEMENT FLR FLAG             CTA01180
R0$      EQU   0                   COMPATIBILITY REGISTER NOTATION      CTA01190
R1$      EQU   1                                                        CTA01200
R2$      EQU   2                                                        CTA01210
R3$      EQU   3                                                        CTA01220
R4$      EQU   4                                                        CTA01230
R5$      EQU   5                                                        CTA01240
R6$      EQU   6                                                        CTA01250
R7$      EQU   7                                                        CTA01260
R8$      EQU   8                                                        CTA01270
R9$      EQU   9                                                        CTA01280
RA$      EQU   10                                                       CTA01290
RB$      EQU   11                                                       CTA01300
RC$      EQU   12                                                       CTA01310
RD$      EQU   13                                                       CTA01320
RE$      EQU   14                                                       CTA01330
RF$      EQU   15                                                       CTA01340
CTRPCYL  DC    PL6'0'             AUTO OR DOA REC. PER CYCLE, ZERO      CTA01350
*                                 IMPLIES OPTION ABSENT.                CTA01360
CTRECN   DC    PL6'0'             CUMULATIVE RECORD COUNT.  USED FOR    CTA01370
*                                 SINGLE CYCLE, DO A & AUTO SORTS ONLY. CTA01380
CTCYL    DC    PL2'0'             CURRENT CYCLE NUMBER.                 CTA01390
SADRCT   DC    PL6'0'             CUMULATIVE COUNT OF RECORDS DELETED.  CTA01400
CTRCSZ   DC    H'0'               USER RECORD SIZE                      CTA01410
CTBIN    DC    H'0'               USER OR CALCULATED BIN SIZE           CTA01420
CTTCAP   DC    F'0'               TAPE BYTE CAPACITY                    CTA01430
CTDCAP   DC    F'0'               DISK CAPACITY                         CTA01440
CTSGINNM DC    A(0)                  ADR OF SEGIN MODULE NAME           CTA01450
CTSGOTNM DC    A(0)                  ADR OF SEGOUT MODULE NAME          CTA01460
CTSEGIN  DC    F'0'               LENGTH OF USER INPUT ROUTINE          CTA01470
CTSEGOT  DC    F'0'               LENGTH OF USER OUTPUT ROUTINE         CTA01480
CTSMXBI  DC    F'0'                  MAX USER INPUT BLOCK               CTA01490
CTSMXBO  DC    F'0'                  MAX USER OUTPUT BLOCK              CTA01500
CTSIZE   DC    F'0'               APPROX NUMBER OF RECORDS TO BE SORTED CTA01510
CTOUT    DC    A(0)               USER OUT ADDRESS                      CTA01520
CTEND    DC    A(0)               USER FIN ADDRESS                      CTA01530
CTDEXT   DC    A(0)               USER DOEXT ADDRESS                    CTA01540
CTCONV   DC    A(0)               CONVERSION ROUTINE ADDRESS            CTA01550
CTTAG    DC    A(0)               TAG BUILD ADDRESS                     CTA01560
JTYP     DC    X'0'               TAPE DEVICE TYPES                     CTA01570
CTDISN   DC    H'0'               COUNT OF DTF ADDRESSES IN CTDLIST     CTA01580
CTAUTOID DC    CL2'  '               USER AUTO, DOA OR DOM LABEL CODE   CTA01590
CDMORD   DC    H'0'               ORDER OF DISK MERGE                   CTA01600
CTFMORD  DC    H'0'               ORDER OF DISK FINAL MERGE             CTA01610
CTMORD   DC    H'0'               ORDER OF TAPE MERGE                   CTA01620
CTDBLK   DC    H'0'               DISK BLOCK SIZE                       CTA01630
CTBUCT   DC    H'0'                  TAPE BUCKET SIZE                   CTA01640
CTSTRNGS DC    H'0'               COUNT OF STRINGS                      CTA01650
CTBLKT   DC    H'0'               TAPE BLOCK SIZE                       CTA01660
JCNTP    DC    H'0'               NUMBER OF POLYPHASE COLLATION TAPES   CTA01670
JTPCNT   EQU   JCNTP                                                    CTA01680
SANOTP   EQU   JCNTP                                                    CTA01690
CTMBUC   DC    H'0'               MULTICYCLE TAPE BUCKET SIZE           CTA01700
CTMBLK   DC    H'0'               MULTI CYCLE TAPE BLOCK SIZE           CTA01710
JCMCTP   DC    H'0'               NUMBER OF TAPES ASSIGNED              CTA01720
JTPMAX   EQU   JCMCTP                                                   CTA01730
JDOATP   DC    H'0'               NUMBER OF DOA MERGE TAPES             CTA01740
* CTBUFFIO IS A MASK TO CONTROL INDEP BUFFERING                         CTA01750
* IF BOTH SINGLE AND DOUBLE BUFFERING IS SPECIFIED FOR IN OR OUT SINGLE CTA01760
*      WILL OVERRIDE DOUBLE                                             CTA01770
*    01=SINGLE BUFFER INPUT                                             CTA01780
*    02=DOUBLE BUFFER INPUT                                             CTA01790
*    10=SINGLE BUFFER OUTPUT                                            CTA01800
*    20=DOUBLE BUFFER OUTPUT                                            CTA01810
CTBUFFIO DC    X'22'          DOUBLE BUFFER INDEP INPUT AND OUTPUT      CTA01820
         DS    0F             ALIGN ON FULL WORD                        CTA01830
CTTS1    DC    XL9'0'             WORK AREA USED BY COMPARE ROUTINE     CTA01840
JPHLIB   EQU   CTTS1              HOLD USER LOAD DEVICE WHEN SORT IS    CTA01850
*                                     LOADING A SORT MODULE FROM SYSRES CTA01860
CTTS2    DC    XL27'0'                                                  CTA01870
CTTS2A   DC    F'0'                                                     CTA01880
CTPOS    DC    H'01'              USED TO SET COND. CODE HIGH           CTA01890
CTNEG    DC    X'FFFF'            USED TO SET COND. CODE LOW            CTA01900
CTPK1    DC    X'10'              WORKAREA FOR COMPARE ROUTINE          CTA01910
CTPK2    DC    X'10'              WORKAREA FOR COMPARE ROUTINE          CTA01920
CTPT     DC    AL1(RT0+RT1+RT2+RT3+RT4)                                 CTA01930
CTCLR    DC    AL1(RT2)                                                 CTA01940
CTCLI    DC    AL1(RT3+RT4)                                             CTA01950
CTTPA    DC    6F'0'          TAPE PUB TABLE                            CTA01960
CTDID    DC    6C'    '       DID TAB                                   CTA01970
CTTAPE   DC    6XL6'0'        TAPE ASSIGNMENT TAB                       CTA01980
SDCNT    DC    6H'0'              POLYPHASE DUMMY STRING COUNTS         CTA01990
CTDTAB   DS    XL150              POLYPHASE STRING DISTRIBUTION TABLE   CTA02000
CTFSTSTR DS    F                  DISK ADDR 1ST STRING                  CTA02010
CTDLIST  DC    8F'0'                 DISC WORK FILES DTF ADDRESSES      CTA02020
CTDOPT   DC    F'0'                ADDRESS OF OPTIONAL LIST OF DISC     CTA02030
*                                  FILE NAMES                           CTA02040
CTIOACI  DC    F'0'                ADR OF IOAC INPUT WORK AREA          CTA02050
CTIOACO  DC    F'0'                ADR OF IOAC OUTPUT WORK AREA         CTA02060
********************* USER PROC CALL BRANCH TABLE ********************  CTA02070
CTOPN    DC    A(&LOC1)           MR$OPN ADDRESS  (CODE 0)              CTA02080
CTREL    DC    A(&LOC2)           MR$REL ADDRESS  (CODE 4)              CTA02090
CTSRT    DC    A(&LOC3)           MR$SRT ADDRESS  (CODE 8)              CTA02100
CTRET    DC    A(&LOC4)           MR$RET ADDRESS (CODE 12)              CTA02110
CTBRK    DC    A(&LOC5)           MR$BRK ADDRESS (CODE 16)              CTA02120
CTREC    DC    A(&LOC6)           MR$REC ADDRESS (CODE 20)              CTA02130
CTMREL   DC    A(&LOC7)           MG$REL ADDRESS (CODE 24)              CTA02140
CTMRET   DC    A(&LOC8)           MG$RET ADDRESS (CODE 28)              CTA02150
CTMAXBAS DC    X'FFFFFFFF'        MIN BASE ADDRESS OF 2ND MODULE AREA   CTA02160
CTMBS0   DC    A(0)               SEGIN/SEGOUT LOAD ADDRESS             CTA02170
CTMBS1   DC    A(0)               BASE LOAD ADDRESS OF 1ST MODULE AREA  CTA02180
CTBASE   DC    A(0)               BASE ADDRESS OF CONTROL MODULE        CTA02190
CTABL    ST    R4$,&LOC9          BASE ADDRESS OF CONTROL TABLE         CTA02200
CTROUT   DC    A(0)                  ADDRESS OF CTROUTE IN MR$ORT       CTA02210
CTORTBSE DC    A(0)                  MR$ORT BASE                        CTA02220
CTMBS2   DC    A(0)               BASE LOAD ADDRESS OF 2ND MODULE AREA  CTA02230
CJPHA2   DC    A(&LOC12)                ADDRESS OF JPHA2                CTA02240
CJPHA3   DC    A(&LOC13)                ADDRESS OF JPHA3                CTA02250
CTREGSAV DS    18F                   REG SAVE AREA (COMPARE AND SELECT) CTA02260
CTREGS   DS    6F                 USER REGISTERS 0-5                    CTA02270
CTREG6   DS    F                     USER REGISTERS 6-13                CTA02280
CTREG7   DS    7F                    USER REGISTERS 7-13                CTA02290
CTREGE   DS    F                  USER REGISTERS14                      CTA02300
CTMORT   DS    F                  USER REGISTERS15                      CTA02310
CTDROC   DC    F'0'               USER DROC ADDRESS                     CTA02320
CTUPPER  DC    A(0)               UPPER BOUND OF SORT AREA              CTA02330
CTPTTOP  DC    A(0)               SORT PARAMETER TABLE ADDRESS          CTA02340
CTIN     EQU   CTREGE+1           USER IN ADDRESS                       CTA02350
SKDTB    DC    A(0)               NEXT STRING DSTRBTN LAYER IN STDTAB   CTA02360
JATINX   DC    F'0'               BYTE 0 - CTTAPE TAPE PACKET POINTER   CTA02370
*                                 BYTE 1-3 - TAPE PACKET ADDRESS        CTA02380
CTSHARE  DC    CL8'SORTIN1'       LFD OF USER SHARE FILE                CTA02390
CTSHWKT  DC    CL2'00'            LFD OF SM0X WORK FILE FOR SHARE       CTA02400
CTRESRV  DC    CL8'SORTOUT'       LFD OF USER RESERVE FILE              CTA02410
CTRESWK  DC    CL2'00'            LFD OF SM0X WORK FILE FOR RESERVE     CTA02420
         DS    6F                 PAD AREA                              CTA02430
CTDCKRGS DC    2F'4'              DISK CKSUM REGISTERS                  CTA02440
CTDCKLST DS    F                  DISK CHSUM OFFSET TO LST WRD IN BUFF  CTA02450
CTDCKSCT DS    H                  DISK CKSUM SHIFT COUNT                CTA02460
         DS    H                  PADAREA                               CTA02470
SAEXIT   LM    R0$,RF$,CTREGS     LOAD USER REGISTERS                   CTA02480
         BR    RE$                RETURN TO USER                        CTA02490
JPHLDM   B     &LOC10             LOAD MODULE ENTRANCE                  CTA02500
JLDNAM   DC    CL10'  SM$01300'         MODULE NAME                     CTA02510
********************* COMMON TYPEOUT ROUTINE ************************   CTA02520
CTOPRJ   MVI   CTOPRA#+1,X'00'          SET EOJ SWITCH                  CTA02530
         LA    R1$,CTOPRM#              SET POINTER TO MSG AREA         CTA02540
         MVI   0(R1$),RT3               FATAL ERROR FLAG                CTA02550
         MVC   5(4,R1$),0(RF$)          MOVE MESSAGE CODE TO PACKET DW  CTA02560
         MVC   2(2,R1$),4(RF$)          MOVE MESSAGE ID TO PACKET   DW  CTA02570
         ST    RF$,CTTS2A               SAVE CALLING RETURN ADDRESS     CTA02580
         BAL   RF$,CTROUTE              ROUTE MESSAGE                   CTA02590
         L     RF$,CTTS2A               RESTORE LINKAGE                 CTA02600
         CLI   CTOPRA#+1,X'00'          TEST FOR EOJ SWITCH             CTA02610
         BE    CTFABRT                  YES   ABORT JOB                 CTA02620
         UNPK  CTOPRM#+9(11),CTRECN(6)                                  CTA02630
         OI    CTOPRM#+19,X'F0'         SET UP RECORD COUNTS MSG        CTA02640
         UNPK  CTOPRM#+20(11),SADRCT(6)                                 CTA02650
         OI    CTOPRM#+30,X'F0'         REMOVE SIGN FOR DISPLAY     DW  CTA02660
         MVI   CTOPRM#+31,X'08'         SET END OF PACKET SENTINAL  DW  CTA02670
CTCLAS   OI    CTOPRM#,RT3              SET MSG CLASS TO FATAL ABORT    CTA02680
         MVC   CTOPRM#+2(2),=H'182'     MOVE MSG ID TO PACKET           CTA02690
         MVC   CTOPRM#+5(4),=C'AI86'    MOVE MESSAGE CODE TO PACKET DW  CTA02700
         B     CTLDR1$                                                  CTA02710
CTFABRT  OI    CTOPRM#,RT3              SET MSG CLASS TO FATAL ABORT    CTA02720
         MVC   CTOPRM#+2(2),=H'146'     MOVE MSG ID TO PACKET           CTA02730
         MVC   CTOPRM#+5(4),=C'AF90'    MOVE MESSAGE CODE TO PACKET     CTA02740
         B     CTLDR1$                                                  CTA02750
CTOPR    MVI   CTOPRM#,RT3              SET MESSAGE TO FATAL ABORT      CTA02760
*                                       NON-FATAL ABORT                 CTA02770
         MVC   CTOPRM#+5(4),0(RF$)      MOVE MESSAGE CODE TO PACKET DW  CTA02780
         MVC   CTOPRM#+2(2),4(RF$)      MOVE MESSAGE ID TO PACKET       CTA02790
CTLDR1$  LA    R1$,CTOPRM#              SET POINTER TO MSG AREA         CTA02800
         ST    RF$,CTTS2A               SAVE CALLING RETURN ADDRESS     CTA02810
         BAL   RF$,CTROUTE              ROUTE MESSAGE                   CTA02820
         L     RF$,CTTS2A               RESTORE RETURN LINK             CTA02830
CTOPRA#  B     6(0,RF$)                 RETURN TO CALLER            DW  CTA02840
CTEOJ    CANCEL                                                         CTA02850
CTOPRM#  DC    X'01'                                                    CTA02860
         DC    C'$'                                                     CTA02870
         DC    X'FFFF'                                                  CTA02880
         DC    C'/XXXX'                                                 CTA02890
         DC    X'08'                                                    CTA02900
         DC    CL61' '                                                  CTA02910
*                                                                       CTA02920
*        *** NO DATA ENTRANCE FOR INTERNAL                              CTA02930
*                                                                       CTA02940
SANONE   OI    CIPHAS,JINODA      MARK NO DATA                          CTA02950
*                                                                       CTA02960
*        *** PHASE OVERLAY ENTRY                                        CTA02970
*                                                                       CTA02980
CTPHAS   B     &LOC11             BRNCH TO CNTRL MODULE OVLAY ROUTINE   CTA02990
CTETOA   DC    A(0)               EBCDIC TO ASCII CONV TABLE ADDR       CTA03000
CTUSEQ1  DC    A(0)               USER'S CONVERSION 'TO' SEQ TBLE ADDR  CTA03010
CTATOE   DC    A(0)               ASCII TO EBCDIC CONV TABLE ADDR       CTA03020
CTUSEQ2  DC    A(0)               USER'S CONVERSION 'FROM' SEQ TBLE AD  CTA03030
* SAMOVE IS GENERALIZED MOVE ROUTINE                                    CTA03040
*        AT ENTRY  R1$ = # OF BYTES                                     CTA03050
*                  RB$ =  FROM ADDR                                     CTA03060
*                  RC$ =  TO ADDR                                       CTA03070
*                  RF$ =  EXIT                                          CTA03080
SAMOVE   SH    R1$,*+16           # BYTES MINUS 256                     CTA03090
         BNH   SAMOVA             # BYTES LE 256? YES, SAMOVA           CTA03100
         MVC   0(256,RC$),0(RB$)  MOVE 256 BYTES                        CTA03110
         LA    RB$,256(RB$,0)     INCREMENT                             CTA03120
         LA    RC$,256(RC$,0)       ADDRESSES                           CTA03130
         B     SAMOVE             REPEAT                                CTA03140
SAMOVA   LA    R1$,255(0,R1$)     # OF BYTES + 256                      CTA03150
         STC   R1$,*+5            SET MVC LENGTH                        CTA03160
         MVC   0(1,RC$),0(RB$)    MOVE REST OF RECORD                   CTA03170
         LA    RB$,1(R1$,RB$)     FORM NEXT BYTE MOVE ADDRESS           CTA03180
         BR    RF$                RETURN                                CTA03190
         LTORG                       FORCE CTABLE LITERALS HERE         CTA03200
* (CTROUTE)                                                             CTA03210
*            USAGE'THIS ROUTINE IS RESPONSIBLE FOR ALL MESSAGE OUTPUT   CTA03220
*                  THE FLAGS IN THE CLASS CODE(SUPPLIED BY CALLING MOD) CTA03230
*                  ARE MATCHED AGAINST THE FLAGS IN THE CONTROL TABLE   CTA03240
*                  WHICH CONTAIN USER PRINT OPTIONS.  THUS ONLY APPROP- CTA03250
*                  RIAT MESSAGES ARE ROUTED TO THE PRINTER AND/OR CRT.  CTA03260
*                                                                       CTA03270
*            INPUTS' R1$ = PACKET ADDRESS                               CTA03280
*                    RF$ = LINK                                         CTA03290
*                     ************************                          CTA03300
*             PACKET  * CLASS / LNGTH / MSG  *                          CTA03310
*             FORMAT  * FLAGS / MSG   / TEXT *                          CTA03320
*                     *       /       /      *                          CTA03330
*                     ************************                          CTA03340
*               BYTE  /0      /1      /2    N                           CTA03350
*                                                                       CTA03360
*                   CLASS CODE'                                         CTA03370
*                        RT0 2**0=WRNG,NON-FATAL,END MSG                CTA03380
*                        RT1 = 2**1=RESUME-REDO                         CTA03390
*                        RT2 = 2**2=MESSAGES THAT REQUIRE REPLYS        CTA03400
*                        RT3 = 2**3=ABORT FATAL                         CTA03410
*                        RT4 = 2**4=MULTI-CYCLE LABELING,OPR INFO MSG   CTA03420
*                                                                       CTA03430
*                   MSG LNGTH = LENGTH OF MSG TEXT                      CTA03440
*                                                                       CTA03450
*                   MSG TEXT  = SYSTEM FORMATED MESSAGE FOR OUTPUT      CTA03460
*                                                                       CTA03470
*             OUTPUT'  R1$ POINTS AT MSG TEXT                           CTA03480
*                      RF$ EXIT                                         CTA03490
*                                                                       CTA03500
*                                                                       CTA03510
*                                                                       CTA03520
CTROUTE  STM   RE$,R6$,CTTS1         SAVE REGISTERS                     CTA03530
         L     R6$,CTORTBSE          LOAD MR$ORT BASE REGISTER          CTA03540
         L     RE$,CTROUT                                               CTA03550
         BALR  R5$,RE$               LINK TO ROUTE RTN IN MR$ORT        CTA03560
         ST    R1,CTTS1+12              STORE R1 IN REG SAVE AREA       CTA03570
         LM    RE$,R6$,CTTS1         RESTORE REGISTERS                  CTA03580
         BR    RF$                   RETURN TO CTROUTE CALLER           CTA03590
RT0      EQU   1                        WARNING,NON-FATAL,END MSGS      CTA03600
RT1      EQU   2                        RESUME REDO MSGS                CTA03610
RT2      EQU   4                        REPLY REQ. MSGS                 CTA03620
RT3      EQU   8                        ABORT FATAL MSGS                CTA03630
RT4      EQU   16                       MULTI-CYCLE,LABELING, INFO MSGS CTA03640
RT5      EQU   32                                                       CTA03650
RT6      EQU   64                                                       CTA03660
RT7      EQU   128                                                      CTA03670
         LTORG                                                          CTA03680
* CTNEQ IS COMMON COMPARE ROUTINE RETURN FOR UNEQUAL RECORDS            CTA03690
CTNEQ    BH    8(0,RF$)           UNEQUAL RETURN                        CTA03700
SCPDR    EQU   CTNEQ                                                    CTA03710
         B     4(0,RF$)                                                 CTA03720
         DS    2H                                                       CTA03730
CTHIGH   DS    4H                                                       CTA03740
CTTS3    DC    H'0'               TEMP STORAGE FOR COMPARE ROUTINE      CTA03750
* SACOMP IS ASSEMBLED AS A CALL TO USER RSOC OWN CODE AND IS OVERLAYED  CTA03760
* WITH A SORT GENERATED COMPARE ROUTINE                                 CTA03770
*              RB$,RC$  = RECORD ADDRESSES                              CTA03780
*              RE$,RF$  = RETURN AND ADDRESS OF RSOC ROUTINE            CTA03790
         CNOP  0,4                                                      CTA03800
SACOMP   STM   R0$,RF$,CTCMPA     SAVE REGISTERS                        CTA03810
         L     RF$,CTRSOC         GET ADDRESS OF RSOC                   CTA03820
         BALR  RE$,RF$            BRANCH TO USER CODE                   CTA03830
         LM    R0$,RF$,14(RE$)    RESTORE REGISTERS                     CTA03840
         BNE   CTNEQ              BRANCH ON NOT EQUAL                   CTA03850
         BR    RF$                EXIT                                  CTA03860
CTRSOC   DC    A(0)               ADDRESS OF RSOC                       CTA03870
CTCMPA   DC    18F'0'             SAVE AREA IF RSOC IS PRESENT          CTA03880
JCEND    EQU   *                  END OF CONTROL TABLE                  CTA03890
CTOPRJ#  EQU   CTOPRJ                                                   CTA03900
         END                                                            CTA03910
