         << LINES .001/.009 ARE RESERVED FOR SYSTEMS INTEGRATION >>     00000001
    POSTSERIES3 = (THISCPU = 2 OR THISCPU >= 4)#;                       03725000
    KA := 0,    << VARIABLE >>                                 <<*9886>>04052000
    ARRAY M44W(0:12):= "INVALID BOOLEAN EXPRESSION";           <<*9886>>04847000
    ARRAY M45W(0:7):= "EXPECTED GO[TO] ";                      <<*9886>>04849000
                                                               <<*9886>>06641000
    IF CHAR = "K" THEN   << VARIABLE KA IS RETURNED >>         <<*9886>>06641200
      BEGIN                                                    <<*9886>>06641400
      SETSTATUS(0);          << SET CCE FROM CALLER'S STATUS >><<*9886>>06641600
      I := I + 1;            << STEP OVER CHARACTER "C" >>     <<*9886>>06641700
      FACTOR := KA;                                            <<*9886>>06641800
      RETURN;                                                  <<*9886>>06642000
      END;                                                     <<*9886>>06642200
                                                               <<*9886>>06642400
INTEGER PROCEDURE OPERAND;                                     <<*9886>>06990000
<<                                                           >><<*9886>>06995000
<<  THIS PROCEDURE RETURNS AN OPERAND WHICH MAY BE A TERM    >><<*9886>>07000000
<<  PRECEDED BY A UNARY MINUS OR THE SUM OR DIFFERENCES OF   >><<*9886>>07005000
<<  A SET OF TERMS.                                          >><<*9886>>07010000
<<  RETURNED IS THE VALUE WITH THE CONDITION CODE            >><<*9886>>07015000
<<  SPECIFYING VALIDITY.                                     >><<*9886>>07017000
<<  CCL = NULL OPERAND,  CCE = GOOD OPERAND,  CCG = ERROR    >><<*9886>>07020000
<<                                                           >><<*9886>>07025000
    OPERAND := SUM;                                            <<*9886>>07180000
$PAGE                                                          <<*9886>>07185050
INTEGER PROCEDURE EXPRESSION;                                  <<*9886>>07185100
<<                                                           >><<*9886>>07185150
<<  THIS PROCEDURE RETURNS AN EXPRESSION WHICH MAY BE AN     >><<*9886>>07185200
<<  OPERAND OR THE RESULT OF TWO OPERANDS IN A CONDITIONAL   >><<*9886>>07185250
<<  STATEMENT.  THE CONDITIONS ARE <, >, =, <=, >=, <>.      >><<*9886>>07185300
<<  THE RESULT OF A CONDITIONAL STATEMENT IS EITHER 1 FOR    >><<*9886>>07185350
<<  TRUE OR 0 FOR FALSE.                                     >><<*9886>>07185370
<<                                                           >><<*9886>>07185400
<<  RETURNED IS THE VALUE WITH THE CONDITION CODE            >><<*9886>>07185450
<<  SPECIFYING VALIDITY.                                     >><<*9886>>07185470
<<  CCL = NULL EXPRESSION, CCE = GOOD EXPRESSION, CCG= ERROR >><<*9886>>07185500
<<                                                           >><<*9886>>07185550
BEGIN                                                          <<*9886>>07185600
  INTEGER OPERATOR;                                            <<*9886>>07185650
  LOGICAL RESULT, TEMP;                                        <<*9886>>07185670
                                                               <<*9886>>07185700
  RESULT := OPERAND;                                           <<*9886>>07185750
  SETSTATUS(0);       << SET RETURN STATUS >>                  <<*9886>>07185800
  IF <> THEN RETURN;  << RETURN RESULTS STATUS >>              <<*9886>>07185850
                                                               <<*9886>>07185900
  WHILE CHAR = ">" OR CHAR = "<" OR CHAR = "=" DO              <<*9886>>07185950
    BEGIN                                                      <<*9886>>07186000
    OPERATOR := CHAR;                                          <<*9886>>07186050
    I := I + 1;                                                <<*9886>>07186100
    IF OPERATOR = "<" AND CHAR = ">" THEN                      <<*9886>>07186110
      BEGIN                                                    <<*9886>>07186120
      OPERATOR := "<>";                                        <<*9886>>07186130
      I := I + 1;                                              <<*9886>>07186140
      END;                                                     <<*9886>>07186141
    IF CHAR = "=" THEN                                         <<*9886>>07186150
      BEGIN                                                    <<*9886>>07186200
      IF OPERATOR = ">" THEN OPERATOR := ">="                  <<*9886>>07186250
      ELSE IF OPERATOR = "<" THEN OPERATOR := "<=";            <<*9886>>07186300
      I := I + 1;                                              <<*9886>>07186350
      END;                                                     <<*9886>>07186400
    TEMP := OPERAND;                                           <<*9886>>07186450
    IF <> THEN  << AN ERROR CONDITION >>                       <<*9886>>07186500
      BEGIN  SETSTATUS(1);  RETURN;  END;                      <<*9886>>07186550
    IF OPERATOR = ">" AND RESULT > TEMP  OR                    <<*9886>>07186600
       OPERATOR = "<" AND RESULT < TEMP  OR                    <<*9886>>07186650
       OPERATOR = "=" AND RESULT = TEMP  OR                    <<*9886>>07186700
       OPERATOR = ">=" AND RESULT >= TEMP  OR                  <<*9886>>07186750
       OPERATOR = "<=" AND RESULT <= TEMP  OR                  <<*9886>>07186800
       OPERATOR = "<>" AND RESULT <> TEMP  THEN                <<*9886>>07186810
      RESULT := 1                                              <<*9886>>07186850
    ELSE RESULT := 0;                                          <<*9886>>07186900
    END;                                                       <<*9886>>07186950
  EXPRESSION := RESULT;                                        <<*9886>>07187000
END;                                                           <<*9886>>07187050
     PRINT'INFO(64,IOQ'STAT.(13:3) );                          <<*9280>>08950000
     PRINT'INFO(66,IOQ'STAT.(8:5) );                           <<*9280>>08960000
  LOGICAL UPFLAG;                                              <<*9886>>09037000
                                                               <<*9886>>09038000
  UPFLAG := TRUE;                                              <<*9886>>09400100
  FOR J := 0 UNTIL L-1 DO   << UPSHIFT EXCEPT BETWEEN QUOTES >><<*9886>>09400200
    BEGIN                                                      <<*9886>>09400300
    IF BM(J) = QUOTE THEN UPFLAG := NOT UPFLAG;                <<*9886>>09400400
    IF UPFLAG AND "a" <= INTEGER(BM(J)) <= "z" then            <<*9886>>09400500
    BM(J) := BM(J) - "a" + "A";                                <<*9886>>09400600
    END;                                                       <<*9886>>09400700
    ELSE IF M="DO" OR M="SA" THEN CONVERTPARAMS:=TRUE          <<*9886>>11215000
          DEBUG;                                               <<*9886>>11957000
      "IF <BOOLEAN EXPR> GO[TO] <STATEMENT #>    ",            <<*9886>>12097000
      "SA  SAVE CMND FILE    SH  PRINT DO & PROG ",            <<*9886>>12140000
      "T   PRINT TIME        UB  USE BUFFER #    ",            <<*9886>>12145000
      "K:    GENERAL PURPOSE VARIABLE            ",            <<*9886>>12187000
      "THE  IF  COMMAND ALLOWS FOR CONDITIONAL   ",            <<*9886>>12280200
      "BRANCHING.                                ",            <<*9886>>12280400
      "                                          ",            <<*9886>>12280600
      "  IF <BOOLEAN EXPR> GO[TO] <STATEMENT #>  ",            <<*9886>>12280800
      "                                          ",            <<*9886>>12281000
      "ALLOWED BOOLEAN OPERATORS ARE ONE OF:     ",            <<*9886>>12281200
      "  >,<,=,>=,<=,<>                          ",            <<*9886>>12281400
      "                                          ",            <<*9886>>12281600
      "EXAMPLES:  IF PA >= %177000 GOTO 30       ",            <<*9886>>12281800
      "           IF K < PB/2+1 GO 50            ",            <<*9886>>12282000
      "                                          ",            <<*9886>>12282200
      "MORE?   (HIT CR TO CONTINUE)              ",            <<*9886>>12282400
      "CAN BE COMPARED WITH THE CMP M,N  COMMAND:",            <<*9886>>12320000
   " DUMP [<REL REC #>] [,<REC COUNT>] [,<A = ASCII>]",CRLF,   <<D9530>>14020000
            ASCII (DBUF(LINEP+COLN),8,PBBUF(COLN*7));          <<D9530>>14575000
            PBBUF (COLN*7+6) := " ";                           <<D9530>>14580000
         PBBUF (55) := " ";                                    <<D9530>>14595000
         MOVE PBBUF (56) := DBBUF (LINEP & ASL(1)), (16);      <<D9530>>14600000
         XREG := 65;                                           <<D9530>>14605000
         WHILE (XREG := XREG+1) < 82 DO                        <<D9530>>14610000
         LEN := IF SHORT THEN 31 ELSE 43;                      <<D9530>>14640000
        WHILE (XREG := XREG + 1) <= (RECLEN & ASL(1)+1) DO     <<D9530>>14685000
    IF NOT NONUM THEN LIO(NUMBUF,30,0);                        <<D9530>>14710000
        PBUF := "  ";  MOVE PBUF(1) := PBUF,(27);              <<D9530>>14715000
        LINEP := -27;                                          <<D9530>>14720000
        WHILE (LINEP := LINEP + 27) < RECLEN DO                <<D9530>>14725000
          ASCII((LINEP & ASL(1)),8,BBUF(3));  <<BYTE NUMBER>>  <<D9530>>14735000
          MOVE PBUF := DBUF(LINEP),(27);                       <<D9530>>14740000
$EDIT VOID=14745                                               <<D9530>>14745000
          LIO(BUF(2),31,0);  <<PRINT IT>>                      <<D9530>>14750000
  INTEGER TSOURCE, TFNL, TDF, TEMP;                            <<*9886>>15140000
<<***********************************************************>><<*9886>>16245050
<<                                                           >><<*9886>>16245100
<<  IF (EXPRESSION) GO[TO] (STATEMENT NUMBER)      (IF)      >><<*9886>>16245150
<<                                                           >><<*9886>>16245200
<<***********************************************************>><<*9886>>16245250
                                                               <<*9886>>16245300
    IF M="IF" THEN                                             <<*9886>>16245350
      BEGIN                                                    <<*9886>>16245400
      CHECKPROG(TRUE);                                         <<*9886>>16245450
      J := EXPRESSION;                                         <<*9886>>16245500
      IF J = 0 THEN RETURN  << BOOLEAN EXPRESSION FALSE >>     <<*9886>>16245550
      ELSE IF J = 1 THEN    << BOOLEAN EXPRESSION TRUE >>      <<*9886>>16245600
        BEGIN                                                  <<*9886>>16245650
        IF CHAR <> "G" THEN                                    <<*9886>>16245700
          BEGIN                                                <<*9886>>16245750
          PRINTE(M45W,8);  << EXPECTING GO[TO] >>              <<*9886>>16245800
          RETURN;                                              <<*9886>>16245850
          END;                                                 <<*9886>>16245900
        WHILE NOT("0"<=CHAR<="9") AND I<L DO I:=I+1;           <<*9886>>16245950
        IF I < L THEN                                          <<*9886>>16245955
          BEGIN                                                <<*9886>>16245956
          MOVE BM(I) := BM(I) WHILE N, 1;                      <<*9886>>16246000
          TEMP := TOS - @BM - I; << LENGTH OF NUMBER >>        <<*9886>>16246050
          END                                                  <<*9886>>16246060
        ELSE TEMP := 0;                                        <<*9886>>16246070
        J := BINARY(BM(I),TEMP);                               <<*9886>>16246100
        IF <> THEN                                             <<*9886>>16246150
          BEGIN                                                <<*9886>>16246200
          PRINTE(M2,12);  << INVALID STATMENT NUMBER >>        <<*9886>>16246250
          RETURN;                                              <<*9886>>16246300
          END;                                                 <<*9886>>16246350
        K := 0;                                                <<*9886>>16246400
        WHILE K<PROGEND AND PROG(K)<>J DO STEP'PC(K);          <<*9886>>16246450
        IF K=PROGEND THEN   << STATEMENT NOT FOUND >>          <<*9886>>16246500
          PRINTE(M2, 12)    << INVALID STATEMENT NUMBER >>     <<*9886>>16246550
        ELSE IF NOT PROGFLAG OR SOURCE=1 THEN                  <<*9886>>16246600
          BEGIN   << NOT EXECUTING OR EXECUTING HERE >>        <<*9886>>16246650
          PC := K;    << SET NEW PROGRAM COUNTER >>            <<*9886>>16246700
          IF NOT PROGFLAG THEN                                 <<*9886>>16246750
            BEGIN  << START EXECUTION ON A NEW LEVEL >>        <<*9886>>16246800
            PROGFLAG := TRUE;      PROGRUN := 0;               <<*9886>>16246850
            TSOURCE := SOURCE;     SOURCE := 1;                <<*9886>>16246900
            DO DOMAIN UNTIL EFLAG OR SFLAG;                    <<*9886>>16246950
            SOURCE := TSOURCE;     SFLAG := PROGFLAG := FALSE; <<*9886>>16247000
            END;                                               <<*9886>>16247050
          END                                                  <<*9886>>16247100
        ELSE PRINTE(M4, 11);  << ALREADY RUNNING ELSEWHERE >>  <<*9886>>16247150
        RETURN;                                                <<*9886>>16247200
        END                                                    <<*9886>>16247250
      ELSE PRINTE(M44W, 13);  << INVALID BOOLEAN EXPRESSION >> <<*9886>>16247300
      END;                                                     <<*9886>>16247350
                                                               <<*9886>>16247400
<<***********************************************************>><<*9886>>16247450
<<                                                           >><<*9886>>16247500
<<  GET PARAMATERS AND CHECK FOR MORE COMMANDS               >><<*9886>>16247550
<<                                                           >><<*9886>>16247600
<<***********************************************************>><<*9886>>16247650
                                                               <<*9886>>16247700
    <<*******************************************************>><<*9886>>17835050
    <<                                                       >><<*9886>>17835100
    <<  SAVE STORED PROGRAM (SA)                             >><<*9886>>17835150
    <<                                                       >><<*9886>>17835200
    <<*******************************************************>><<*9886>>17835250
                                                               <<*9886>>17835300
    IF M="SA" THEN BEGIN     << SAVE PROGRAM >>                <<*9886>>17835350
      CHECKPROG(FALSE);  << CHECK IF ANY PROGRAM >>            <<*9886>>17835400
      BM(L) := " ";                                            <<*9886>>17835450
      TDF := DF;                                               <<*9886>>17835500
      DF := FOPEN(BM(I),%3,%0);                                <<*9886>>17835550
      IF = THEN   << FILE EXISTS >>                            <<*9886>>17835600
        BEGIN                                                  <<*9886>>17835650
        MOVE BM := BM(I), (L-I);                               <<*9886>>17835700
        MOVE BM(L-I) := " EXISTS - NO SAVE DONE";              <<*9886>>17835750
        PRINTE(M,I-L-22);                                      <<*9886>>17835770
        FCLOSE(DF,1,0);                                        <<*9886>>17835800
        END                                                    <<*9886>>17835850
      ELSE                                                     <<*9886>>17835900
        BEGIN                                                  <<*9886>>17835950
        DF := FOPEN(BM(I),%4,%1,-80,,,,,,10000D,10,1);         <<*9886>>17836000
        IF <> THEN                                             <<*9886>>17836050
          BEGIN                                                <<*9886>>17836100
          MOVE BM := BM(I), (L-I);                             <<*9886>>17836150
          MOVE BM(L-I) := " FOPEN FAILED";                     <<*9886>>17836200
          PRINTE(M,I-L-13);                                    <<*9886>>17836250
          END                                                  <<*9886>>17836300
        ELSE                                                   <<*9886>>17836350
          BEGIN                                                <<*9886>>17836400
          R := 1;   R1 := 10000;    << SAVE ENTIRE PROGRAM >>  <<*9886>>17836450
          MOVE BM := "     ";                                  <<*9886>>17836500
          I  := FINDLINE(R,  TRUE );  << FIND THIS OR NEXT >>  <<*9886>>17836550
          R1 := FINDLINE(R1, FALSE);  << THIS OR PREVIOUS >>   <<*9886>>17836600
                                                               <<*9886>>17836650
          WHILE I<PROGEND AND I<=R1 DO << GET NEXT STATEMENT >><<*9886>>17836700
            BEGIN                                              <<*9886>>17836750
            ASCII(PROG(I),10,BM);                              <<*9886>>17836800
            J := PROG(X:=X+1);  << LENGTH OF STATEMENT >>      <<*9886>>17836850
            MOVE BM(5) := BPROG(I*2+4), (J);                   <<*9886>>17836900
            FWRITE(DF,M,-(J+5),%0);      STEP'PC(I);           <<*9886>>17836950
            END;                                               <<*9886>>17837000
          FCLOSE(DF,1,0);                                      <<*9886>>17837050
          END;                                                 <<*9886>>17837100
        END;                                                   <<*9886>>17837150
                                                               <<*9886>>17837200
      DF := TDF;                                               <<*9886>>17837250
      RETURN;                                                  <<*9886>>17837300
    END;                                                       <<*9886>>17837350
        MOVE BM(X) := ", K = ";          X := X + 6;           <<*9886>>20962000
        X := ASCII(KA, 10, BM(X)) + X;                         <<*9886>>20963000
<<***********************************************************>><<*9886>>21425500
<<                                                           >><<*9886>>21426000
<<  SET THE VARIABLE KA  (K)                                 >><<*9886>>21426500
<<                                                           >><<*9886>>21427000
<<***********************************************************>><<*9886>>21427500
                                                               <<*9886>>21428000
IF T="K" THEN                                                  <<*9886>>21428500
  BEGIN    KA := R;    RETURN;    END;                         <<*9886>>21429000
                                                               <<*9886>>21429500
