*DECK KNAMDFL 
USETEXT NIPDEF
USETEXT FREETAB 
USETEXT PARAMS
USETEXT KDIS
USETEXT KHDRX 
 PRGM KNAMDFL;               # PROCESS NAM K DISPLAY FL COMMAND        #
 STARTIMS ; 
 #
*1DC  KNAMDFL 
*     1. PROC NAME       AUTHOR        DATE 
*        KNAMDFL         A.BEN-ARTZI   82/08/25 
* 
*     2. FUNCTIONAL DESCRIPTION 
* 
*        PROCESS FL= TYPE-IN WHILE K-DISPLAY IN NAM-MODE
*                  ( AND MAXFL HAS NOT BEEN REACHED  )
* 
*     3. METHOD USED
* 
*        CHECK DATA FOR VALIDITY. 
*        UPDATE MAXFL AND STATUS DISPLAY TO NEW VALUE 
* 
*     4. ENTRY PARAMETERS 
* 
*        PARAMS1 -  NUMBER OF DIGITS IN NUMBER
*        PARAMS6 -  VALUE RECEIVED ( IN CHARACTER FORMAT )
* 
*     5. EXIT PARAMETERS
* 
*        PARAMS7 -  ERROR CODE ( OR 0 ) 
* 
*     6. COMMDECKS AND TEXTS USED 
* 
*        NIPDEF    FREETAB    KDIS    KHDRX     PARAMS
*        OSSIZE 
* 
*     7. ROUTINES CALLED
* 
*        KPUT - K-DISPLAY DINAMIC UPDATE INTERFACE
*        XTRACE DEBUG TRACE MARK
* 
*     8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION 
*        W A R N I N G - THIS PROGRAM CANNOT EXCEED THE SECONDARY 
*CALL OSSIZE
* 
 #
 STOPIMS ;
# 
      EXTERNAL VARIABLES
# 
      XREF
        BEGIN 
        PROC KPUT;           # UPDATE STATUS DISPLAY                   #
        PROC XTRACE;         # TRACE CALL                              #
        LABEL RJMAIN; 
        END 
# 
      INTERNAL VARIABLES
# 
      ITEM I;                # INDUCTION VARIABLE                      #
      ITEM KRC;              # COMMAND ERROR CODE                      #
      ITEM FLVALUE C(10);    # FL VALUE                                #
      ITEM MFL;              # MAXIMUM FL VALUE                        #
      ITEM TEMP;             # TEMPORARY                               #
  
      CONTROL EJECT;
  
      BEGIN # KNAMDFL # 
  
      CONTROL IFEQ DEBUG,1; 
      XTRACE("KNMFL");       # TRACE CALL                              #
      CONTROL FI; 
  
      KRC = 0;
      MFL = 0;
      FLVALUE = PARAMS6;
  
      FOR I=0 STEP 1 WHILE I LS WC
                       AND KRC EQ 0 
                       AND C<I>FLVALUE NQ " " 
      DO                     # COMPUTE FL ENTERED                      #
        BEGIN 
        TEMP = C<I>FLVALUE;  # ONE DIGIT                               #
        IF TEMP GQ "0"
          OR TEMP LQ "7"
        THEN                 # ALLOW OCTAL VALUE ONLY                  #
          MFL = MFL*O"10" + (TEMP-O"33"); 
        ELSE                 # ERROR, FL MUST BE OCTAL NUMERIC         #
          KRC = 7;
        END 
  
      IF KRC EQ 0 
      THEN # NO ERROR OCCURRED SO FAR                                  #
        BEGIN 
        IF HRL LS HRLV3 
        THEN # ALLOW INCREASE IN FL ONLY                               #
          BEGIN 
          IF MFL LQ MAXFL 
            OR (MFL-O"1000") LS MAXFL 
            OR MFL GR MAXXFL
          THEN # ILLEGAL FL VALUE ENTERED                              #
            KRC = 7;
          END 
        ELSE # HOST NOT IN BUFFER REGULATION                           #
          BEGIN 
          IF MFL LS (CTLSLWA+O"2000") 
            OR MFL GR MAXXFL
          THEN
            KRC = 7;
          END 
        END 
  
      IF KRC EQ 0 
      THEN                   # FL COMMAND OK                           #
        BEGIN 
        MAXFL = MFL;         # RESET MAXIMUM FL ALLOWED TO NEW VALUE   #
        FREMFL[0] = FALSE;   # CLEAR MAX FL REACHED INDICATOR          #
        HRL = HRLV3;         # SET BUFFER LEVEL TO ALL TRAFFIC         #
        IF KDST[0]
        THEN                 # NAM STATUS DISPLAY IS ON                #
          KPUT(LOC(KHDRXNM),0,KPHXMFL,MAXFL); # UPDATE HRL             #
        END 
  
      PARAMS7 = KRC;
      GOTO RJMAIN;
  
      END # KNAMDFL # 
  
      TERM
