*DECK FFSML 
USETEXT TEXTFFS 
      PROC FFSML; 
*CALL COPYRITE
# TITLE FFSML - FTP FS MAIN PROCEDURE.                                 #
  
      BEGIN                            # FFSML                         #
# 
**    FFSML    FTP FS MAIN PROCEDURE. 
* 
*     A. LIM                           88/01/18 
* 
*     THE FUNCTION OF THE MAIN PROCEDURE IS TO LOAD AND EXECUTE THE 
*     INITIALIZATION OVERLAY. 
* 
*     PROC FFSML
* 
*     ENTRY    CALLED FROM COMPASS MAIN (00,00) OVERLAY FTPS. 
* 
*     EXIT     THERE IS NO EXIT IN THE NORMAL SENSE.
*              THE MAIN PROGRAM TRANSFERS CONTROL TO THE INITIALIZATION 
*              PROCESSOR OVERLAY (*FFSIP*) WHICH, WHEN COMPLETE,
*              TRANSFERS CONTROL TO THE EXECUTIVE PROCESSOR (*FFSXPES*) 
*              WHICH NEVER RETURNS. 
* 
*     METHOD   DETERMINE THE PROGRAM LOAD SOURCE , LOAD THE 
*              INITIALIZATION OVERLAY FROM THE SAME SOURCE, AND 
*              EXECUTE IT.
* 
# 
  
# 
****  PROC FFSML - XREF LIST
# 
      XREF
        BEGIN 
        PROC ABORT;      # ABORT JOB                                   #
        PROC DISSR;      # DISABLE SRU ACCUMULATION                    #
        FUNC GETJO I;    # GET JOB ORIGIN                              #
        PROC MESSAGE;    # DISPLAY AND DAYFILE A MESSAGE               #
        PROC FFSISRP;    # INITIALIZE REPRIEVE PROCESSING              #
        PROC FFSFOLR;    # CALL FAST OVERLAY LOADER TO LOAD THE OVERLAY#
        PROC FFSXPES;    # FILE SERVER EXECUTIVE PROCESSOR             #
        END 
# 
****
# 
      ARRAY FOLREQ [00:00] S(1);
        BEGIN 
        ITEM FOL$NAME    C(00,00,07) = ["FFS7700"];  # OVERLAY NAME    #
        ITEM FOL$RES1    U(00,42,06) = [0];          # RESERVED        #
        ITEM FOL$L1      U(00,48,06) = [O"77"];      # PRIMARY  OVL LVL#
        ITEM FOL$L2      U(00,54,06) = [O"00"];      # SECONDRY OVL LVL#
        END 
  
      BASED ARRAY PTR [00:00] S(1);    # FIXED POINTER TO POINTER TBL  #
        BEGIN 
        ITEM PTRNAME    C(00,00,07);   # DISPLAY CODE NAME             #
        ITEM PTRADDR    U(00,42,18);   # ADDRESS OF POINTER TABLE      #
        END 
  
      ARRAY NOTSO [00:00] S(4); 
        BEGIN 
        ITEM NOT$TEXT    C(00,00,36) =
                          [" FTPS-FTPS JOB IS NOT SYSTEM ORIGIN."]; 
        ITEM NOT$MODE    C(00,06,04); 
        ITEM NOT$MODE1   C(00,36,04); 
        ITEM NOT$ZBYTE   U(03,36,24) = [0]; 
        END 
  
      ARRAY VERLVL[00:00] S(4); 
        BEGIN 
        ITEM VLV$TEXT   C(00,00,37) = 
                         [" FTPS-VERSION X.XXX, PSR LEVEL XXXXX."]; 
        ITEM VLV$MODE   C(00,06,04);
        ITEM VLV$VER    C(01,24,05) = [FTPVERSION]; 
        ITEM VLV$LVL    C(03,06,05) = [FTPLEVEL]; 
        ITEM VLV$ZBYTE  U(03,48,12) = [0];
        END 
  
      CONTROL EJECT;
  
#     START MAIN PROCEDURE                                             #
  
      IF EPTFLAG NQ FTPS$ 
      THEN
        BEGIN                          # CLIENT MODE                   #
        VLV$MODE[0]  = FTPI$;          # SET "FTPI" IN VERSION MESSAGE #
        NOT$MODE[0]  = FTPI$;          # SET "FTPI" IN ORIGIN MESSAGE  #
        NOT$MODE1[0] = FTPI$;          # SET "FTPI" IN ORIGIN MESSAGE  #
        END 
  
      MESSAGE(VERLVL[0], 0);           # DAYFILE VERSION AND LEVEL     #
  
      IF GETJO NQ 0 
      THEN
        BEGIN                          # FTPS JOB NOT SYSTEM ORIGIN    #
        MESSAGE(NOTSO[0], 0);          # DAYFILE MESSAGE               #
        ABORT;                         # ABORT THE JOB                 #
        END;
  
      DISSR;                           # DISABLE SRU ACCUMULATION      #
  
      P<PTR>  = O"60";                 # FIXED POINTER TO POINTER TBL  #
      PTRNAME = "PTRTBL ";
      PTRADDR = LOC(PTRTBL);
  
      FFSISRP;                         # SET UP REPRIEVE PROCESSING    #
  
      FFSFOLR(FOLREQ, FOLFWA);         # CALL FOL TO LOAD THE OVERLAY  #
  
#     THE FOLLOWING PROCEDURE CALLS ARE NEVER EXECUTED AS THERE IS NO  #
#     RETURN FROM THE *FFSFOLR* CALL. THEY ARE INCLUDED HERE IN ORDER  #
#     TO FORM THE MAIN (0,0) OVERLAY.                                  #
  
      FFSXPES;                         # FTPS EXECUTIVE                #
  
      END                              # FFSML                         #
  
      TERM
