*DECK S$GTTXT 
          PROC S$GTTXT(STRING$,EOF,DIRFIL,DIRFILNAM,VERB,STATUS$);
  
#**       S$GTTXT -                                                    #
#                                                                      #
#       CALLING SEQ - SAME AS ABOVE                                    #
#       GIVEN -                                                        #
#         DIRFIL = FLAG SET TRUE IFF THE FILE THESE LINES ARE TO       #
#                  TAKEN FROM IS A SORT DIRECTIVE FILE                 #
#         DIRFILNAM = NAME OF THIS DIRECTIVE FILE                      #
#         EOF = END-OF-FILE FLAG                                       #
#         STRING$ = ARRAY CONTAINING A STRING                          #
#         STATUS = EXPANDED ERROR STATUS                               #
#         VERB = THE VERB BEING PROCESSED                              #
#       DOES -                                                         #
#         READS A PHYSICAL LINE(80 COLUMNS/CHARACTERS LONG), USING     #
#         COMPASS PROCS(S$GTDIR AND S$GTCTL).  THEN THIS PROC          #
#         APPENDS THE LEFT, NON-BALNK PORTION OF THIS LINE TO A        #
#         STRING, SCANNING FROM LEFT TO RIGHT LOOKING FOR THE FIRST,   #
#         NON-BLANK (OR NON-COLON) CHARACTER.                          #
#         (NON-COLON IS TREATED AS A BLANK BECAUSE WHEN S$GTCTL        #
#         OR S$GTDIR PUT A PHYSICAL LINE OF USER-SUPPLIED TEXT         #
#         INTO "LINE" THEY LEAVE THE TRAILING 55-OCTAL AS COLONS)      #
#                                                                      #
  
          BEGIN 
#??#      ITEM MES         C(60);   # USED BY S$PRTCD                  #
          ITEM DIRFIL     B;     # TO FLAG DIRECTIVE FILE USE          #
          ITEM DIRFILNAM  C(10); # DIRCTIVE FILE NAME                  #
          ITEM DIRVRBLEN    I;    # LENGTH OF DIRECTIVE-FILE VERB      #
          ITEM ELLIPSFLAG        B; 
          ITEM EOF        B;     # SIGNIFIES THAT AN END-OF-FILE       #
                                 # HAS BEEN ENCOUNTERED                #
          ITEM FULLINE  C(100);           # PHYSICAL LINE              #
          ITEM J          I=0;
          ITEM LINE     C(80);            # FIRST 80 COLUMNS OF 'LINE' #
          ITEM LINEXTR  C(20);            # LAST 20 COLUMNS OF 'LINE'  #
          ITEM KKOL       I;
          ITEM KOL        I;
          ITEM LFKOL        I;
          ITEM LINELEN      I;
          ITEM LINL       I;     # LENGTH OF LINE GIVEN TO S$PTLF      #
          ITEM OLDFLAG    B; # HOLD OLD VALUE OF ELLIPSFLAG            #
          ITEM P       C(10);   # USED TO STORE "DEC" VALUE            #
          ITEM PTLIN      C(90); # LINE TO BE PRINTED IN LISTFILE      #
          ITEM VERB       C(7);  # THE DIR. FILE VERB BEING PROCESSED  #
#                                   IS ENCOUNTERED                     #
  
          XREF
              BEGIN 
              ITEM S$LFNAM;    # NAME OF LISTING FILE                  #
              ITEM S$LOGLN;   # NUMBER OF LINES FOUND IN DIR FILES     #
              ITEM LLN;                 # LIST FILE LINE NUMBER        #
              ITEM  S$SMFLG  I;        # FLAG SORT OR MERGE            #
              END 
  
          DEF CTLVRBLEN   #5#;   # LENGTH OF CONTROL-VERB "SORT5"      #
  
*CALL A 
  
*CALL E$
  
*CALL STRING$ 
  
*CALL STATUS$ 
  
*CALL DEBUG 
  
          XREF
              BEGIN 
              PROC S$ABORT; 
              PROC S$ERROR; 
              PROC S$GTCTL; 
              PROC S$GTDIR; 
#??#          PROC S$PRTCD; 
              PROC S$PTLF;   # PUTS PTLIN INTO THE LIST-FILE BUFFER    #
              END 
  
          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<0,10>C10PLUS;          # WAS DEC = C<I,10>C10PLUS#
              END  # DEC #
  
  
  
          KOL = 0;
          KKOL = 0; 
          LFKOL = 0;
          LINELEN = 0;
          STRING$C = " "; 
          STRING$LEN = 0; 
                      $BEGIN
  
#??#                  MES = " INITIALIZE GTTXT VALUES"; 
#??#                  S$PRTCD(MES); 
                      FLUSH;
#??#                  MES = " GTTXT VALUES "; 
#??#                  S$PRTCD(MES); 
                      FLUSH;
#??#                  MES = "    KOL = "; 
#??#                  P = DEC(KOL); 
#??#                  C<10,10>MES = P;
#??#                  S$PRTCD(MES); 
                      FLUSH;
#??#                  MES = "    KKOL = ";
#??#                  P = DEC(KKOL);
#??#                  C<11,10>MES = P;
#??#                  S$PRTCD(MES); 
                      FLUSH;
#??#                  MES = "    LFKOL = "; 
#??#                  P = DEC(LFKOL); 
#??#                  C<12,10>MES = P;
#??#                  S$PRTCD(MES); 
                      FLUSH;
#??#                  MES = "    LINELEN = "; 
#??#                  P = DEC(LINELEN); 
#??#                  C<14,10>MES = P;
#??#                  S$PRTCD(MES); 
                      FLUSH;
  
                      $END
  
#           CHECK TO SEE IF THE FILE BEING USED IS A DIRECTIVE         #
#                           FILE OR NOT                                #
  
          $BEGIN
#??#      MES = "GTTXT-TEST ENTERED"; 
#??#      S$PRTCD(MES); 
          FLUSH;
          $END
          IF DIRFIL THEN
#***#         GOTO DIR; 
  
#           OTHERWISE A COMMAND(CONTROL) STATEMENT IS BEING READ       #
  
          S$LOGLN = 0;  # EQUALS 0 WHILE PROCESSING CONTROL-STATEMENTS #
  
TOP:  
  
          OLDFLAG = ELLIPSFLAG; 
          ELLIPSFLAG = FALSE; 
  
          S$GTCTL(FULLINE,EOF); 
  
          IF OLDFLAG AND EOF THEN # MISSING CONTINUATION #
              BEGIN 
              S$ERROR(E$68);
              RETURN; 
              END 
          $BEGIN
  
#??#      MES = "GTTXT-TEST TOP"; 
#??#      S$PRTCD(MES); 
          FLUSH;
#??#      MES = " TOP - KKOL = "; 
#??#      P = DEC(KKOL);
#??#      C<13,10>MES = P;
#??#      S$PRTCD(MES); 
          FLUSH;
          $END
  
          IF EOF THEN # END-OF-FILE HAS BEEN ENCOUNTERED               #
              BEGIN 
  
              IF KKOL NQ 0 THEN 
#               EOF(EOR) WAS ENCOUNTERED BEFORE THE PARAMETER-         #
#               LIST WAS PROPERLY TERMINATED WITH A END-OF-LINE        #
                  BEGIN 
                  $BEGIN
#??#              MES = "GTTXT EOS";
#??#              S$PRTCD(MES); 
                  FLUSH;
                  $END
#***#             RETURN; 
                  END 
#***#         RETURN; 
              END 
  
          LINE = C<0,80>FULLINE;
          LINEXTR = C<80,20>FULLINE;
  
  
#               FIND THE FIRST NON-BLANK FROM THE LEFT                 #
#                  OF 'LINE'(THE FIRST 80 COLUMNS                      #
#                  THE PHYSICAL LINE-FULLINE)                          #
  
          FOR KOL=79 STEP -1 UNTIL 0  DO
              BEGIN 
#               SCAN RIGHT TO LEFT FOR THE FIRST NON-BLANK             #
              IF C<KOL,1>LINE NQ " "  AND 
                  C<KOL,1>LINE NQ 0 THEN
#***#             GOTO CHAR;
#               OTHERWISE CONTINUE                                     #
              END 
  
#         SINCE A LINE OF ALL BLANKS WAS FOUND, GET ANOTHER LINE       #
              $BEGIN
#??#          MES = "GTTXT-TEST 2"; 
#??#          S$PRTCD(MES); 
              FLUSH;
              $END
#***#         GOTO TOP; 
  
CHAR: 
  
          IF C<KOL,1>LINE  EQ "." 
                THEN  # SEE IF THIS IS PART OF AN ELLIPSIS             #
              BEGIN 
  
#               SHIFT TO THE LEFT ONE CHARACTER, SEE IF THE NEXT       #
#               CHARACTER IS A PERIOD OR NOT                           #
  
              IF C<KOL-1,1>LINE EQ "."
                    THEN  # AN ELLIPSIS WAS USED                       #
                  BEGIN 
                  ELLIPSFLAG = TRUE;
  
#                   MOVING FROM RIGHT TO LEFT FIND THE FIRST           #
#                   NON-PERIOD CHARACTER AND SET KOL TO THE            #
#                   COLUMN IT IS FOUND IN                              #
  
                  FOR J=KOL-1 STEP -1 UNTIL 0  DO 
                      BEGIN 
                      IF C<J,1>LINE  NQ  "."  THEN
#***#                     GOTO ELLIPSTOP; 
                      END 
ELLIPSTOP:  
                  KOL = J;
                  END 
              END 
  
          IF KKOL EQ 0
                THEN # THIS IS THE FIRST LINE OF THE CONTROL STATEMENT #
              BEGIN 
  
#               CHECK THAT "SORT5." IS THE CONTROL-VERB OF THIS LINE   #
  
              IF C<0,CTLVRBLEN>LINE EQ "SORT5"  THEN
                  BEGIN 
                  S$SMFLG = 1;             # SORT SPECIFIED            #
                  VERB = "SORT5"; 
                  END 
              ELSE
              IF C<0,CTLVRBLEN>LINE EQ "MERGE"  THEN
                  BEGIN 
                  S$SMFLG = 2;             # MERGE SPECIFIED           #
                  VERB = "MERGE"; 
                  END 
              ELSE   # IF VERB NOT "SORT5"  OR "MERGE"                 #
                BEGIN 
                  $BEGIN
                  S$ABORT("S$GTTXT-3"); 
                  $END
                END 
  
              $BEGIN
#??#          MES = "GTTXT-TEST 4"; 
#??#          S$PRTCD(MES); 
              FLUSH;
              $END
#                   THIS PROC ASSUMS THAT ONE TERMINATOR WAS USED      #
#                   - A PERIOD OR RIGHT PARANTHESIS AFTER THE VERB -   #
#               WHEN ENTERING "SORT5" BECAUSE IT IS REQUIRED FOR ALL   #
#               SYSTEM(PROGRAM INTERFACE) COMMANDS                     #
  
                  IF C<CTLVRBLEN,1>LINE EQ "."  OR
                       C<CTLVRBLEN,1>LINE EQ ")"  THEN
                  LFKOL = CTLVRBLEN;
  
              IF C<CTLVRBLEN,1>LINE EQ " "  THEN
#                   FIND THE PERIOD THAT FOLLOWS THE VERB              #
                  BEGIN 
                  FOR J=CTLVRBLEN STEP 1 UNTIL 79  DO 
                      BEGIN 
                      IF ( C<J,1>LINE NQ " " AND C<J,1>LINE NQ 0 )
                            THEN  # TEST FOR THE FOLLOWING             #
                          BEGIN 
                              IF C<J,1>LINE EQ "."  OR
                                        C<J,1>LINE EQ ")"  THEN 
#***#                         GOTO PERIODFOUND; 
  
#                           OTHERWISE,SINCE A PERIOD WAS NOT FOUND     #
  
                          S$ERROR(E$65,STRING$,PTR);  # A PERIOD       #
#                            MUST FOLLOW "SORT5"                       #
                          STATUS$NORML = FALSE; 
#***#                     RETURN; 
                          END 
                      END 
PERIODFOUND:  
                  LFKOL = J;  # THIS COLUMN CONTAINS THE PERIOD        #
                  END 
  
              IF C<CTLVRBLEN,1>LINE NQ "."  AND 
                 C<CTLVRBLEN,1>LINE NQ ")"  AND 
                 C<CTLVRBLEN,1>LINE NQ " "   THEN 
                  BEGIN 
                  S$ERROR(E$65,STRING$,PTR);  # A PERIOD MUST FOLLOW   #
#                    "SORT5"                                           #
                  STATUS$NORML = FALSE; 
#***#             RETURN; 
                  END 
  
#               NOW THAT WE'VE FOUND THE FIRST NON-BLANK FROM          #
#               THE LEFT OF THE END OF THE LINE, AND THE FIRST         #
#               NO-BLANK RIGHT OF "SORT5" WE'RE ALMOST READY TO        #
#                         STUFF LINE INTO STRING$                      #
  
  
              IF KOL EQ LFKOL # BOTH ARE EQUAL TO CTLVRBLEN # 
                    THEN # THE CONTROL STATEMENT CONTAINS NO PARAMETERS#
                  BEGIN 
                  STRING$LEN = 0; 
                  STRING$C = " ";  # SET TO ALL BLANKS                 #
#***#             RETURN; 
                  END 
  
              IF KOL LS LFKOL  THEN 
                  BEGIN 
                  KKOL = 1;            # SET KKOL TO NON-ZERO NUMBER   #
#***#             GOTO TOP; 
                  END 
  
              IF KOL GR LFKOL THEN
                  BEGIN 
                  LINELEN = KKOL + (KOL - LFKOL); 
                  IF LINELEN GQ 240 # MAXIMUM LENGTH OF STRING$        #
                        THEN
                      BEGIN 
                      S$ERROR(E$62,STRING$,PTR);  # COMMAND STATEMNENT #
#                        MUST BE 240 CHARACTERS OR LESS                #
                      STATUS$NORML = FALSE; 
#***#                 RETURN; 
                      END 
                  C<KKOL,KOL - LFKOL>STRING$C  =
                        C<LFKOL + 1,KOL - LFKOL>LINE; 
                  STRING$LEN = LINELEN; 
                  IF ELLIPSFLAG #IS SET#
                        THEN  # SET KKOL FOR THE NEXT PASS             #
                      BEGIN 
                      KKOL = LINELEN; 
                      $BEGIN
#??#                  MES = "GTTXT-TEST 5"; 
#??#                  S$PRTCD(MES); 
                      FLUSH;
                      $END
#***#                 GOTO TOP;  # TO GET NEXT LINE                    #
                      END 
#***#             RETURN; # ... IF OTHERWISE                           #
                  END 
              END 
  
          IF KKOL GR 0  THEN # THIS IS A CONTINUATION LINE             #
              BEGIN 
              LINELEN = KKOL + KOL + 1; 
              IF LINELEN GQ 240 # MAXIMUM LENGTH OF STRING$            #
                    THEN
                  BEGIN 
                  S$ERROR(E$62,STRING$,PTR);  # COMMAND STATEMNENT     #
#                    MUST BE 240 CHARACTERS OR LESS                    #
                  STATUS$NORML = FALSE; 
#***#             RETURN; 
                  END 
              C<KKOL,KOL + 1>STRING$C = C<0,KOL + 1>LINE; 
              STRING$LEN = LINELEN; 
              IF ELLIPSFLAG #IS SET#
                    THEN  # SET KKOL FOR THE NEXT PASS                 #
                  KKOL = LINELEN + 1; 
              END 
  
          IF ELLIPSFLAG  THEN 
              BEGIN 
              $BEGIN
#??#          MES = "GTTXT-TEST 6"; 
#??#          S$PRTCD(MES); 
              FLUSH;
              $END
#***#         GOTO TOP; 
              END 
  
#           OTHERWISE THIS LINE IS NOT CONTINUED SO                    #
#***#     RETURN; 
CONTROL EJECT;
  
DIR:  
                      $BEGIN
  
#??#                  MES = " DIR - KKOL =     "; 
#??#                  P = DEC(KKOL);
#??#                  C<18,10>MES = P;
#??#                  S$PRTCD(MES); 
                      FLUSH;
                      $END
  
#                GET LINE FROM DIRECTIVE FILE                          #
          S$GTDIR(DIRFILNAM,FULLINE,EOF,STATUS$NORML);
                      $BEGIN
  
#??#                  MES = " GTDIR - KKOL =   "; 
#??#                  P = DEC(KKOL);
#??#                  C<18,10>MES = P;
#??#                  S$PRTCD(MES); 
                      FLUSH;
  
                      $END
          ELLIPSFLAG = FALSE; 
          $BEGIN
#??#      MES = "GTTXT-TEST DIR"; 
#??#      S$PRTCD(MES); 
          FLUSH;
  
          $END
          IF EOF THEN # END-OF-FILE HAS BEEN ENCOUNTERED               #
              BEGIN 
                  $BEGIN
#??#              MES = "GTTXT DIR EOS";
#??#              S$PRTCD(MES); 
                  FLUSH;
                  $END
#***#         RETURN; 
              END 
  
          LINE = C<0,80>FULLINE;
          LINEXTR = C<80,20>FULLINE;
  
  
#               FIND THE FIRST NON-BLANK FROM THE LEFT                 #
#                  OF 'LINE'(THE FIRST 80 COLUMNS                      #
#                  THE PHYSICAL LINE-FULLINE)                          #
  
          FOR KOL=79 STEP -1 UNTIL 0  DO
              BEGIN 
  
#               SCAN RIGHT TO LEFT FOR THE FIRST NON-BLANK             #
  
              IF C<KOL,1>LINE NQ " "  AND 
                  C<KOL,1>LINE NQ 0 THEN
#***#             GOTO DIRCHAR; 
  
#               OTHERWISE CONTINUE                                     #
  
              END 
  
  
#         SINCE A LINE OF ALL BLANKS WAS FOUND, GET ANOTHER LINE       #
              $BEGIN
#??#          MES = "GTTXT-TEST DIR 2"; 
#??#          S$PRTCD(MES); 
              FLUSH;
              $END
#***#         GOTO DIR; 
  
DIRCHAR:  
                      $BEGIN
  
#??#                  MES = " DIRCHAR - KKOL = "; 
#??#                  P = DEC(KKOL);
#??#                  C<18,10>MES = P;
#??#                  S$PRTCD(MES); 
                      FLUSH;
                      $END
#           PRINT LINE TO LFNAM FILE                                   #
          PTLIN = " ";
          LINL = 90;
          LLN = LLN + 1;
          P = DEC(LLN); 
          C<0,4>PTLIN = C<6,4>P;      # P IS 10 CHARACTERS LONG        #
          C<4,1>PTLIN = ".";
          C<10,KOL+1>PTLIN = C<0,KOL+1>LINE;
          S$PTLF(PTLIN,LINL);  # SEND LINE TO LIST-FILE                #
              $BEGIN
  
#??#          MES = " ******** PTLIN FOR S$PTLF     ="; 
#??#          S$PRTCD(MES); 
              FLUSH;
#??#          MES = C<10,80>PTLIN;
#??#          S$PRTCD(MES); 
              FLUSH;
  
              $END
          IF C<KOL,1>LINE  EQ "." 
                THEN  # SEE IF THIS IS PART OF AN ELLIPSIS             #
              BEGIN 
                      $BEGIN
  
#??#                  MES = " GTTXT-ELLIPS "; 
#??#                  S$PRTCD(MES); 
                      FLUSH;
                      $END
  
#               SHIFT TO THE LEFT ONE CHARACTER, SEE IF THE NEXT       #
#               CHARACTER IS A PERIOD OR NOT                           #
  
              IF C<KOL-1,1>LINE EQ "."
                    THEN  # AN ELLIPSIS WAS USED                       #
                  BEGIN 
                  ELLIPSFLAG = TRUE;
  
#                   MOVING FROM RIGHT TO LEFT FIND THE FIRST           #
#                   NON-PERIOD CHARACTER AND SET KOL TO THE            #
#                   COLUMN IT IS FOUND IN                              #
  
                  FOR J=KOL-1 STEP -1 UNTIL 0  DO 
                      BEGIN 
                      IF C<J,1>LINE  NQ  "."  THEN
#***#                     GOTO DIRELLIPS; 
                      END 
DIRELLIPS:  
                  KOL = J;
                  END 
              END 
          IF KKOL EQ 0
                THEN # THIS IS THE FIRST LINE OF THE CONTROL STATEMENT #
              BEGIN 
                      $BEGIN
  
#??#                  MES = " GTTXT-KKOL EQ 0 ";
#??#                  S$PRTCD(MES); 
                      FLUSH;
                      $END
  
#               S$LOGLN CONTAINS THE TOTAL NUMBER OF LINES             #
#               BEGINNING WITH SORT OR MERGE VERB                      #
#               THAT HAVE BEEN PROCESSED THUS FAR                      #
#               THIS NUMBER IS USED BY S$ERROR ROUTINE                 #
  
              S$LOGLN = S$LOGLN + 1;
  
#               CHECK THE BEGINNING (1ST NON-BLANK CHARATCTERS) OF     #
#               THIS LINE TO VERIFY THAT A VERB ('SORT' OR 'MERGE')    #
#               BEGINS THIS LINE                                       #
  
              VERB = " "; 
              FOR J=0 STEP 1 UNTIL 79  DO 
                  IF C<J,1>LINE NQ " "  THEN
#***#                 GOTO FRSTCHR; 
  
#               J=80 SHOULD NOT OCCUR SINCE THIS WOULD MEAN THAT       #
#               'LINE' IS A BLANK LINE, BUT WE ALREADY TESTED THIS     #
  
FRSTCHR:  
  
  
              IF J LQ 76  AND C<J,4>LINE EQ "SORT"  THEN
                  BEGIN 
                  VERB = "SORT";
                  DIRVRBLEN = J + 4;
                  END 
              ELSE
              IF J LQ 75  AND C<J,5>LINE EQ "MERGE"  THEN 
                  BEGIN 
                  VERB = "MERGE"; 
                  DIRVRBLEN = J + 5;
                  END 
              ELSE
                  BEGIN 
                  S$ERROR(E$87);   # LINES OF A DIR FILE MUST BEGIN    #
#                    WITH SORT OR MERGE VERB, OR BE A CONTINUATION     #
                  STATUS$NORML = FALSE; 
#                   THIS DIR-FILE LINE SHOULD NOT BE PROCESSED FURTHER #
#***#             RETURN; 
                  END 
              $BEGIN
  
#??#          MES = "GTTXT-TEST DIR 4"; 
#??#          S$PRTCD(MES); 
              FLUSH;
              $END
  
#               A COMMA OR AT LEAST ONE SPACE IS REQUIRED TO BEGIN     #
#               EACH LINE OF A DIRECTIVE FILE                          #
  
              IF C<DIRVRBLEN,1>LINE EQ ","  THEN
                  LFKOL = DIRVRBLEN;
  
              IF C<DIRVRBLEN,1>LINE EQ " "  THEN
  
#                   FIND OUT IF A COMMA FOLLOWS THIS VERB              #
  
                  BEGIN 
                  FOR J=DIRVRBLEN STEP 1 UNTIL 79  DO 
                      BEGIN 
                      IF ( C<J,1>LINE NQ " " AND C<J,1>LINE NQ 0 )
                            THEN  # TEST FOR THE FOLLOWING             #
                          BEGIN 
                          IF C<J,1>LINE EQ "," THEN 
#***#                         GOTO COMMAFOUND;
                          ELSE
#                           SO THE FIRST NON-BLANK AFTER 'SORT'        #
#                           IS NOT A COMMA.  THUS THE FIRST BLANK      #
#                           IS CONSIDERED AS THE DELIMITER             #
  
                              BEGIN 
                              J = J - 1;
                              GOTO COMMAFOUND;
                              END 
  
#                           OTHERWISE,SINCE A COMMA WAS NOT FOUND      #
#                            NO ACTION WAS TAKEN,GET NEXT LINE         #
  
#***#                     GOTO DIR; 
                          END 
                      END 
  
COMMAFOUND: 
                  LFKOL = J;      # THIS COLUMN CONTAINS THE COMMA     #
                  END 
  
              IF C<DIRVRBLEN,1>LINE NQ ","  AND 
                 C<DIRVRBLEN,1>LINE NQ " "   THEN 
                  BEGIN 
                  S$ERROR(E$64);  # A SPACE OR , MUST FOLLOW           #
#                      THE VERB 'SORT'                                 #
                  STATUS$NORML = FALSE; 
#***#             RETURN; 
                  END 
  
#               NOW THAT WE'VE FOUND THE FIRST NON-BLANK FROM          #
#               THE LEFT OF THE END OF THE LINE, AND THE FIRST         #
#               NON-BLANK RIGHT OF "SORT" WE'RE ALMOST READY TO        #
#                         STUFF LINE INTO STRING$                      #
  
                      $BEGIN
#??#                  MES = " GTTXT VALUES "; 
#??#                  S$PRTCD(MES); 
                      FLUSH;
#??#                  MES = "    KOL = "; 
#??#                  P = DEC(KOL); 
#??#                  C<10,10>MES = P;
#??#                  S$PRTCD(MES); 
                      FLUSH;
#??#                  MES = "    KKOL = ";
#??#                  P = DEC(KKOL);
#??#                  C<11,10>MES = P;
#??#                  S$PRTCD(MES); 
                      FLUSH;
#??#                  MES = "    LFKOL = "; 
#??#                  P = DEC(LFKOL); 
#??#                  C<12,10>MES = P;
#??#                  S$PRTCD(MES); 
                      FLUSH;
#??#                  MES = "    LINELEN = "; 
#??#                  P = DEC(LINELEN); 
#??#                  C<14,10>MES = P;
#??#                  S$PRTCD(MES); 
                      FLUSH;
  
                      $END
              IF KOL EQ LFKOL # BOTH ARE EQUAL TO DIRVRBLEN # 
                    THEN # THE CONTROL STATEMENT CONTAINS NO PARAMETERS#
                  BEGIN 
                  STRING$LEN = 0; 
                  STRING$C = "  ";   # SET TO ALL BLANKS               #
#***#             RETURN; 
                  END 
  
              IF KOL LS LFKOL  THEN 
                  BEGIN 
  
#                   THIS IS NOT POSSIBLE AFTER THE ABOVE CODE          #
#                   OF DIRECTIVE FILES HAS BEEN EXECUTED               #
  
                  END 
  
              IF KOL GR LFKOL THEN
                  BEGIN 
                  LINELEN = KKOL + (KOL - LFKOL); 
                  IF LINELEN GQ 240 # MAXIMUM LENGTH OF STRING$        #
                        THEN
                      BEGIN 
                      S$ERROR(E$62,STRING$,PTR);  # COMMAND STATEMNENT #
#                        MUST BE 240 CHARACTERS OR LESS                #
                      STATUS$NORML = FALSE; 
#***#                 RETURN; 
                      END 
                  C<KKOL,KOL - LFKOL>STRING$C  =
                        C<LFKOL + 1,KOL - LFKOL>LINE; 
                  STRING$LEN = LINELEN; 
                  IF ELLIPSFLAG #IS SET#
                        THEN  # SET KKOL FOR THE NEXT PASS             #
                      BEGIN 
                      KKOL = LINELEN; 
                      $BEGIN
#??#                  MES = "GTTXT-TEST DIR 5"; 
#??#                  S$PRTCD(MES); 
                      FLUSH;
                      $END
#***#                 GOTO DIR;  # TO GET NEXT LINE                    #
                      END 
#***#             RETURN; # ... IF OTHERWISE                           #
                  END 
              END 
  
          IF KKOL GR 0  THEN # THIS IS A CONTINUATION LINE             #
              BEGIN 
#          CHECK THE BEGINNING( 1ST NON-BLANK CHARACTERS )OF THIS LINE #
              FOR J= 0 STEP 1 UNTIL 79 DO 
                  IF  C<J,1>LINE NQ " "  THEN 
#***#                 GOTO TSTFRST; 
  
#          SINCE THIS IS A CONTINUATION LINE,IT SOULD NOT BEGIN WITH   #
#          VERB "SORT" OR "MERGE".                                     #
  
TSTFRST:      IF  C<J,4>LINE EQ "SORT"
                                OR  C<J,5>LINE EQ "MERGE"  THEN 
                  BEGIN 
                  S$ERROR(E$87);
                  STATUS$NORML = FALSE; 
#          THIS DIR-FILE LINE SHOULD NOT BE PROCESSED FUTHER           #
#***#             RETURN; 
                  END 
                      $BEGIN
  
#??#                  MES = " GTTXT VALUES "; 
#??#                  S$PRTCD(MES); 
                      FLUSH;
#??#                  MES = "    KOL = "; 
#??#                  P = DEC(KOL); 
#??#                  C<10,10>MES = P;
#??#                  S$PRTCD(MES); 
                      FLUSH;
#??#                  MES = "    KKOL = ";
#??#                  P = DEC(KKOL);
#??#                  C<11,10>MES = P;
#??#                  S$PRTCD(MES); 
                      FLUSH;
#??#                  MES = "    LFKOL = "; 
#??#                  P = DEC(LFKOL); 
#??#                  C<12,10>MES = P;
#??#                  S$PRTCD(MES); 
                      FLUSH;
#??#                  MES = "    LINELEN = "; 
#??#                  P = DEC(LINELEN); 
#??#                  C<14,10>MES = P;
#??#                  S$PRTCD(MES); 
                      FLUSH;
  
                      $END
              LINELEN = KKOL + KOL + 1; 
              IF LINELEN GQ 240 # MAXIMUM LENGTH OF STRING$            #
                    THEN
                  BEGIN 
                  S$ERROR(E$62,STRING$,PTR);  # COMMAND STATEMNENT     #
#                    MUST BE 240 CHARACTERS OR LESS                    #
                  STATUS$NORML = FALSE; 
#***#             RETURN; 
                  END 
              C<KKOL,KOL + 1>STRING$C = C<0,KOL + 1>LINE; 
              STRING$LEN = LINELEN; 
              IF ELLIPSFLAG #IS SET#
                    THEN  # SET KKOL FOR THE NEXT PASS                 #
                  KKOL = LINELEN + 1; 
              END 
  
          IF ELLIPSFLAG  THEN 
              BEGIN 
              $BEGIN
#??#          MES = "GTTXT-TEST DIR 6"; 
#??#          S$PRTCD(MES); 
              FLUSH;
              $END
#***#         GOTO DIR; 
              END 
  
#           OTHERWISE THIS LINE IS NOT CONTINUED SO                    #
  
                      $BEGIN
#??#                  MES = " GTTXT-BOTTOM";
#??#                  S$PRTCD(MES); 
                      FLUSH;
#??#                  MES = " GTTXT VALUES "; 
#??#                  S$PRTCD(MES); 
                      FLUSH;
#??#                  MES = "    KOL = "; 
#??#                  P = DEC(KOL); 
#??#                  C<10,10>MES = P;
#??#                  S$PRTCD(MES); 
                      FLUSH;
#??#                  MES = "    KKOL = ";
#??#                  P = DEC(KKOL);
#??#                  C<11,10>MES = P;
#??#                  S$PRTCD(MES); 
                      FLUSH;
#??#                  MES = "    LFKOL = "; 
#??#                  P = DEC(LFKOL); 
#??#                  C<12,10>MES = P;
#??#                  S$PRTCD(MES); 
                      FLUSH;
#??#                  MES = "    LINELEN = "; 
#??#                  P = DEC(LINELEN); 
#??#                  C<14,10>MES = P;
#??#                  S$PRTCD(MES); 
                      FLUSH;
                      $END
#***#     RETURN; 
  
          END # OF S$GTTXT #
          TERM
