IDENTIFICATION DIVISION.
       PROGRAM-ID.  PNPCHECK.

      *-------------------------------------------------------------*
      *     PNPCHECK - COBOL Program Written September 2011         *
      *-------------------------------------------------------------*
      *               Programmer - William T. Voris                 *
      *-------------------------------------------------------------*
      *                                                             *
      *     This called subroutine represents the solution to the   *
      *     P portion of the P NP problem. The search process       *
      *     looks for equations by looping through all possible     *
      *     integer sets. When it finds an equation that sums       *
      *     to zero it passes the result back to PNPSOLVE.          *
      *                                                             *
      *-------------------------------------------------------------*
      *     Log of changes: Added Exponential Time logic Oct 2013   *
      *                   : Fixed 25 integer set logic   Jan 2014   *
      *                   : Fixed 25 integer set temporal anomalies *
      *                                                  Jan 2014   *
      *                   : Cosmetic clean up            Jan 2014   *
      *-------------------------------------------------------------*

       ENVIRONMENT DIVISION.

       CONFIGURATION SECTION.

       INPUT-OUTPUT SECTION.
       FILE-CONTROL.

       DATA DIVISION.
       FILE SECTION.

       WORKING-STORAGE SECTION.

       01  NUMBER-IN-EQUATION          PIC 999  VALUE 000.

       01  DONE-SW                     PIC X    VALUE "N".
           88 DONE                              VALUE "Y".

       01  SUBSCRIPTS.
           05  SUB-L                   PIC 9(3) VALUE 001.
           05  SUBC-O                  PIC 9(3) VALUE 001.
           05  SUBC-L                  PIC 9(3) VALUE 001.
           05  SUB-O                   PIC 9(3) VALUE 001.
           05  SUBC-1                  PIC 9(2) VALUE ZERO COMP.
           05  SUBC-2                  PIC 9(2) VALUE ZERO COMP.
           05  SUBC-3                  PIC 9(2) VALUE ZERO COMP.
           05  SUBC-4                  PIC 9(2) VALUE ZERO COMP.
           05  SUBC-5                  PIC 9(2) VALUE ZERO COMP.
           05  SUBC-6                  PIC 9(2) VALUE ZERO COMP.
           05  SUBC-7                  PIC 9(2) VALUE ZERO COMP.
           05  SUBC-8                  PIC 9(2) VALUE ZERO COMP.
           05  SUBC-9                  PIC 9(2) VALUE ZERO COMP.
           05  SUBC-10                 PIC 9(2) VALUE ZERO COMP.
           05  SUBC-11                 PIC 9(2) VALUE ZERO COMP.
           05  SUBC-12                 PIC 9(2) VALUE ZERO COMP.
           05  SUBC-13                 PIC 9(2) VALUE ZERO COMP.
           05  SUBC-14                 PIC 9(2) VALUE ZERO COMP.

       01  OUT-DISPLAY-TABLE.
           05 OUT-LINE OCCURS 14 TIMES.
              10 FILLER       PIC X(2).
              10 INTEGER-LIST OCCURS 15 TIMES.
                 15 INT-DIS   PIC --9.
                 15 COM-DIS   PIC X(1).
              10 PRINT-TICK   PIC ZZZ,ZZZ,ZZ9.

       01  RESULTS-FIELDS.
           05  RESULT-P       PIC S9999 VALUE ZERO.
           05  RESULT-ST      PIC S9999 VALUE ZERO.
           05  RESULT-25      PIC S9999 VALUE ZERO.

       LINKAGE SECTION.
       01  IO-LINK.
           05 CHECK-TICK       PIC 9999999999.
           05 SOLVE-TICK       PIC 9999999999.
           05 EXPON-TICK       PIC 9999999999.
           05 SUM-VALUE-CK     PIC S9999.
           05 IO-OUT-LINE      PIC X(73).
           05 POLY-EXP-SW      PIC X.
           05 PROCESS-LEVEL    PIC 99.
              88 PROCESS-LEVEL-OK VALUES 07 08 09 10 11 12 13 14.
           05 TABLE-OF-INTEGERS.
              10 INT           PIC S99 OCCURS 25 TIMES.

       PROCEDURE DIVISION USING IO-LINK.

       MAINLINE.

           DISPLAY "Checking integers, please wait" AT 2504.
           MOVE SPACES TO IO-OUT-LINE.
           MOVE 1      TO EXPON-TICK.
           MOVE 0      TO CHECK-TICK.

       CHECK-RTN.

           IF DONE
              MOVE "N" TO DONE-SW
              DISPLAY "                                   " AT 2504
              GOBACK.

           MOVE 0            TO SUBC-1.
           PERFORM P1-TWOS   THRU PX-TWOS.

           MOVE 0            TO SUBC-1.
           PERFORM P1-THREES THRU PX-THREES.

           MOVE 0            TO SUBC-1.
           PERFORM P1-FOURS  THRU PX-FOURS.

           MOVE 0            TO SUBC-1.
           IF INT (5) NOT EQUAL ZEROS
              DISPLAY "Checking 5 integers, wait.      " AT 2504
              PERFORM P1-FIVES THRU PX-FIVES.

           MOVE 0            TO SUBC-1
           IF INT (6) NOT EQUAL ZEROS
              DISPLAY "Checking 6 integers, wait..     " AT 2504
              PERFORM P1-SIXES THRU PX-SIXES.

           MOVE 0            TO SUBC-1.
           IF INT (7) NOT EQUAL ZEROS
              DISPLAY "Checking 7 integers, wait...    " AT 2504
              PERFORM P1-SEVENS THRU PX-SEVENS.

           IF PROCESS-LEVEL LESS THAN 8
              GOBACK.

           MOVE 0          TO SUBC-1.
           IF INT (8) NOT EQUAL ZEROS
              DISPLAY "Checking 8 integers, wait....   " AT 2504
              PERFORM P1-EIGHTS THRU PX-EIGHTS.

           IF PROCESS-LEVEL LESS THAN 9
              GOBACK.

           MOVE 0          TO SUBC-1.
           IF INT (9) NOT EQUAL ZEROS
              DISPLAY "Checking 9 integers, wait.....  " AT 2504
              PERFORM P1-NINES  THRU PX-NINES.

           IF PROCESS-LEVEL LESS THAN 10
              GOBACK.

           MOVE 0          TO SUBC-1
           IF INT (10) NOT EQUAL ZEROS
              DISPLAY "Checking 10 integers, wait......" AT 2504
              PERFORM P1-TENS   THRU PX-TENS.

           IF PROCESS-LEVEL LESS THAN 11
              GOBACK.

           MOVE 0          TO SUBC-1.
           IF INT (11) NOT EQUAL ZEROS
              DISPLAY "Checking 11 integers, wait......" AT 2504
              PERFORM P1-ELEVENS THRU PX-ELEVENS.

           IF PROCESS-LEVEL LESS THAN 12
              GOBACK.

           MOVE 0          TO SUBC-1.
           IF INT (12) NOT EQUAL ZEROS
              DISPLAY "Checking 12 integers, wait......" AT 2504
              PERFORM P1-TWELVES THRU PX-TWELVES.

           IF PROCESS-LEVEL LESS THAN 13
              GOBACK.

           MOVE 0          TO SUBC-1.
           IF INT (13) NOT EQUAL ZEROS
              DISPLAY "Checking 13 integers, wait......" AT 2504
              PERFORM P1-THIRTEENS THRU PX-THIRTEENS.

           IF PROCESS-LEVEL LESS THAN 14
              GOBACK.

           MOVE 0          TO SUBC-1.
           IF INT (14) NOT EQUAL ZEROS
              DISPLAY "Checking 14 integers, wait......" AT 2504
              PERFORM P1-FOURTEENS THRU PEND.

           DISPLAY "                                   " AT 2504.
           GOBACK.

       CHECK-RTN-X. EXIT.

      *-------------------------------------------------------------*
      *                                                             *
      *                       Check Routines                        *
      *                                                             *
      *-------------------------------------------------------------*
      *                                                             *
      *     This logic routine scans the line of numbers with       *
      *     an exponential method. It is effective for a small      *
      *     number of integers. However, its limits become          *
      *     obvious with large integer sets. This method            *
      *     evaluates all possible integer combinations.            *
      *     The logic ticks in this program track both              *
      *     exponential time and polynomial time. It loops          *
      *     and then examines every potential column and then       *
      *     scans these sequences. However, the exponential         *
      *     nesting logic soon goes beyond the program's abilty     *
      *     to resolve it in a manner that could be called          *
      *     simple or efficient. Therefore the maximum number       *
      *     of integers evaluated for a subset is 14. It does       *
      *     not use an algorithm, but a grid similar to the         *
      *     example in the white paper.                             *
      *                                                             *
      *-------------------------------------------------------------*

       P1-TWOS.
           ADD 1 TO SUBC-1.
           IF SUBC-1 LESS THAN 25
              MOVE SUBC-1 TO SUBC-2
              GO TO P2-TWOS ELSE GO TO PX-TWOS.
       P2-TWOS.
           ADD 1    TO SUBC-2.
           IF SUBC-2 LESS THAN 26
              PERFORM CHECK-EQUATION-2 THRU CHECK-EQUATION-2-X
              ADD 1 TO EXPON-TICK
              GO    TO P2-TWOS
           ELSE
              ADD 1 TO EXPON-TICK
              GO    TO P1-TWOS.
       PX-TWOS. EXIT.

       P1-THREES.
           ADD 1 TO SUBC-1.
           IF SUBC-1 LESS THAN 24
              MOVE SUBC-1 TO SUBC-2
              GO TO P2-THREES ELSE GO TO PX-THREES.
       P2-THREES.
           ADD 1 TO SUBC-2.
           IF SUBC-2 LESS THAN 25
              MOVE SUBC-2 TO SUBC-3
              GO TO P3-THREES ELSE GO TO P1-THREES.
       P3-THREES.
           ADD 1    TO SUBC-3.
           IF SUBC-3 LESS THAN 26
              PERFORM CHECK-EQUATION-3 THRU CHECK-EQUATION-3-X
              ADD 1 TO EXPON-TICK
              GO    TO P3-THREES
           ELSE
              ADD 1 TO EXPON-TICK
              GO    TO P2-THREES.
       PX-THREES. EXIT.

       P1-FOURS.
           ADD 1 TO SUBC-1.
           IF SUBC-1 LESS THAN 23
              MOVE SUBC-1 TO SUBC-2
              GO TO P2-FOURS ELSE GO TO PX-FOURS.
       P2-FOURS.
           ADD 1 TO SUBC-2.
           IF SUBC-2 LESS THAN 24
              MOVE SUBC-2 TO SUBC-3
              GO TO P3-FOURS ELSE GO TO P1-FOURS.
       P3-FOURS.
           ADD 1 TO SUBC-3.
           IF SUBC-3 LESS THAN 25
              MOVE SUBC-3 TO SUBC-4
              GO TO P4-FOURS ELSE GO TO P2-FOURS.
       P4-FOURS.
           ADD 1    TO SUBC-4.
           IF SUBC-4 LESS THAN 26
              PERFORM CHECK-EQUATION-4 THRU CHECK-EQUATION-4-X
              ADD 1 TO EXPON-TICK
              GO    TO P4-FOURS
           ELSE
              ADD 1 TO EXPON-TICK
              GO    TO P3-FOURS.
       PX-FOURS. EXIT.

       P1-FIVES.
           ADD 1 TO SUBC-1.
           IF SUBC-1 LESS THAN 22
              MOVE SUBC-1 TO SUBC-2
              GO TO P2-FIVES ELSE GO TO PX-FIVES.
       P2-FIVES.
           ADD 1 TO SUBC-2.
           IF SUBC-2 LESS THAN 23
              MOVE SUBC-2 TO SUBC-3
              GO TO P3-FIVES ELSE GO TO P1-FIVES.
       P3-FIVES.
           ADD 1 TO SUBC-3.
           IF SUBC-3 LESS THAN 24
              MOVE SUBC-3 TO SUBC-4
              GO TO P4-FIVES ELSE GO TO P2-FIVES.
       P4-FIVES.
           ADD 1 TO SUBC-4.
           IF SUBC-4 LESS THAN 25
              MOVE SUBC-4 TO SUBC-5
              GO TO P5-FIVES ELSE GO TO P3-FIVES.
       P5-FIVES.
           ADD 1    TO SUBC-5.
           IF SUBC-5 LESS THAN 26
              PERFORM CHECK-EQUATION-5 THRU CHECK-EQUATION-5-X
              ADD 1 TO EXPON-TICK
              GO    TO P5-FIVES
           ELSE
              ADD 1 TO EXPON-TICK
              GO    TO P4-FIVES.
       PX-FIVES. EXIT.

       P1-SIXES.
           ADD 1 TO SUBC-1.
           IF SUBC-1 LESS THAN 21
              MOVE SUBC-1 TO SUBC-2
              GO TO P2-SIXES ELSE GO TO PX-SIXES.
       P2-SIXES.
           ADD 1 TO SUBC-2.
           IF SUBC-2 LESS THAN 22
              MOVE SUBC-2 TO SUBC-3
              GO TO P3-SIXES ELSE GO TO P1-SIXES.
       P3-SIXES.
           ADD 1 TO SUBC-3.
           IF SUBC-3 LESS THAN 23
              MOVE SUBC-3 TO SUBC-4
              GO TO P4-SIXES ELSE GO TO P2-SIXES.
       P4-SIXES.
           ADD 1 TO SUBC-4.
           IF SUBC-4 LESS THAN 24
              MOVE SUBC-4 TO SUBC-5
              GO TO P5-SIXES ELSE GO TO P3-SIXES.
       P5-SIXES.
           ADD 1 TO SUBC-5.
           IF SUBC-5 LESS THAN 25
              MOVE SUBC-5 TO SUBC-6
              GO TO P6-SIXES ELSE GO TO P4-SIXES.
       P6-SIXES.
           ADD 1    TO SUBC-6.
           IF SUBC-6 LESS THAN 26
              PERFORM CHECK-EQUATION-6 THRU CHECK-EQUATION-6-X
              ADD 1 TO EXPON-TICK
              GO    TO P6-SIXES
           ELSE
              ADD 1 TO EXPON-TICK
              GO    TO P5-SIXES.
       PX-SIXES. EXIT.

       P1-SEVENS.
           ADD 1 TO SUBC-1.
           IF SUBC-1 LESS THAN 20
              MOVE SUBC-1 TO SUBC-2
              GO TO P2-SEVENS ELSE GO TO PX-SEVENS.
       P2-SEVENS.
           ADD 1 TO SUBC-2.
           IF SUBC-2 LESS THAN 21
              MOVE SUBC-2 TO SUBC-3
              GO TO P3-SEVENS ELSE GO TO P1-SEVENS.
       P3-SEVENS.
           ADD 1 TO SUBC-3.
           IF SUBC-3 LESS THAN 22
              MOVE SUBC-3 TO SUBC-4
              GO TO P4-SEVENS ELSE GO TO P2-SEVENS.
       P4-SEVENS.
           ADD 1 TO SUBC-4.
           IF SUBC-4 LESS THAN 23
              MOVE SUBC-4 TO SUBC-5
              GO TO P5-SEVENS ELSE GO TO P3-SEVENS.
       P5-SEVENS.
           ADD 1 TO SUBC-5.
           IF SUBC-5 LESS THAN 24
              MOVE SUBC-5 TO SUBC-6
              GO TO P6-SEVENS ELSE GO TO P4-SEVENS.
       P6-SEVENS.
           ADD 1 TO SUBC-6.
           IF SUBC-6 LESS THAN 25
              MOVE SUBC-6 TO SUBC-7
              GO TO P7-SEVENS ELSE GO TO P5-SEVENS.
       P7-SEVENS.
           ADD 1    TO SUBC-7.
           IF SUBC-7 LESS THAN 26
              PERFORM CHECK-EQUATION-7 THRU CHECK-EQUATION-7-X
              ADD 1 TO EXPON-TICK
              GO    TO P7-SEVENS
           ELSE
              ADD 1 TO EXPON-TICK
              GO    TO P6-SEVENS.
       PX-SEVENS. EXIT.

       P1-EIGHTS.
           ADD 1 TO SUBC-1.
           IF SUBC-1 LESS THAN 19
              MOVE SUBC-1 TO SUBC-2
              GO TO P2-EIGHTS ELSE GO TO PX-EIGHTS.
       P2-EIGHTS.
           ADD 1 TO SUBC-2.
           IF SUBC-2 LESS THAN 20
              MOVE SUBC-2 TO SUBC-3
              GO TO P3-EIGHTS ELSE GO TO P1-EIGHTS.
       P3-EIGHTS.
           ADD 1 TO SUBC-3.
           IF SUBC-3 LESS THAN 21
              MOVE SUBC-3 TO SUBC-4
              GO TO P4-EIGHTS ELSE GO TO P2-EIGHTS.
       P4-EIGHTS.
           ADD 1 TO SUBC-4.
           IF SUBC-4 LESS THAN 22
              MOVE SUBC-4 TO SUBC-5
              GO TO P5-EIGHTS ELSE GO TO P3-EIGHTS.
       P5-EIGHTS.
           ADD 1 TO SUBC-5.
           IF SUBC-5 LESS THAN 23
              MOVE SUBC-5 TO SUBC-6
              GO TO P6-EIGHTS ELSE GO TO P4-EIGHTS.
       P6-EIGHTS.
           ADD 1 TO SUBC-6.
           IF SUBC-6 LESS THAN 24
              MOVE SUBC-6 TO SUBC-7
              GO TO P7-EIGHTS ELSE GO TO P5-EIGHTS.
       P7-EIGHTS.
           ADD 1 TO SUBC-7.
           IF SUBC-7 LESS THAN 25
              MOVE SUBC-7 TO SUBC-8
              GO TO P8-EIGHTS ELSE GO TO P6-EIGHTS.
       P8-EIGHTS.
           ADD 1    TO SUBC-8.
           IF SUBC-8 LESS THAN 26
              PERFORM CHECK-EQUATION-8 THRU CHECK-EQUATION-8-X
              ADD 1 TO EXPON-TICK
              GO    TO P8-EIGHTS
           ELSE
              ADD 1 TO EXPON-TICK
              GO    TO P7-EIGHTS.
       PX-EIGHTS. EXIT.

       P1-NINES.
           ADD 1 TO SUBC-1.
           IF SUBC-1 LESS THAN 18
              MOVE SUBC-1 TO SUBC-2
              GO TO P2-NINES ELSE GO TO PX-NINES.
       P2-NINES.
           ADD 1 TO SUBC-2.
           IF SUBC-2 LESS THAN 19
              MOVE SUBC-2 TO SUBC-3
              GO TO P3-NINES ELSE GO TO P1-NINES.
       P3-NINES.
           ADD 1 TO SUBC-3.
           IF SUBC-3 LESS THAN 20
              MOVE SUBC-3 TO SUBC-4
              GO TO P4-NINES ELSE GO TO P2-NINES.
       P4-NINES.
           ADD 1 TO SUBC-4.
           IF SUBC-4 LESS THAN 21
              MOVE SUBC-4 TO SUBC-5
              GO TO P5-NINES ELSE GO TO P3-NINES.
       P5-NINES.
           ADD 1 TO SUBC-5.
           IF SUBC-5 LESS THAN 22
              MOVE SUBC-5 TO SUBC-6
              GO TO P6-NINES ELSE GO TO P4-NINES.
       P6-NINES.
           ADD 1 TO SUBC-6.
           IF SUBC-6 LESS THAN 23
              MOVE SUBC-6 TO SUBC-7
              GO TO P7-NINES ELSE GO TO P5-NINES.
       P7-NINES.
           ADD 1 TO SUBC-7.
           IF SUBC-7 LESS THAN 24
              MOVE SUBC-7 TO SUBC-8
              GO TO P8-NINES ELSE GO TO P6-NINES.
       P8-NINES.
           ADD 1 TO SUBC-8.
           IF SUBC-8 LESS THAN 25
              MOVE SUBC-8 TO SUBC-9
              GO TO P9-NINES ELSE GO TO P7-NINES.
       P9-NINES.
           ADD 1    TO SUBC-9.
           IF SUBC-9 LESS THAN 26
              PERFORM CHECK-EQUATION-9 THRU CHECK-EQUATION-9-X
              ADD 1 TO EXPON-TICK
              GO    TO P9-NINES
           ELSE
              ADD 1 TO EXPON-TICK
              GO    TO P8-NINES.
       PX-NINES. EXIT.

       P1-TENS.
           ADD 1 TO SUBC-1.
           IF SUBC-1 LESS THAN 17
              MOVE SUBC-1 TO SUBC-2
              GO TO P2-TENS ELSE GO TO PX-TENS.
       P2-TENS.
           ADD 1 TO SUBC-2.
           IF SUBC-2 LESS THAN 18
              MOVE SUBC-2 TO SUBC-3
              GO TO P3-TENS ELSE GO TO P1-TENS.
       P3-TENS.
           ADD 1 TO SUBC-3.
           IF SUBC-3 LESS THAN 19
              MOVE SUBC-3 TO SUBC-4
              GO TO P4-TENS ELSE GO TO P2-TENS.
       P4-TENS.
           ADD 1 TO SUBC-4.
           IF SUBC-4 LESS THAN 20
              MOVE SUBC-4 TO SUBC-5
              GO TO P5-TENS ELSE GO TO P3-TENS.
       P5-TENS.
           ADD 1 TO SUBC-5.
           IF SUBC-5 LESS THAN 21
              MOVE SUBC-5 TO SUBC-6
              GO TO P6-TENS ELSE GO TO P4-TENS.
       P6-TENS.
           ADD 1 TO SUBC-6.
           IF SUBC-6 LESS THAN 22
              MOVE SUBC-6 TO SUBC-7
              GO TO P7-TENS ELSE GO TO P5-TENS.
       P7-TENS.
           ADD 1 TO SUBC-7.
           IF SUBC-7 LESS THAN 23
              MOVE SUBC-7 TO SUBC-8
              GO TO P8-TENS ELSE GO TO P6-TENS.
       P8-TENS.
           ADD 1 TO SUBC-8.
           IF SUBC-8 LESS THAN 24
              MOVE SUBC-8 TO SUBC-9
              GO TO P9-TENS ELSE GO TO P7-TENS.
       P9-TENS.
           ADD 1 TO SUBC-9.
           IF SUBC-9 LESS THAN 25
              MOVE SUBC-9 TO SUBC-10
              GO TO P10-TENS ELSE GO TO P8-TENS.
       P10-TENS.
           ADD 1    TO SUBC-10.
           IF SUBC-10 LESS THAN 26
              PERFORM CHECK-EQUATION-10 THRU CHECK-EQUATION-10-X
              ADD 1 TO EXPON-TICK
              GO    TO P10-TENS
           ELSE
              ADD 1 TO EXPON-TICK
              GO    TO P9-TENS.
       PX-TENS. EXIT.

       P1-ELEVENS.
           ADD 1 TO SUBC-1.
           IF SUBC-1 LESS THAN 16
              MOVE SUBC-1 TO SUBC-2
              GO TO P2-ELEVENS ELSE GO TO PX-ELEVENS.
       P2-ELEVENS.
           ADD 1 TO SUBC-2.
           IF SUBC-2 LESS THAN 17
              MOVE SUBC-2 TO SUBC-3
              GO TO P3-ELEVENS ELSE GO TO P1-ELEVENS.
       P3-ELEVENS.
           ADD 1 TO SUBC-3.
           IF SUBC-3 LESS THAN 18
              MOVE SUBC-3 TO SUBC-4
              GO TO P4-ELEVENS ELSE GO TO P2-ELEVENS.
       P4-ELEVENS.
           ADD 1 TO SUBC-4.
           IF SUBC-4 LESS THAN 19
              MOVE SUBC-4 TO SUBC-5
              GO TO P5-ELEVENS ELSE GO TO P3-ELEVENS.
       P5-ELEVENS.
           ADD 1 TO SUBC-5.
           IF SUBC-5 LESS THAN 20
              MOVE SUBC-5 TO SUBC-6
              GO TO P6-ELEVENS ELSE GO TO P4-ELEVENS.
       P6-ELEVENS.
           ADD 1 TO SUBC-6.
           IF SUBC-6 LESS THAN 21
              MOVE SUBC-6 TO SUBC-7
              GO TO P7-ELEVENS ELSE GO TO P5-ELEVENS.
       P7-ELEVENS.
           ADD 1 TO SUBC-7.
           IF SUBC-7 LESS THAN 22
              MOVE SUBC-7 TO SUBC-8
              GO TO P8-ELEVENS ELSE GO TO P6-ELEVENS.
       P8-ELEVENS.
           ADD 1 TO SUBC-8.
           IF SUBC-8 LESS THAN 23
              MOVE SUBC-8 TO SUBC-9
              GO TO P9-ELEVENS ELSE GO TO P7-ELEVENS.
       P9-ELEVENS.
           ADD 1 TO SUBC-9.
           IF SUBC-9 LESS THAN 24
              MOVE SUBC-9 TO SUBC-10
              GO TO P10-ELEVENS ELSE GO TO P8-ELEVENS.
       P10-ELEVENS.
           ADD 1 TO SUBC-10.
           IF SUBC-10 LESS THAN 25
              MOVE SUBC-10 TO SUBC-11
              GO TO P11-ELEVENS ELSE GO TO P9-ELEVENS.
       P11-ELEVENS.
           ADD 1    TO SUBC-11.
           IF SUBC-11 LESS THAN 26
              PERFORM CHECK-EQUATION-11 THRU CHECK-EQUATION-11-X
              ADD 1 TO EXPON-TICK
              GO    TO P11-ELEVENS
           ELSE
              ADD 1 TO EXPON-TICK
              GO    TO P10-ELEVENS.
       PX-ELEVENS. EXIT.

       P1-TWELVES.
           ADD 1 TO SUBC-1.
           IF SUBC-1 LESS THAN 15
              MOVE SUBC-1 TO SUBC-2
              GO TO P2-TWELVES ELSE GO TO PX-TWELVES.
       P2-TWELVES.
           ADD 1 TO SUBC-2.
           IF SUBC-2 LESS THAN 16
              MOVE SUBC-2 TO SUBC-3
              GO TO P3-TWELVES ELSE GO TO P1-TWELVES.
       P3-TWELVES.
           ADD 1 TO SUBC-3.
           IF SUBC-3 LESS THAN 17
              MOVE SUBC-3 TO SUBC-4
              GO TO P4-TWELVES ELSE GO TO P2-TWELVES.
       P4-TWELVES.
           ADD 1 TO SUBC-4.
           IF SUBC-4 LESS THAN 18
              MOVE SUBC-4 TO SUBC-5
              GO TO P5-TWELVES ELSE GO TO P3-TWELVES.
       P5-TWELVES.
           ADD 1 TO SUBC-5.
           IF SUBC-5 LESS THAN 19
              MOVE SUBC-5 TO SUBC-6
              GO TO P6-TWELVES ELSE GO TO P4-TWELVES.
       P6-TWELVES.
           ADD 1 TO SUBC-6.
           IF SUBC-6 LESS THAN 20
              MOVE SUBC-6 TO SUBC-7
              GO TO P7-TWELVES ELSE GO TO P5-TWELVES.
       P7-TWELVES.
           ADD 1 TO SUBC-7.
           IF SUBC-7 LESS THAN 21
              MOVE SUBC-7 TO SUBC-8
              GO TO P8-TWELVES ELSE GO TO P6-TWELVES.
       P8-TWELVES.
           ADD 1 TO SUBC-8.
           IF SUBC-8 LESS THAN 22
              MOVE SUBC-8 TO SUBC-9
              GO TO P9-TWELVES ELSE GO TO P7-TWELVES.
       P9-TWELVES.
           ADD 1 TO SUBC-9.
           IF SUBC-9 LESS THAN 23
              MOVE SUBC-9 TO SUBC-10
              GO TO P10-TWELVES ELSE GO TO P8-TWELVES.
       P10-TWELVES.
           ADD 1 TO SUBC-10.
           IF SUBC-10 LESS THAN 24
              MOVE SUBC-10 TO SUBC-11
              GO TO P11-TWELVES ELSE GO TO P9-TWELVES.
       P11-TWELVES.
           ADD 1 TO SUBC-11.
           IF SUBC-11 LESS THAN 25
              MOVE SUBC-11 TO SUBC-12
              GO TO P12-TWELVES ELSE GO TO P10-TWELVES.
       P12-TWELVES.
           ADD 1    TO SUBC-12.
           IF SUBC-12 LESS THAN 26
              PERFORM CHECK-EQUATION-12 THRU CHECK-EQUATION-12-X
              ADD 1 TO EXPON-TICK
              GO    TO P12-TWELVES
           ELSE
              ADD 1 TO EXPON-TICK
              GO    TO P11-TWELVES.
       PX-TWELVES. EXIT.

       P1-THIRTEENS.
           ADD 1 TO SUBC-1.
           IF SUBC-1 LESS THAN 14
              MOVE SUBC-1 TO SUBC-2
              GO TO P2-THIRTEENS ELSE GO TO PX-THIRTEENS.
       P2-THIRTEENS.
           ADD 1 TO SUBC-2.
           IF SUBC-2 LESS THAN 15
              MOVE SUBC-2 TO SUBC-3
              GO TO P3-THIRTEENS ELSE GO TO P1-THIRTEENS.
       P3-THIRTEENS.
           ADD 1 TO SUBC-3.
           IF SUBC-3 LESS THAN 16
              MOVE SUBC-3 TO SUBC-4
              GO TO P4-THIRTEENS ELSE GO TO P2-THIRTEENS.
       P4-THIRTEENS.
           ADD 1 TO SUBC-4.
           IF SUBC-4 LESS THAN 17
              MOVE SUBC-4 TO SUBC-5
              GO TO P5-THIRTEENS ELSE GO TO P3-THIRTEENS.
       P5-THIRTEENS.
           ADD 1 TO SUBC-5.
           IF SUBC-5 LESS THAN 18
              MOVE SUBC-5 TO SUBC-6
              GO TO P6-THIRTEENS ELSE GO TO P4-THIRTEENS.
       P6-THIRTEENS.
           ADD 1 TO SUBC-6.
           IF SUBC-6 LESS THAN 19
              MOVE SUBC-6 TO SUBC-7
              GO TO P7-THIRTEENS ELSE GO TO P5-THIRTEENS.
       P7-THIRTEENS.
           ADD 1 TO SUBC-7.
           IF SUBC-7 LESS THAN 20
              MOVE SUBC-7 TO SUBC-8
              GO TO P8-THIRTEENS ELSE GO TO P6-THIRTEENS.
       P8-THIRTEENS.
           ADD 1 TO SUBC-8.
           IF SUBC-8 LESS THAN 21
              MOVE SUBC-8 TO SUBC-9
              GO TO P9-THIRTEENS ELSE GO TO P7-THIRTEENS.
       P9-THIRTEENS.
           ADD 1 TO SUBC-9.
           IF SUBC-9 LESS THAN 22
              MOVE SUBC-9 TO SUBC-10
              GO TO P10-THIRTEENS ELSE GO TO P8-THIRTEENS.
       P10-THIRTEENS.
           ADD 1 TO SUBC-10.
           IF SUBC-10 LESS THAN 23
              MOVE SUBC-10 TO SUBC-11
              GO TO P11-THIRTEENS ELSE GO TO P9-THIRTEENS.
       P11-THIRTEENS.
           ADD 1 TO SUBC-11.
           IF SUBC-11 LESS THAN 24
              MOVE SUBC-11 TO SUBC-12
              GO TO P12-THIRTEENS ELSE GO TO P10-THIRTEENS.
       P12-THIRTEENS.
           ADD 1 TO SUBC-12.
           IF SUBC-12 LESS THAN 25
              MOVE SUBC-12 TO SUBC-13
              GO TO P13-THIRTEENS ELSE GO TO P11-THIRTEENS.
       P13-THIRTEENS.
           ADD 1    TO SUBC-13.
           IF SUBC-13 LESS THAN 26
              PERFORM CHECK-EQUATION-13 THRU CHECK-EQUATION-13-X
              ADD 1 TO EXPON-TICK
              GO    TO P13-THIRTEENS
           ELSE
              ADD 1 TO EXPON-TICK
              GO    TO P12-THIRTEENS.
       PX-THIRTEENS. EXIT.

       P1-FOURTEENS.
           ADD 1 TO SUBC-1.
           IF SUBC-1 LESS THAN 13
              MOVE SUBC-1 TO SUBC-2
              GO TO P2-FOURTEENS ELSE GO TO PEND.
       P2-FOURTEENS.
           ADD 1 TO SUBC-2.
           IF SUBC-2 LESS THAN 14
              MOVE SUBC-2 TO SUBC-3
              GO TO P3-FOURTEENS ELSE GO TO P1-FOURTEENS.
       P3-FOURTEENS.
           ADD 1 TO SUBC-3.
           IF SUBC-3 LESS THAN 15
              MOVE SUBC-3 TO SUBC-4
              GO TO P4-FOURTEENS ELSE GO TO P2-FOURTEENS.
       P4-FOURTEENS.
           ADD 1 TO SUBC-4.
           IF SUBC-4 LESS THAN 16
              MOVE SUBC-4 TO SUBC-5
              GO TO P5-FOURTEENS ELSE GO TO P3-FOURTEENS.
       P5-FOURTEENS.
           ADD 1 TO SUBC-5.
           IF SUBC-5 LESS THAN 17
              MOVE SUBC-5 TO SUBC-6
              GO TO P6-FOURTEENS ELSE GO TO P4-FOURTEENS.
       P6-FOURTEENS.
           ADD 1 TO SUBC-6.
           IF SUBC-6 LESS THAN 18
              MOVE SUBC-6 TO SUBC-7
              GO TO P7-FOURTEENS ELSE GO TO P5-FOURTEENS.
       P7-FOURTEENS.
           ADD 1 TO SUBC-7.
           IF SUBC-7 LESS THAN 19
              MOVE SUBC-7 TO SUBC-8
              GO TO P8-FOURTEENS ELSE GO TO P6-FOURTEENS.
       P8-FOURTEENS.
           ADD 1 TO SUBC-8.
           IF SUBC-8 LESS THAN 20
              MOVE SUBC-8 TO SUBC-9
              GO TO P9-FOURTEENS ELSE GO TO P7-FOURTEENS.
       P9-FOURTEENS.
           ADD 1 TO SUBC-9.
           IF SUBC-9 LESS THAN 21
              MOVE SUBC-9 TO SUBC-10
              GO TO P10-FOURTEENS ELSE GO TO P8-FOURTEENS.
       P10-FOURTEENS.
           ADD 1 TO SUBC-10.
           IF SUBC-10 LESS THAN 22
              MOVE SUBC-10 TO SUBC-11
              GO TO P11-FOURTEENS ELSE GO TO P9-FOURTEENS.
       P11-FOURTEENS.
           ADD 1 TO SUBC-11.
           IF SUBC-11 LESS THAN 23
              MOVE SUBC-11 TO SUBC-12
              GO TO P12-FOURTEENS ELSE GO TO P10-FOURTEENS.
       P12-FOURTEENS.
           ADD 1 TO SUBC-12.
           IF SUBC-12 LESS THAN 24
              MOVE SUBC-12 TO SUBC-13
              GO TO P13-FOURTEENS ELSE GO TO P11-FOURTEENS.
       P13-FOURTEENS.
           ADD 1 TO SUBC-13.
           IF SUBC-13 LESS THAN 25
              MOVE SUBC-13 TO SUBC-14
              GO TO P14-FOURTEENS ELSE GO TO P12-FOURTEENS.
       P14-FOURTEENS.
           ADD 1    TO SUBC-14.
           IF SUBC-14 LESS THAN 26
              PERFORM CHECK-EQUATION-14 THRU CHECK-EQUATION-14-X
              ADD 1 TO EXPON-TICK
              GO    TO P14-FOURTEENS
           ELSE
              ADD 1 TO EXPON-TICK
              GO    TO P13-FOURTEENS.
       PX-FOURTEENS. EXIT.

       PEND.
           MOVE "Y" TO DONE-SW
           GO       TO CHECK-RTN.

       CHECK-EQUATION-2.

           IF INT(SUBC-1)    NOT EQUAL ZERO
              IF INT(SUBC-2) NOT EQUAL ZERO
                 ADD INT(SUBC-1),  INT(SUBC-2) GIVING RESULT-P
                 MOVE 2 TO NUMBER-IN-EQUATION
                 PERFORM CHECK-FOR-ZERO THRU CHECK-FOR-ZERO-X.

       CHECK-EQUATION-2-X. EXIT.

       CHECK-EQUATION-3.

           IF INT(SUBC-3) NOT EQUAL ZERO
              ADD INT(SUBC-1),
                  INT(SUBC-2),
                  INT(SUBC-3),
                  GIVING RESULT-P
                  MOVE 3 TO NUMBER-IN-EQUATION
                  PERFORM CHECK-FOR-ZERO THRU CHECK-FOR-ZERO-X.

       CHECK-EQUATION-3-X. EXIT.

       CHECK-EQUATION-4.

           IF INT(SUBC-4) NOT EQUAL ZERO
              ADD INT(SUBC-1),
                  INT(SUBC-2),
                  INT(SUBC-3),
                  INT(SUBC-4),
                  GIVING RESULT-P
                  MOVE 4 TO NUMBER-IN-EQUATION
                  PERFORM CHECK-FOR-ZERO THRU CHECK-FOR-ZERO-X.

       CHECK-EQUATION-4-X. EXIT.

       CHECK-EQUATION-5.

           IF INT(SUBC-5) NOT EQUAL ZERO
              ADD INT(SUBC-1),
                  INT(SUBC-2),
                  INT(SUBC-3),
                  INT(SUBC-4),
                  INT(SUBC-5),
                  GIVING RESULT-P
                  MOVE 5 TO NUMBER-IN-EQUATION
                  PERFORM CHECK-FOR-ZERO THRU CHECK-FOR-ZERO-X.

       CHECK-EQUATION-5-X. EXIT.

       CHECK-EQUATION-6.

           IF INT(SUBC-6) NOT EQUAL ZERO
              ADD INT(SUBC-1),
                  INT(SUBC-2),
                  INT(SUBC-3),
                  INT(SUBC-4),
                  INT(SUBC-5),
                  INT(SUBC-6),
                  GIVING RESULT-P
                  MOVE 6 TO NUMBER-IN-EQUATION
                  PERFORM CHECK-FOR-ZERO THRU CHECK-FOR-ZERO-X.

       CHECK-EQUATION-6-X. EXIT.

       CHECK-EQUATION-7.

           IF INT(SUBC-7) NOT EQUAL ZERO
              ADD INT(SUBC-1),
                  INT(SUBC-2),
                  INT(SUBC-3),
                  INT(SUBC-4),
                  INT(SUBC-5),
                  INT(SUBC-6),
                  INT(SUBC-7),
                  GIVING RESULT-P
                  MOVE 7 TO NUMBER-IN-EQUATION
                  PERFORM CHECK-FOR-ZERO THRU CHECK-FOR-ZERO-X.

       CHECK-EQUATION-7-X. EXIT.

       CHECK-EQUATION-8.

           IF INT(SUBC-8) NOT EQUAL ZERO
              ADD INT(SUBC-1),
                  INT(SUBC-2),
                  INT(SUBC-3),
                  INT(SUBC-4),
                  INT(SUBC-5),
                  INT(SUBC-6),
                  INT(SUBC-7),
                  INT(SUBC-8),
                  GIVING RESULT-P
                  MOVE 8 TO NUMBER-IN-EQUATION
                  PERFORM CHECK-FOR-ZERO THRU CHECK-FOR-ZERO-X.

       CHECK-EQUATION-8-X. EXIT.

       CHECK-EQUATION-9.

           IF INT(SUBC-9) NOT EQUAL ZERO
              ADD INT(SUBC-1),
                  INT(SUBC-2),
                  INT(SUBC-3),
                  INT(SUBC-4),
                  INT(SUBC-5),
                  INT(SUBC-6),
                  INT(SUBC-7),
                  INT(SUBC-8),
                  INT(SUBC-9),
                  GIVING RESULT-P
                  MOVE 9 TO NUMBER-IN-EQUATION
                  PERFORM CHECK-FOR-ZERO THRU CHECK-FOR-ZERO-X.

       CHECK-EQUATION-9-X. EXIT.

       CHECK-EQUATION-10.

           IF INT(SUBC-10) NOT EQUAL ZERO
              ADD INT(SUBC-1),
                  INT(SUBC-2),
                  INT(SUBC-3),
                  INT(SUBC-4),
                  INT(SUBC-5),
                  INT(SUBC-6),
                  INT(SUBC-7),
                  INT(SUBC-8),
                  INT(SUBC-9),
                  INT(SUBC-10)
                  GIVING RESULT-P
                  MOVE 10 TO NUMBER-IN-EQUATION
                  PERFORM CHECK-FOR-ZERO THRU CHECK-FOR-ZERO-X.

       CHECK-EQUATION-10-X. EXIT.

       CHECK-EQUATION-11.

           IF INT(SUBC-11) NOT EQUAL ZERO
              ADD INT(SUBC-1),
                  INT(SUBC-2),
                  INT(SUBC-3),
                  INT(SUBC-4),
                  INT(SUBC-5),
                  INT(SUBC-6),
                  INT(SUBC-7),
                  INT(SUBC-8),
                  INT(SUBC-9),
                  INT(SUBC-10),
                  INT(SUBC-11)
                  GIVING RESULT-P
                  MOVE 11 TO NUMBER-IN-EQUATION
                  PERFORM CHECK-FOR-ZERO THRU CHECK-FOR-ZERO-X.

       CHECK-EQUATION-11-X. EXIT.

       CHECK-EQUATION-12.

           IF INT(SUBC-12) NOT EQUAL ZERO
              ADD INT(SUBC-1),
                  INT(SUBC-2),
                  INT(SUBC-3),
                  INT(SUBC-4),
                  INT(SUBC-5),
                  INT(SUBC-6),
                  INT(SUBC-7),
                  INT(SUBC-8),
                  INT(SUBC-9),
                  INT(SUBC-10),
                  INT(SUBC-11),
                  INT(SUBC-12)
                  GIVING RESULT-P
                  MOVE 12 TO NUMBER-IN-EQUATION
                  PERFORM CHECK-FOR-ZERO THRU CHECK-FOR-ZERO-X.

       CHECK-EQUATION-12-X. EXIT.

       CHECK-EQUATION-13.

           IF INT(SUBC-13) NOT EQUAL ZERO
              ADD INT(SUBC-1),
                  INT(SUBC-2),
                  INT(SUBC-3),
                  INT(SUBC-4),
                  INT(SUBC-5),
                  INT(SUBC-6),
                  INT(SUBC-7),
                  INT(SUBC-8),
                  INT(SUBC-9),
                  INT(SUBC-10),
                  INT(SUBC-11),
                  INT(SUBC-12),
                  INT(SUBC-13)
                  GIVING RESULT-P
                  MOVE 13 TO NUMBER-IN-EQUATION
                  PERFORM CHECK-FOR-ZERO THRU CHECK-FOR-ZERO-X.

       CHECK-EQUATION-13-X. EXIT.

       CHECK-EQUATION-14.

           IF INT(SUBC-14) NOT EQUAL ZERO
              ADD INT(SUBC-1),
                  INT(SUBC-2),
                  INT(SUBC-3),
                  INT(SUBC-4),
                  INT(SUBC-5),
                  INT(SUBC-6),
                  INT(SUBC-7),
                  INT(SUBC-8),
                  INT(SUBC-9),
                  INT(SUBC-10),
                  INT(SUBC-11),
                  INT(SUBC-12),
                  INT(SUBC-13),
                  INT(SUBC-14)
                  GIVING RESULT-P
                  MOVE 14 TO NUMBER-IN-EQUATION
                  PERFORM CHECK-FOR-ZERO THRU CHECK-FOR-ZERO-X.

       CHECK-EQUATION-14-X. EXIT.

       CHECK-FOR-ZERO.

           ADD  1  TO CHECK-TICK.

           IF RESULT-P EQUAL SUM-VALUE-CK
              NEXT SENTENCE
           ELSE
              MOVE ZERO TO RESULT-P
              GO        TO CHECK-FOR-ZERO-X.

           MOVE SPACES         TO IO-OUT-LINE.
           MOVE 1              TO SUBC-O
           MOVE 1              TO SUBC-L
           MOVE INT(SUBC-1)    TO INT-DIS(SUBC-O, SUBC-L)
           MOVE "+"            TO COM-DIS(SUBC-O, SUBC-L)
           ADD 1               TO SUBC-L
           MOVE INT(SUBC-2)    TO INT-DIS(SUBC-O, SUBC-L)
           IF POLY-EXP-SW = 'P'
              MOVE CHECK-TICK     TO PRINT-TICK(SUBC-O)
           ELSE
              MOVE EXPON-TICK     TO PRINT-TICK(SUBC-O).

           IF NUMBER-IN-EQUATION > 2
             IF INT(SUBC-3)    NOT EQUAL ZERO
               MOVE "+"            TO COM-DIS(SUBC-O, SUBC-L)
               ADD 1               TO SUBC-L
               MOVE INT(SUBC-3)    TO INT-DIS(SUBC-O, SUBC-L).

           IF NUMBER-IN-EQUATION > 3
             IF INT(SUBC-4)    NOT EQUAL ZERO
               MOVE "+"            TO COM-DIS(SUBC-O, SUBC-L)
               ADD 1               TO SUBC-L
               MOVE INT(SUBC-4)    TO INT-DIS(SUBC-O, SUBC-L).

           IF NUMBER-IN-EQUATION > 4
             IF INT(SUBC-5)    NOT EQUAL ZERO
               MOVE "+"            TO COM-DIS(SUBC-O, SUBC-L)
               ADD 1               TO SUBC-L
               MOVE INT(SUBC-5)    TO INT-DIS(SUBC-O, SUBC-L).

           IF NUMBER-IN-EQUATION > 5
             IF INT(SUBC-6)    NOT EQUAL ZERO
               MOVE "+"            TO COM-DIS(SUBC-O, SUBC-L)
               ADD 1               TO SUBC-L
               MOVE INT(SUBC-6)    TO INT-DIS(SUBC-O, SUBC-L).

           IF NUMBER-IN-EQUATION > 6
             IF INT(SUBC-7)    NOT EQUAL ZERO
               MOVE "+"            TO COM-DIS(SUBC-O, SUBC-L)
               ADD 1               TO SUBC-L
               MOVE INT(SUBC-7)    TO INT-DIS(SUBC-O, SUBC-L).

           IF NUMBER-IN-EQUATION > 7
             IF INT(SUBC-8)    NOT EQUAL ZERO
               MOVE "+"            TO COM-DIS(SUBC-O, SUBC-L)
               ADD 1               TO SUBC-L
               MOVE INT(SUBC-8)    TO INT-DIS(SUBC-O, SUBC-L).

           IF NUMBER-IN-EQUATION > 8
             IF INT(SUBC-9)    NOT EQUAL ZERO
               MOVE "+"            TO COM-DIS(SUBC-O, SUBC-L)
               ADD 1               TO SUBC-L
               MOVE INT(SUBC-9)    TO INT-DIS(SUBC-O, SUBC-L).

           IF NUMBER-IN-EQUATION > 9
             IF INT(SUBC-10)   NOT EQUAL ZERO
               MOVE "+"            TO COM-DIS(SUBC-O, SUBC-L)
               ADD 1               TO SUBC-L
               MOVE INT(SUBC-10)   TO INT-DIS(SUBC-O, SUBC-L).

           IF NUMBER-IN-EQUATION > 10
             IF INT(SUBC-11)   NOT EQUAL ZERO
               MOVE "+"            TO COM-DIS(SUBC-O, SUBC-L)
               ADD 1               TO SUBC-L
               MOVE INT(SUBC-11)   TO INT-DIS(SUBC-O, SUBC-L).

           IF NUMBER-IN-EQUATION > 11
             IF INT(SUBC-12)   NOT EQUAL ZERO
               MOVE "+"            TO COM-DIS(SUBC-O, SUBC-L)
               ADD 1               TO SUBC-L
               MOVE INT(SUBC-12)   TO INT-DIS(SUBC-O, SUBC-L).

           IF NUMBER-IN-EQUATION > 12
             IF INT(SUBC-13)   NOT EQUAL ZERO
               MOVE "+"            TO COM-DIS(SUBC-O, SUBC-L)
               ADD 1               TO SUBC-L
               MOVE INT(SUBC-13)   TO INT-DIS(SUBC-O, SUBC-L).

           IF NUMBER-IN-EQUATION > 13
             IF INT(SUBC-14)   NOT EQUAL ZERO
               MOVE "+"            TO COM-DIS(SUBC-O, SUBC-L)
               ADD 1               TO SUBC-L
               MOVE INT(SUBC-14)   TO INT-DIS(SUBC-O, SUBC-L).

           MOVE    OUT-LINE (SUB-O)  TO IO-OUT-LINE
           DISPLAY "              "  AT 2565
           GOBACK.

       CHECK-FOR-ZERO-X. EXIT.

      *-------------------------------------------------------------*
      *                      End of Program                         *
      *-------------------------------------------------------------*
0