*DECK FFSMRFL 
USETEXT TEXTFFS 
      PROC FFSMRFL (NUM); 
*CALL COPYRITE
# TITLE FFSMRFL - REQUEST FIELD LENGTH CHANGE.                         #
  
      BEGIN                            # FFSMRFL                       #
# 
**    FFSMRFL  REQUEST FIELD LENGTH CHANGE. 
* 
*     A. LIM                           88/01/18 
* 
*     THIS PROCEDURE REQUESTS A FIELD LENGTH CHANGE AND UPDATES THE 
*     AVAILABLE WORDS FOR TABLE EXPANSION.
* 
*     PROC FFSMRFL (NUM)
* 
*     ENTRY    NUM     = NUMBER OF WORDS TO INCREASE FIELD LENGTH.
*              AVAIL   = AVAILABLE WORDS FOR TABLE EXPANSION. 
*              FL      = CURRENT FIELD LENGTH.
*              P<MREQ> = PTR TO MEMORY REQUEST WORD.
* 
*     EXIT     AVAIL   = AVAILABLE WORDS FOR TABLE EXPANSION. 
*              FL      = CURRENT FIELD LENGTH.
*              DUMMY LAST TABLE POINTER UPDATED.
* 
*     METHOD   IF THE FIELD LENGTH CHANGE WILL RESULT IN THE MAXIMUM
*              FIELD LENGTH BEING EXCEEDED THEN ABORT THE FILE SERVER.
* 
*              REQUEST THE NEW FIELD LENGTH AND UPDATE REVELANT 
*              TABLE MANAGEMENT INFORMATION.
* 
# 
  
# 
****  PROC FFSMRFL - XREF LIST
# 
      XREF
        BEGIN 
        PROC ABORT;      # ABORT JOB                                   #
        PROC MESSAGE;    # DISPLAY AND DAYFILE A MESSAGE               #
        PROC FFSMRCM;    # REQUEST CENTRAL MEMORY                      #
        END 
# 
****
# 
      ITEM NUM           I;            # NUMBER OF WORDS TO INCREASE   #
  
      ITEM NEWFL         I;            # NEW FIELD LENGTH              #
  
#     THIS ARRAY DEFINES THE MESSAGE FOR MAXIMUM FIELD LENGTH EXCEEDED.#
  
      ARRAY MEMMSG [00:00] S(4);
        BEGIN 
        ITEM MEM$TXT1    C(00,00,36) =
       [" FTPS-MAXIMUM FIELD LENGTH EXCEEDED."];
        ITEM MEM$ID      C(00,06,04); 
        ITEM MEM$ZBYTE   U(03,36,24) = [0]; 
        END 
      CONTROL EJECT;
  
#     START MAIN PROCEDURE                                             #
  
      IF EPTFLAG EQ FTPC$ 
      THEN
        BEGIN 
        MEM$ID[0] = FTPI$;
        END 
  
      NEWFL = ((FL + NUM + FLMUL - 1) / FLMUL) * FLMUL; 
  
      IF NEWFL GR MAXFL 
      THEN
        BEGIN                          # MAXIMUM FIELD LENGTH EXCEEDED #
        MESSAGE (MEMMSG[0], 0);        # DAYFILE THE MESSAGE           #
        ABORT;                         # ABORT THE FILE SERVER         #
        END;
  
      FFSMRCM (NEWFL, MREQ);           # REQUEST NEW FIELD LENGTH      #
      NEWFL = MREQ$FL[0]; 
      AVAIL = AVAIL + NEWFL - FL;      # UPDATE AVAILABLE WORDS        #
      FL    = NEWFL;                   # UPDATE CURRENT FIELD LENGTH   #
      TEND  = NEWFL - 8;               # UPDATE DUMMY LAST TABLE PTR   #
  
  
      RETURN;                          # RETURN TO CALLER              #
  
      END                              # FFSMRFL                       #
  
      TERM
