&LABL    PROC                                                           MR$00010
MA#P15   NAME                                                           MR$00020
MR$ORT   NAME                                                           MR$00030
         TITLE '&SYSDATE &SYSTIME 90/30 SORT - MR$ORT  (SG$ORT)'        MR$00040
         CNOP  2,4                                                      MR$00050
&LABL    DS    0H                                                       MR$00060
         USING *,15                                                     MR$00070
MR$ORT   BC    15,MR$SMA                TEST FOR OPENED SORT            MR$00080
         BR    15                       YES - BRANCH TO CONTROL         MR$00090
MR$SK1   DS    7F                       REGISTER SAVE AREA              MR$00100
         B     MR$SMA                                                   MR$00110
MR$ADDR  DC    F'0'                     SORT ADDR OF RECORD COUNT       MR$00120
MR$PUB   DS    CL8                                                      MR$00130
MR$SMA   STM   0,6,MR$SK1               SAVE USER REGISTERS 0 - 6       MR$00140
         BALR  6,0                                                      MR$00150
         USING *,6                                                      MR$00160
         ST    15,MR$SKF                SAVE ENTRY ADDRESS              MR$00170
         GETINF PRE,MR$DSV,4,JP$JOB     GET END OF JOB REGION           MR$00180
         L     5,MR$DSV                                                 MR$00190
         LR    2,1                                                      MR$00200
         L     15,MR$SKF                RELOAD ENTRY ADDRESS            MR$00210
         LM    0,1,MR$SK1               RELOAD R0 AND R1                MR$00220
         LTR   0,0                      IS MR$OPN1 BEING EXECUTED       MR$00230
         BE    MR$SMC                   YES - BRANCH                    MR$00240
         BAL   7,MR$STUFM               PUT OUT ERROR AF00              MR$00250
         DC    C'00'                    MESSAGE CODE                    MR$00260
         DC    H'142'                   MESSAGE ID.                     MR$00270
MR$SMX   LA    1,MR$SMM                                                 MR$00280
         BAL   5,MR$RTX                 OUTPUT ERROR MESSAGE            MR$00290
         LA    1,MR$ERRF                OUTPUT FATAL MESSAGE            MR$00300
         BAL   5,MR$RTX                                                 MR$00310
         CANCEL                                                         MR$00320
MR$STUFM MVC   MR$SMM2(2),0(7)          SET MESSAGE CODE                MR$00330
         MVC   MR$SMM1(2),2(7)          SET MESSAGE CODE                MR$00340
         B     MR$SMX                   CALL MESSAGE ROUTER             MR$00350
MR$LOST  BAL   7,MR$STUFM               OUT PUT AF03                    MR$00360
         DC    C'03'                    MESSAGE CODE                    MR$00370
         DC    H'143'                   MESSAGE ID.                     MR$00380
MR$SMB   LA    1,4(0,1)                 INCREMENT TO NEXT WORD          MR$00390
         CR    1,5                      UPPER BOUND CHECK               MR$00400
         BNL   MR$SMX                                                   MR$00410
MR$SMC   CLI   0(1),X'07'               IS CODE FOR 'STOR' ENTRY - '07' MR$00420
         BE    MR$SMD                   YES - BRANCH                    MR$00430
         CLI   0(1),X'00'               END CENTINAL (00)               MR$00440
         BNE   MR$SMB                   NO - BRANCH                     MR$00450
         L     1,0(0,1)                                                 MR$00460
         LTR   1,1                      TEST CENTINAL BRANCH ENTRY      MR$00470
         BNZ   MR$SMC                   YES BRANCH                      MR$00480
         BAL   7,MR$STUFM               DISPLAY AF10 ERROR              MR$00490
         DC    C'10'                    MESSAGE CODE                    MR$00500
         DC    H'144'                   MESSAGE ID.                     MR$00510
MR$SMD   LM    2,3,0(1)                 LOAD STOR ENTRY ADDR            MR$00520
         N     2,MR$SK2                 TEST STOR ADDR ABSENT           MR$00530
         BNZ   MR$HOP                   NO - BRANCH                     MR$00540
         BAL   7,MR$STUFM               DISPLAY AF07 ERROR              MR$00550
         DC    C'07'                    MESSAGE CODE                    MR$00560
         DC    H'144'                   MESSAGE ID                      MR$00570
MR$HOP   LA    2,7(0,2)                 ADJUST STOR ADDR BOUNDARY       MR$00580
         N     2,MR$SK5                 TO A DOUBLE WORD BOUNDARY       MR$00590
         N     3,MR$SK2                 TEST IF STOR ENTRY BYTES ABSENT MR$00600
         BM    MR$HOP1                  NO - BRANCH                     MR$00610
         LR    3,5                      SET END OF REGION AS UPPER BND  MR$00620
MR$HOP1  SR    3,2                      CALC. NO. OF BYTES AVAILABLE    MR$00630
         LR    4,2                                                      MR$00640
         AR    4,3                                                      MR$00650
         N     4,MR$SK5                 ADJUST UPPER BOUND TO D-WD      MR$00660
         CR    4,5                      SORT AREA GT USER BOUND         MR$00670
         BNH   MR$GKA                   NO - BRANCH                     MR$00680
         BAL   7,MR$STUFM               DISPLAY AF09 ERROR              MR$00690
         DC    C'09'                    MESSAGE CODE                    MR$00700
         DC    H'144'                   MESSAGE ID                      MR$00710
MR$GKA   C     3,MR$SK3                 TEST FOR MIN SORT AREA          MR$00720
         BNL   MR$LRA                   YES BRANCH                      MR$00730
         BAL   7,MR$STUFM               DISPLAY AF08 ERROR              MR$00740
         DC    C'08'                    MESSAGE CODE                    MR$00750
         DC    H'145'                   MESSAGE ID.                     MR$00760
MR$LRA   LR    0,2                      SET LOAD ADDR                   MR$00770
         LA    1,MR$SK6                 SET MODULE NAME                 MR$00780
         LOAD  (1),(0),MR$LOST          LOAD CONTROL MODULE             MR$00790
         ST    2,MR$SK4                                                 MR$00800
         L     15,MR$SKF                RELOAD ENTRY ADDR               MR$00810
         MVC   MR$ORT(4),MR$SMK         ALTER MR$ORT INSTRUCTION        MR$00820
*                                       TO ENTER SORT                   MR$00830
         LR    3,2                      SET ENTRY TO SORT               MR$00840
         LA    5,MR$ROUTE               ADDR OF ROUTE CONTROL           MR$00850
         BR    3                        ENTER SORT CONTROL              MR$00860
MR$SK3   DC    F'8500'                  LENGTH FOR MIN. SORT            MR$00870
MR$SK2   DC    X'00FFFFFF'              ADDR. BYTE MASK                 MR$00880
MR$SK4   DC    F'0'                     ADDR OF SORT CONTROL            MR$00890
MR$SK5   DC    X'FFFFFFF8'                                              MR$00900
MR$SK6   DC    CL8'SM$00000'            NAME OF CONTROL MODULE          MR$00910
MR$SKF   DC    F'0'                                                     MR$00920
MR$SAV8  DS    8F                       SAVE AREA FOR R0 THRU R7        MR$00930
MR$RT0   EQU   1                        *                               MR$00940
MR$RT1   EQU   2                        *                               MR$00950
MR$RT2   EQU   4                        * FLAGS FOR MR$ROUTE            MR$00960
MR$RT3   EQU   8                        *                               MR$00970
MR$RT4   EQU   16                       *                               MR$00980
MR$RT5   EQU   128                      *                               MR$00990
MR$FIVE  DC    F'5'                     THE CONSTANT FIVE               MR$01000
MR$SMK   L     15,MR$SK4-MR$ORT(0,15)   LOAD ADDR OF CONTROL MOD        MR$01010
MR$SMM   DC    X'01'                    ROUTE TO LOG ONLY               MR$01020
         DC    C'$'                     MSG-FIL CENTINAL                MR$01030
MR$SMM1  DC    H'145'                   MSG- ID                         MR$01040
         DC    C'/'                     BEGINNING OF INSERTS            MR$01050
         DC    C'AF'                    MESSAGE MODULE ID               MR$01060
MR$SMM2  DC    C'06'                    MESSAGE CODE                    MR$01070
         DC    X'08'                    END OF MSG PACKET               MR$01080
MR$SMMA  DS    CL5                                                      MR$01090
MR$ERRF  DC    X'02'                    ABORT FATAL MESSAGE             MR$01100
         DC    C'$'                                                     MR$01110
         DC    H'146'                                                   MR$01120
         DC    C'/AF01'                                                 MR$01130
         DC    X'08'                                                    MR$01140
MR$ROUTE DC    A(MR$PT)                                                 MR$01150
         DC    A(MR$CLR)                                                MR$01160
         DC    A(MR$CLR1)                                               MR$01170
         DC    A(MR$CLR2)                                               MR$01180
         DC    A(MR$CLR3)                                               MR$01190
         DC    A(MR$CLI)                                                MR$01200
         DC    A(MR$CLI1)                                               MR$01210
         DC    A(MR$CLI2)                                               MR$01220
         OI    0(1),X'80'                                               MR$01230
MR$RTX   ST    13,MR$DSV                SAVE R13                        MR$01240
         STM   14,6,MR$RSVE             SAVE R14 THRU R6                MR$01250
         LR    3,1                      SAVE PACKET POINTER             MR$01260
         LA    1,1(0,1)                 ADVANCE POINTER TO MESSAGE      MR$01270
MR$MSGIN EQU   *                                                        MR$01280
MR$RTA   TM    0(3),MR$RT0+MR$RT1+MR$RT2+MR$RT3+MR$RT4 DEFAULT ALL      MR$01290
         BZ    MR$RTF                   NO LOG DISPLAY                  MR$01300
MR$RTD   TM    0(3),MR$RT2              TEST FOR REPLY          {       MR$01310
    {    BZ    MR$RTC                   NO BRANCH                       MR$01320
         WTLD  (1),5,MR$LDER,REPLY,MR$AREA,5                            MR$01330
         LA    1,MR$AREA                POINT TO RESPONCE AREA          MR$01340
         B     MR$RTN                   RETURN TO CALLER                MR$01350
MR$RTC   TM    0(3),MR$RT3+MR$RT4       TEST FOR WRITE LOG ONLY         MR$01360
         BZ    MR$RTE                   YES BRANCH                      MR$01370
         WTLD  (1),,MR$LDER             DISPLAY ON CONSOL AND LOG       MR$01380
         B     MR$RTN                   RETURN                          MR$01390
MR$RTE   EQU   *                                                        MR$01400
         WTL   (1),,MR$LDER             WRITE MSG TO LOG                MR$01410
         B     MR$RTN                   RETURN TO CALLER                MR$01420
*                                                                       MR$01430
*              WRITE LOG ERROR ROUTINE                                  MR$01440
MR$LDER  CH    0,=X'0042'               TEST FOR NO MSG IN FILE         MR$01450
         BE    MR$LDER1                 YES DISPLAY CODE                MR$01460
         CANCEL                                                         MR$01470
MR$LDER1 TM    0(3),MR$RT2              TEST FOR REPLY                  MR$01480
         BZ    MR$LDER2                 NO - BRANCH                     MR$01490
         LA    1,4(0,1)                 POINT TO MESSAGE CODE           MR$01500
         WTLD  (1),4,,REPLY,MR$AREA,5                                   MR$01510
         LA    1,MR$AREA                POINT TO RESPONCE               MR$01520
         B     MR$RTN                   RETURN TO CALLER                MR$01530
MR$LDER2 TM    0(3),MR$RT3+MR$RT4       TEST FOR LOG ONLY DISPLAY       MR$01540
         BZ    MR$LDER3                 YES BRANCH                      MR$01550
         LA    1,4(0,1)                 POINT TO MSG CODE               MR$01560
         WTLD  (1),4                    DISPLAY MESSAGE                 MR$01570
         B     MR$RTN                   RETURN TO CALLER                MR$01580
MR$LDER3 LA    1,4(0,1)                 POINT TO MESSAGE CODE           MR$01590
         WTL   (1),4                    DISPLAY MESSAGE                 MR$01600
         B     MR$RTN                   RETURN TO CALLER                MR$01610
*                                                                       MR$01620
*              CONSOLE ONLY DISPLAYS                                    MR$01630
*                                                                       MR$01640
MR$RTF   TM    0(3),MR$RT2              TEST FOR REPLY MESSAGE          MR$01650
         BZ    MR$RTG                 { NO - BRANCH {                   MR$01660
         OPR   (1),5,MR$OPR,REPLY,MR$AREA,5                             MR$01670
         LA    1,MR$AREA                POINT TO RESPONCE               MR$01680
         B     MR$RTN                   RETURN TO CALLER                MR$01690
MR$RTG   TM    0(3),MR$RT3+MR$RT4       TEST FOR FATAL ERROR            MR$01700
         BZ    MR$RTN                   NO - DO NOT DISPLAY MESSAGE     MR$01710
         OPR   (1),,MR$OPR              DISPLAY MESSAGE                 MR$01720
         B     MR$RTN                                                   MR$01730
*                                                                       MR$01740
*              ERROR ROUTINE                                            MR$01750
*                                                                       MR$01760
MR$OPR   EQU   *                                                        MR$01770
MR$OPER  EQU   *                                                        MR$01780
         CH    0,=X'0042'               TEST FOR NO MSG IN FILE         MR$01790
         BNE   MR$LDER                  CANCEL                          MR$01800
MR$OPER1 TM    0(3),MR$RT2              TEST FOR REPLY                  MR$01810
         LA    1,4(0,1)                 POINT TO MSG CODE               MR$01820
         OPR   (1),4,,REPLY,MR$AREA,5   DISPLAY MSG                     MR$01830
         LA    1,MR$AREA                POINT TO RESPONCE               MR$01840
         B     MR$RTN                   RETURN                          MR$01850
MR$OPER2 LA    1,4(0,1)                 POINT TO MSG CODE               MR$01860
         OPR   (1),4                    DISPLAY MSG                     MR$01870
*                                       RETURN TO CALLER                MR$01880
MR$RTN   ST    1,MR$RSVE+12             STORE R1 IN SAVE AREA           MR$01890
         LM    14,6,MR$RSVE             RESTORE REGISTERS               MR$01900
         L     13,MR$DSV                RESTORE R13                     MR$01910
         BR    5                        RETURN TO CALLER                MR$01920
MR$ACONA DC    A(MR$AREA)                                               MR$01930
MR$DSV   DS    F                                                        MR$01940
MR$PT    EQU   MR$RTA+1                                                 MR$01950
MR$CLR   EQU   MR$RTD+1                                                 MR$01960
MR$CLR1  EQU   MR$RTF+1                                                 MR$01970
MR$CLR2  EQU   MR$LDER1+1                                               MR$01980
MR$CLR3  EQU   MR$OPER1+1                                               MR$01990
MR$CLI   EQU   MR$RTC+1                                                 MR$02000
MR$CLI1  EQU   MR$RTG+1                                                 MR$02010
MR$CLI2  EQU   MR$LDER2+1                                               MR$02020
MR$RSVE  DS    9F                       SAVE AREA                       MR$02030
MR$FLDRX DS    3F                                                       MR$02040
MR$AREA  DC    CL4' '                   MSG I/O AREA                    MR$02050
TESTSV   DS    4F                                                       MR$02060
         END                                                            MR$02070
