*DECK,CMDINC
USETEXT COMCBEG 
USETEXT COMQCMD 
USETEXT COMQDEF 
USETEXT COMQPAR 
    PROC CMDINC;
      BEGIN  # CMDINC # 
# 
**    CMDINC     PROCESS *INCLUDE* COMMAND. 
* 
*     PROCESSES THE OPERATOR *INCLUDE* COMMAND. 
* 
*     INCLUDE,FILE=FILNAME
* 
*     PROC CMDINC 
* 
*     ENTRY      PARMS = PARSED COMMAND PARAMETERS. 
* 
*     EXIT       PARAMETERS PROCESSED.
* 
# 
  
# 
****  XREF
# 
      XREF
        BEGIN 
        PROC INFOPE;               # OPEN INCLUDE FILE #
        PROC NAME;                 # DEBUG CODE # 
        END 
  
# 
****  XREF END
# 
  
      STATUS KEYST
         FILE                      # SC= #
        ,UNKNOWN                   # *UNKNOWN* #
        ; 
  
      ARRAY FP [KEYST"FILE":KEYST"UNKNOWN"] S(1); 
        BEGIN 
        ITEM FP$KEY     C(00,00,07) = 
          [ "FILE ","*******"]; 
        ITEM FP$MIN     U(00,42,06) = 
          [    1,     1]; 
        ITEM FP$KEYST   S:KEYST(00,54,06) = 
          [S"FILE",S"UNKNOWN"]; 
        END 
  
      SWITCH SW$FP:KEYST
         SW$FILE   :FILE           # FILE = # 
        ,SW$UNKNOWN:UNKNOWN        # *UNKNOWN* #
        ; 
  
      ITEM FPORD      S:KEYST;     # PARAMETER ORDINAL #
      ITEM PCNT       U;           # PARAMETER COUNT #
      ITEM INFNAME    C(7);        # INCLUDE FILE NAME #
  
        $BEGIN
        NAME("CMDINC");            # DEBUG CODE # 
        $END
  
      INFNAME = " ";               # NO NAME YET #
      SLOWFOR PCNT = 1 STEP 1 WHILE (PCNT LE PARM$PCNT) 
                                AND (PARM$STAT EQ S"OK")
      DO
        BEGIN 
        IF PARM$PLEN[PCNT] EQ 0 
        THEN
          BEGIN 
          PARM$STAT = S"PARMERR"; 
          PARM$ECOL = PARM$COL[PCNT]; 
          CYCLE PCNT; 
          END 
  
        IF PARM$PLEN[PCNT] GT 7 
        THEN
          BEGIN 
          PARM$PLEN[PCNT] = 7;
          END 
  
        FP$KEY[KEYST"UNKNOWN"] = PARM$KEY[PCNT];
        FPORD = S"FILE";
        ASLONGAS (C<0,PARM$PLEN[PCNT]>FP$KEY[FPORD] 
                    NE C<0,PARM$PLEN[PCNT]>PARM$KEY[PCNT])
              OR (PARM$PLEN[PCNT] LT FP$MIN[FPORD]) 
        DO
          BEGIN 
          FPORD = FPORD + 1;
          END 
  
        GOTO SW$FP[FP$KEYST[FPORD] ];  # CASE STATEMENT # 
  
SW$FILE:                           # FILE= #
          IF (PARM$VTYPE[PCNT] EQ S"NAME")
            AND (PARM$VLEN[PCNT] LE 7)
          THEN
            BEGIN 
            INFNAME = PARM$NAME[PCNT];
            END 
  
          ELSE
            BEGIN 
            PARM$STAT = S"PARMERR"; 
            END 
  
          GOTO SW$END;
  
SW$UNKNOWN:                        # *UNKNOWN* #
          PARM$STAT = S"PARMERR"; 
          GOTO SW$END;
  
SW$END:                            # END OF CASE #
        IF PARM$STAT NE S"OK" 
        THEN
          BEGIN 
          PARM$ECOL = PARM$COL[PCNT]; 
          END 
  
        END 
  
      IF PARM$STAT EQ S"OK"        # IF NO ERROR IN COMMAND # 
      THEN
        BEGIN 
        INFOPE(INFNAME);
        IF NOT READINGINF 
        THEN
          BEGIN 
          PARM$STAT = S"NOFILE";   # FILE NOT FOUND # 
          END 
  
        END 
  
      END  # CMDINC # 
    TERM
