*DECK S$LOADM 
          IDENT  S$LOADM
          TITLE  S$LOADM -  LOAD AND EXECUTE SORT/MERGE ROUTINES
          COMMENT  LOAD AND EXECUTE ROUTINES
          SPACE  4
**        S$LOADM -  LOAD AND EXECUTE SORT/MERGE ROUTINES 
* 
*     CALLING SEQUENCE- 
*         S$LOADM;
* 
*     DOES- 
*         LOADS S$MAIN FROM SRT5LIB.
*         EXECUTES S$MAIN.
*         UNLOADS S$MAIN. 
  
  
          ENTRY  S$LOADM
 S$LOADM  SUBR               ENTRY/EXIT WORD
          SX6    A0          PRESERVE CALLERS F.P. LIST POINTER 
          SA6    SAVEA0 
  
*     NOTE ELAPSED TIME AND CP TIME   (OPTION)
  
          IFPERFM              IF PERF MEASUREMENT WANTED 
            SX6    1           CODE FOR FINISHING LOADING A CAPSULE 
            SX1    =10HS$MAIN 
            CALL   S$P         WRITE INFO TO *ZZZZZ3U*, *ZZZZZ3V* 
          ENDIF 
  
*     LOAD THE CONTROL ROUTINE FOR RELOCATABLE SORTS
  
          SA1    GROUP       42/0L_GROUP-NAME, 18/GROUP-SIZE
          SA2    =6LS$MAIN    42/0L_CAPSULE-NAME, 18/0
          SX3    LIBLIST     ADDRESS OF LIST OF LIBRARIES 
          SX4    S$PASS      ADDRESS OF LIST OF ADDRESSES OF PASSLOCS 
          CALL   FDL.LDC     LOAD THE MAIN CAPSULE
  
*     MAKE SURE THE CAPSULE WAS LOADED
  
          SB7    X6          LOOK AT FDL ERROR NUMBER 
          SB6    6           (ERROR NUMBER FOR *ALREADY LOADED*)
          IFTHEN B7"0        IF NOT NORMAL LOAD 
           ANDIF B7"B6        AND NOT ALREADY LOADED, 
            LX6    12 
            SA1    MSG+2
            IX6    X1+X6
            SA6    A1 
            MESSAGE (=C$ SORT-  SYSTEM ERROR$),,RECALL
            MESSAGE MSG,,RECALL 
            ABORT 
            ENDIF.
  
*     NOTE ELAPSED TIME AND CP TIME   (OPTION)
  
          IFPERFM              IF PERF MEASUREMENT WANTED 
            SX6    2           CODE FOR FINISHING LOADING A CAPSULE 
            SX1    =10HS$MAIN 
            CALL   S$P         WRITE INFO TO *ZZZZZ3U*, *ZZZZZ3V* 
            ENDIF 
  
*     EXECUTE S$MAIN
  
          SA3    S$MAIN$+1   ADDRESS OF S$MAIN ENTRY POINT
          SA4    LOADA       (EQ LOAD1) INSTRUCTION 
          BX6    X4 
          SA6    X3          SIMULATE (RJ S$MAIN) 
          SB7    X3 
          JP     B7+1 
 LOAD1    BSS    0           (HERE AFTER EXECUTING S$MAIN)
  
*     NOTE ELAPSED TIME AND CP TIME   (OPTION)
  
          IFPERFM              IF PERF MEASUREMENT WANTED 
            SX6    3           CODE FOR STARTING TO UNLOAD A CAPSULE
            SX1    =10HS$MAIN 
            CALL   S$P         WRITE INFO TO *ZZZZZ3U*, *ZZZZZ3V* 
            ENDIF 
  
*     UNLOAD THE MAIN CAPSULE 
  
          SA1    GROUP       42/0L_GROUP-NAME, 18/GROUP-SIZE
          SA2    =6LS$MAIN    42/0L_CAPSULE-NAME, 18/0
          SX4    S$PASS      ADDRESS OF LIST OF ADDRESSES OF PASSLOCS 
          CALL   FDL.ULC     UNLOAD THE S$MAIN CAPSULE
  
*     NOTE ELAPSED TIME AND CP TIME   (OPTION)
  
          IFPERFM              IF PERF MEASUREMENT WANTED 
            SX6    4           CODE FOR FINISHING UNLOADING A CAPSULE 
            SX1    =10HS$MAIN 
            CALL   S$P         WRITE INFO TO *ZZZZZ3U*, *ZZZZZ3V* 
            ENDIF 
  
*         RESTORE CALLERS F.P. LIST POINTER.
  
          SA3    SAVEA0      RESTORE CALLERS F.P. LIST POINTER
          SA0    X3 
  
*     EXIT FROM S$LOADM 
  
          EXIT
          SPACE  4
  
 LOADA    EQ     LOAD1
-         PS
  
*CALL CAPLIB
 S$MAIN$  EXTERNAL           PASSLOC ENTRY FOR S$MAIN 
  
  
 MSG      DATA   28L SORT-  BAD SRT5LIB   CODE=0
          SPACE  4
 SAVEA0   BSS    1           CELL TO PRESERVE CALLERS F.P. POINTER
  
          END 
