*DECK  GETCMD 
USETEXT COMCBEG 
USETEXT COMRDSD 
FUNC GETCMD I;
#  TITLE  GETCMD - GET COMMAND ORDINAL  # 
  
      BEGIN  # GETCMD # 
  
# 
**    GETCMD - GET COMMAND ORDINAL
* 
*     GET THE COMMAND ORDINAL BASED UPON THE COMMAND IN THE DSD 
*     L-DISPLAY BUFFER
* 
*     FUNC GETCMD I 
* 
*     ENTRY      - DSD$BUF
* 
*     EXIT       - > 0  THE COMMAND ORDINAL 
*                  = 0  INVALID COMMAND 
* 
*     PROCESSING -
*         SEP=FALSE 
*         COMCH=0 
*         COMFOUND=FALSE
*         FOR I = 1 STEP 1 WHILE (NOT SEP AND I LE MAXCMDSZ) DO 
*           IF DSDCH[I] NE SEPERATOR
*           THEN
*             COMCH[I]=DSDCH[I] 
*           ELSE
*             SEP=TRUE
*         IF SEP
*         THEN
*           FOR I=1 STEP 1 WHILE (NOT COMFOUND AND I LE NAXCMD) DO
*             IF COMCHW EQ CMDTBL[I]
*             THEN
*               COMFOUND=TRUE 
*         IF COMFOUND 
*         THEN
*           GETCMD=I
*         ELSE
*           PATHORD=DISOCT(COMCHWD) 
*           IF PATHORD GT 0 
*           THEN
*             GETCMD=PATHC
*           ELSE
*             GETCMD=0
*         ELSE
*           GETCMD=0
*         RETURN
# 
  
# 
****  FUNC GETCMD XREF LIST BEGIN.
# 
      XREF
        BEGIN 
        FUNC DDTOBIN I; 
        END 
# 
****  FUNC GETCMD XREF LIST END.
# 
  
  
      ARRAY COMBLD [0:0] S(1);
        BEGIN 
        ITEM COMCHW U(00,00,60);     # REFERENCE WORD # 
        ITEM COMCH  C(00,00,10);     # BUILD COMMAND #
        END 
  
      ARRAY CMDTABL [1:NUMCMD] S(1);
        BEGIN 
        ITEM CMDTBL U(00,00,60) = [ ZENABLE,
                                    ZDISABLE, 
                                    ZIDLE,
                                    0,
                                    ZAPPL,
                                    ZID,
                                    ZPATH,
                                    ZPLUS,
                                    ZMINUS];
        ITEM CMDTBLC C(00,00,10); 
        END 
  
  
      ITEM  COMFOUND B; 
      ITEM  I I;
      ITEM  SEP B;
CONTROL EJECT;
  
      SEP = FALSE;
      COMCHW[0] = 0;
      COMFOUND = FALSE; 
      FOR I=0 STEP 1 WHILE (NOT SEP AND I LE MAXCMDSZ) DO 
        BEGIN 
        IF C<I,1>DSD$CMDC[0] EQ "," OR
           C<I,1>DSD$CMDC[0] EQ "." OR
           C<I,1>DSD$CMDC[0] EQ " " OR
           B<I*6,6>DSD$CMDW[0] EQ 0 
        THEN
          BEGIN 
          SEP = TRUE; 
          END 
        ELSE
          BEGIN 
          C<I,1>COMCH[0] = C<I,1>DSD$CMDC[0]; 
          END 
        END 
      IF SEP
        AND COMCHW[0] NE 0
      THEN
        BEGIN 
        DSD$POS[0] = I; 
        FOR I=1 WHILE (NOT COMFOUND AND I LE NUMCMD) DO 
          BEGIN 
          IF COMCHW[0] EQ CMDTBL[I] 
          THEN
            BEGIN 
            COMFOUND = TRUE;
            END 
          ELSE
            BEGIN 
            I = I + 1;
            END 
          END 
        IF COMFOUND 
        THEN
          BEGIN 
          GETCMD = I; 
  
        CONTROL IFEQ OS$NOS;
          IF COMCHW[0] EQ ZID 
          THEN
            BEGIN 
            COMFOUND = FALSE; 
            GETCMD = 0; 
            END 
        CONTROL ENDIF;
  
          END 
        ELSE
          BEGIN 
          FOR I = 0 STEP 1 UNTIL 9 DO 
            BEGIN 
            IF B<I*6,6>COMCHW[0] EQ 0 
            THEN
              BEGIN 
              C<I,1>COMCH[0] = " "; 
              END 
            END 
          PATHORD = DDTOBIN(COMCH[0],10,CONVERR); 
          IF CONVERR GE 0 
            AND PATHORD GT 0
          THEN
            BEGIN 
            GETCMD = CMD"PATHCMD";
            END 
          ELSE
            BEGIN 
            GETCMD = 0; 
            END 
          END 
        END 
      ELSE
        BEGIN 
        GETCMD = 0; 
        END 
      RETURN; 
      END 
  
      TERM
