*DECK S$NXTOK 
  
          PROC S$NXTOK(STRING$,COL$,TOKEN$,STATUS$);
  
#**       S$NXTOK - GET NEXT TOKEN                                     #
#                                                                      #
#       GIVEN -                                                        #
#         COL$ = ARRAY CONTAINING CURRENT AND PREVIOUS COLUMN NO.S     #
#         STATUS$ = ERROR STATUS                                       #
#         STRING$ = ARRAY CONTAINING STRING LENGTH AND CONTENTS        #
#         TOKEN$ = ARRAY WITH TOKEN CONTENTS AND TYPE                  #
#       DOES -                                                         #
#         FROM A GIVEN COLUMN POSITION, THIS PROC DETERMINES THE       #
#         NEXT TOKEN TYPE AND CHECKS FOR ERROR(ILLEGAL CHARACTERS,     #
#         AND INCONSISTENCIES) AND IF THIS TOKEN IS A "SPACE" THEN     #
#         A ROUTINE IS CALLED TO DETERMINE IF THAT SPACE IS TO BE      #
#         TREATED AS A "COMMA" OR A "SPACE".                           #
#                                                                      #
  
          BEGIN 
  
*CALL A 
  
*CALL STATUS$ 
  
*CALL STRING$ 
  
*CALL E$
  
*CALL CLPTYPE 
  
*CALL CLPARRA 
  
*CALL DEBUG 
  
#??#          ITEM  MES    C(80); 
  
          FUNC  DEC(VALUE) C(10); 
              ITEM  VALUE       I;     # VALUE TO BE CONVERTED         #
              ITEM  C10PLUS     C(20);
              ITEM  I            I; 
              ITEM  N            I; 
              BEGIN 
              C10PLUS = "         0          "; 
              N = VALUE;
              IF N LS 0  THEN 
                  N = -N; 
              IF N GR 999999999 THEN
                  BEGIN 
                  C10PLUS = " *********          "; 
                  I = 0;
                  END 
              ELSE
                  BEGIN 
                  FOR I = 9 WHILE N NQ 0  DO
                      BEGIN 
                      C<I,1>C10PLUS = N - (N/10)*10 + 27; 
                      N = N/10; 
                      I = I - 1;
                      END 
                  END 
              IF VALUE LS 0 THEN
                  C<I,1>C10PLUS = "-";
              DEC = C<I,10>C10PLUS; 
              END  # DEC #
          XREF
              BEGIN 
              PROC S$ABORT; 
#??#          PROC S$PRTCD; 
              PROC S$ERROR; 
              PROC S$CKSPC; 
              PROC S$GTTOK; 
              END 
          $BEGIN
          IF TOKENTYPE EQ  TYP"EOS" THEN
              BEGIN 
#***#         RETURN; 
              END 
          $END
          IF TOKENTYPE  NQ TYP"SPACE" THEN
              BEGIN 
              TOKENPRVT = TOKENTYPE;
              $BEGIN
              MES = "PREVCOL = "; 
              C<10,10>MES = DEC(PREVCOL); 
              S$PRTCD(MES); 
              FLUSH;
              MES = " COL = ";
              C<6,10>MES = DEC(COL);
              S$PRTCD(MES); 
              FLUSH;
              $END
              END 
          PREVCOL = COL;
          S$GTTOK(STRING$,COL$,TOKEN$,STATUS$); 
              $BEGIN
          IF TOKENTYPE NQ TYP"SPACE"  THEN
              BEGIN 
              MES = "TOKEN= ";
#??#          C<7,10>MES = TOKENC;
#??#          S$PRTCD(MES); 
              FLUSH;
              MES = "TOKENTYPE= ";
              IF TOKENTYPE EQ TYP"NONE"  THEN 
                  C<11,10>MES = "NONE"; 
              IF TOKENTYPE EQ TYP"SPACE"  THEN
                  C<11,10>MES = "SPACE";
              IF TOKENTYPE EQ TYP"RP"  THEN 
                  C<11,10>MES = "RP"; 
              IF TOKENTYPE EQ TYP"LP"  THEN 
                  C<11,10>MES = "LP"; 
              IF TOKENTYPE EQ TYP"NUM"  THEN
                  C<11,10>MES = "NUM";
              IF TOKENTYPE EQ TYP"NAME"  THEN 
                  C<11,10>MES = "NAME"; 
              IF TOKENTYPE EQ TYP"DOLLAR"  THEN 
                  C<11,10>MES = "DOLLAR"; 
              IF TOKENTYPE EQ TYP"$NAM"  THEN 
                  C<11,10>MES = "$NAM"; 
              IF TOKENTYPE EQ TYP"STRING"  THEN 
                  C<11,10>MES = "STRING"; 
              IF TOKENTYPE EQ TYP"COMMA"  THEN
                  C<11,10>MES = "COMMA";
              IF TOKENTYPE EQ TYP"EQUALS"  THEN 
                  C<11,10>MES = "EQUALS"; 
              IF TOKENTYPE EQ TYP"DOT"  THEN
                  C<11,10>MES = "DOT";
              IF TOKENTYPE EQ TYP"ELLIPSIS"  THEN 
                  C<11,10>MES = "ELLIPSIS"; 
              IF TOKENTYPE EQ TYP"EOS"  THEN
                  C<11,10>MES ="EOS"; 
              IF TOKENTYPE EQ TYP"ILLEGAL" THEN 
                  C<11,10>MES = "ILLEGAL";
              S$PRTCD(MES); 
              FLUSH;
              MES = "TOKENPRVT= ";
              IF TOKENPRVT EQ TYP"NONE"  THEN 
                  C<11,10>MES = "NONE"; 
              IF TOKENPRVT EQ TYP"SPACE"  THEN
                  C<11,10>MES = "SPACE";
              IF TOKENPRVT EQ TYP"RP"  THEN 
                  C<11,10>MES = "RP"; 
              IF TOKENPRVT EQ TYP"LP"  THEN 
                  C<11,10>MES = "LP"; 
              IF TOKENPRVT EQ TYP"NUM"  THEN
                  C<11,10>MES = "NUM";
              IF TOKENPRVT EQ TYP"NAME"  THEN 
                  C<11,10>MES = "NAME"; 
              IF TOKENPRVT EQ TYP"DOLLAR"  THEN 
                  C<11,10>MES = "DOLLAR"; 
              IF TOKENPRVT EQ TYP"$NAM"  THEN 
                  C<11,10>MES = "$NAM"; 
              IF TOKENPRVT EQ TYP"STRING"  THEN 
                  C<11,10>MES = "STRING"; 
              IF TOKENPRVT EQ TYP"COMMA"  THEN
                  C<11,10>MES = "COMMA";
              IF TOKENPRVT EQ TYP"EQUALS"  THEN 
                  C<11,10>MES = "EQUALS"; 
              IF TOKENPRVT EQ TYP"DOT"  THEN
                  C<11,10>MES = "DOT";
              IF TOKENPRVT EQ TYP"ELLIPSIS"  THEN 
                  C<11,10>MES = "ELLIPSIS"; 
              IF TOKENPRVT EQ TYP"EOS"  THEN
                  C<11,10>MES ="EOS"; 
              IF TOKENPRVT EQ TYP"ILLEGAL" THEN 
                  C<11,10>MES = "ILLEGAL";
              S$PRTCD(MES); 
              FLUSH;
#??#          END 
              $END
          IF TOKENTYPE EQ  TYP"SPACE" THEN
              BEGIN 
              S$CKSPC(STRING$,COL$,TOKEN$,STATUS$); 
              END 
          IF TOKENTYPE EQ  TYP"ILLEGAL" THEN
              BEGIN 
              PTR = PREVCOL;
              S$ERROR(E$2,STRING$,PTR);  # INCORRECT CHAR. SYNTAX      #
              STATUS$NORML = FALSE; 
#***#         RETURN; 
              END 
          RETURN; 
          END # OF S$NXTOKN # 
          TERM
