User Tools

Site Tools


cdc:nos2.source:opl.opl871:deck:fsescrn.001

Deck FSESCRN Part 001

22 Modifications

Listing Sections

Source

Seq #  *Modification Id* Act 
----------------------------+
01713  M01S01484.fsescrn +++|          GENLITERAL(POS," - $");
01714  M01S01485.fsescrn +++|          GENDECIMAL(POS,BOTS(SPLIT)-1-TOPF(FILNUM));
01715  M01S01486.fsescrn +++|          END
01716  M01S01487.fsescrn +++|        GENLITERAL(POS," SIZE $");
01717  M01S01488.fsescrn +++|        GENDECIMAL(POS,BOTF(FILE)-1-TOPF(FILE));
01718  M01S01489.fsescrn +++|        END
01719  M01S01490.fsescrn +++|      IF XSHIFT[SPLIT] NQ 0 THEN
01720  M01S01491.fsescrn +++|        BEGIN                        # IF SET VIEW OFFSET ENABLED #
01721  M01S01492.fsescrn +++|        GENLITERAL(POS,"  OFFSET $");
01722  M01S01493.fsescrn +++|        GENDECIMAL(POS,XSHIFT[SPLIT]+1);
01723  M01S01494.fsescrn +++|        END
01724  M01S01495.fsescrn +++|      IF FILENAM[1] EQ FILENAM[2] THEN
01725  M01S01496.fsescrn +++|        BEGIN                        # IF SAME FILE IN BOTH SPLITS #
01726  M01S01497.fsescrn +++|        CHANGED[1] = CHANGED[1] LOR CHANGED[2];
01727  M01S01498.fsescrn +++|        CHANGED[2] = CHANGED[1];
01728  M01S01499.fsescrn +++|        END
01729  M01S01500.fsescrn +++|      IF CHANGED[SPLIT] NQ 0 THEN
01730  M01S01501.fsescrn +++|        BEGIN                        # IF FILE HAS BEEN CHANGED #
01731  M01S01502.fsescrn +++|        GENLITERAL(POS," (CHANGED)$");
01732  M01S01503.fsescrn +++|        END
01733  M01S01504.fsescrn +++|      ELSE
01734  M01S01505.fsescrn +++|        BEGIN                        # NO CHANGE #
01735  M01S01506.fsescrn +++|        IF LOCKED[SPLIT] NQ 0 THEN
01736  M01S01507.fsescrn +++|          BEGIN                      # IF FILE IS LOCKED #
01737  M01S01508.fsescrn +++|          GENLITERAL(POS," (READ-ONLY)$");
01738  M01S01509.fsescrn +++|          END
01739  M01S01510.fsescrn +++|        ELSE
01740  M01S01511.fsescrn +++|          BEGIN                      # NO LOCK #
01741  M01S01512.fsescrn +++|          GENLITERAL(POS," (NO CHANGES)$");
01742  M01S01513.fsescrn +++|          END
01743  M01S01514.fsescrn +++|        END
01744  M01S00001.fsesc28 +++|      IF NUMMARKS GR 0 AND MRKFILE[0] EQ FDLF(FILE) THEN
01745  M01S00002.fsesc28 +++|        BEGIN
01746  M01S00003.fsesc28 +++|        IF NUMMARKS EQ 1 THEN
01747  M01S00004.fsesc28 +++|          GENLITERAL(POS," <MARK ACTIVE>$");
01748  M01S00005.fsesc28 +++|        ELSE
01749  M01S00006.fsesc28 +++|          GENLITERAL(POS," <MARKS ACTIVE>$");
01750  M01S00007.fsesc28 +++|        END
01751  M01S01515.fsescrn +++|      END
01752  M01S01516.fsescrn +++|    FOR POS = POS STEP 1 UNTIL(VTXMAX - ATTCOUNT) DO
01753  M01S01517.fsescrn +++|      BEGIN                          # UNTIL END OF LINE #
01754  M01S01518.fsescrn +++|      SETCHAR(TTYLINE,POS,CBLANK);
01755  M01S01519.fsescrn +++|      END
01756  M01S01520.fsescrn +++|    SETCHAR(TTYLINE,POS,CENDLINE);
01757  M01S01521.fsescrn +++|
01758  M01S01522.fsescrn +++|    END  # GENTITLE #
01759  M01S01523.fsescrn +++|
01760  M01S01524.fsescrn +++|
01761  M01S01525.fsescrn +++|
01762  M01S01526.fsescrn +++|
01763  M01S01527.fsescrn +++|  # MAIN PAINTSCREEN CODE STARTS HERE #
01764  M01S01528.fsescrn +++|
01765  M01S01529.fsescrn +++|  IF NOT PROMPTING THEN
01766  M01S01530.fsescrn +++|    BEGIN
01767  M01S01531.fsescrn +++|
01768  M01S01532.fsescrn +++|    IF FORCEAUTOP[0] THEN
01769  M01S01533.fsescrn +++|      BEGIN                          # IF AUTO HALF PAGE #
01770  M01S01534.fsescrn +++|      TOPS(CURSPLIT) = BOTS(CURSPLIT) - NUMROWS[CURSPLIT] / 2;
01771  M01S01535.fsescrn +++|      SETTOPS(CURSPLIT);
01772  M01S01536.fsescrn +++|      XCURSOR = 0;
01773  M01S01537.fsescrn +++|      YCURSOR = BOTS(CURSPLIT);
01774  M01S01538.fsescrn +++|      YCURSOR = LTOY(YCURSOR,CURSPLIT);
01775  M01S01539.fsescrn +++|      SETBOTS(CURSPLIT);
01776  M01S01540.fsescrn +++|      PAINTSPLIT;
01777  M01S01541.fsescrn +++|      END
01778  M01S01542.fsescrn +++|    FORCEAUTOP[0] = FALSE;
01779  M01S01543.fsescrn +++|
01780  M01S01544.fsescrn +++|    # DETERMINE WHETHER RESIDUAL CURSOR IS OUT OF TEXT AREAS #
01781  M01S01545.fsescrn +++|
01782  M01S01546.fsescrn +++|    SCRNPT2=0;
01783  M01S01547.fsescrn +++|    IF YCURSOR LS 0 OR YCURSOR GR VTYMAX THEN SCRNPT2=1;
01784  M01S01548.fsescrn +++|    IF SCRNPT2 EQ 0 THEN
01785  M01S01549.fsescrn +++|      BEGIN
01786  M01S01550.fsescrn +++|      IF ROWTYPE[YCURSOR] NQ ROWST"TEXT"
01787  M01S01551.fsescrn +++|        AND ROWTYPE[YCURSOR] NQ ROWST"COMMAND" THEN SCRNPT2=1;
01788  M01S01552.fsescrn +++|      END
01789  M01S01553.fsescrn +++|
01790  M01S01554.fsescrn +++|    # VERIFY VALIDITY OF SCREEN BOUNDS, MAKE GOOD CURSOR POSITION #
01791  M01S01555.fsescrn +++|
01792  M01S01556.fsescrn +++|    IF SCRNPT2 EQ 0 THEN
01793  M01S01557.fsescrn +++|      BEGIN                          # SIMPLY VERIFY SCREEN BOUNDS #
01794  M01S01558.fsescrn +++|      SETTOPBOTS(1);
01795  M01S01559.fsescrn +++|      IF SPLITFILE[2] NQ 0 THEN SETTOPBOTS(2);
01796  M01S01560.fsescrn +++|      END
01797  M01S01561.fsescrn +++|    ELSE
01798  M01S01562.fsescrn +++|      BEGIN                          # RECOMPUTE CURSOR WHEN OFF TEXT #
01799  M01S01563.fsescrn +++|      IF SPLITFILE[2] EQ 0 THEN CURFILE=SPLITFILE[1];
01800  M01S01564.fsescrn +++|      CURSPLIT=MIN(MAX(CURSPLIT,1),2);
01801  M01S01565.fsescrn +++|      IF SPLITFILE[CURSPLIT] NQ CURFILE
01802  M01S01566.fsescrn +++|        THEN CURSPLIT=CURSPLIT LXR 3;
01803  M01S01567.fsescrn +++|      IF SPLITFILE[2] NQ 0
01804  M01S01568.fsescrn +++|        AND FDLF(SPLITFILE[1]) EQ FDLF(SPLITFILE[2]) THEN
01805  M01S01569.fsescrn +++|        BEGIN
01806  M01S01570.fsescrn +++|        SETTOPBOTS(CURSPLIT);
01807  M01S01571.fsescrn +++|        YCURSOR=CURF(CURFILE);
01808  M01S01572.fsescrn +++|        YCURSOR=LTOY(YCURSOR,CURSPLIT);
01809  M01S01573.fsescrn +++|        IF ROWTYPE[YCURSOR] EQ ROWST"TITLE" AND NUMROWS[CURSPLIT]
01810  M01S01574.fsescrn +++|          GR 0 THEN YCURSOR=YCURSOR+1;
01811  M01S01575.fsescrn +++|        END
01812  M01S01576.fsescrn +++|      ELSE
01813  M01S01577.fsescrn +++|        BEGIN
01814  M01S01578.fsescrn +++|        FOR SCRNPT1=1 STEP 1 UNTIL 2 DO
01815  M01S01579.fsescrn +++|          BEGIN
01816  M01S01580.fsescrn +++|          IF SPLITFILE[SCRNPT1] NQ 0 THEN
01817  M01S01581.fsescrn +++|            BEGIN
01818  M01S01582.fsescrn +++|            SETTOPBOTS(SCRNPT1);
01819  M01S01583.fsescrn +++|            IF SPLITFILE[SCRNPT1] EQ CURFILE THEN
01820  M01S01584.fsescrn +++|              BEGIN
01821  M01S01585.fsescrn +++|              YCURSOR=CURF(CURFILE);
01822  M01S01586.fsescrn +++|              YCURSOR=LTOY(YCURSOR,SCRNPT1);
01823  M01S01587.fsescrn +++|              IF ROWTYPE[YCURSOR] EQ ROWST"TITLE" AND
01824  M01S01588.fsescrn +++|                NUMROWS[SCRNPT1] GR 0 THEN YCURSOR=YCURSOR+1;
01825  M01S01589.fsescrn +++|              CURSPLIT=SCRNPT1;
01826  M01S01590.fsescrn +++|              END
01827  M01S01591.fsescrn +++|            END
01828  M01S01592.fsescrn +++|          END
01829  M01S01593.fsescrn +++|        END
01830  M01S01594.fsescrn +++|      END
01831  M01S01595.fsescrn +++|    IF FORCEAUTOR[0] THEN
01832  M01S01596.fsescrn +++|      BEGIN                          # IF FORCED TO NEXT LINE #
01833  M01S01597.fsescrn +++|      XCURSOR = 0;
01834  M01S01598.fsescrn +++|      YCURSOR = YCURSOR + 1;
01835  M01S01599.fsescrn +++|      FORCEAUTOR[0] = FALSE;
01836  M01S01600.fsescrn +++|      END
01837  M01S01601.fsescrn +++|    IF YCURSOR LS 0 OR YCURSOR GR VTYMAX THEN YCURSOR=COMMANDROW;
01838  M01S01602.fsescrn +++|
01839  M01S01603.fsescrn +++|    # SEE IF LAST TITLE NOW OBSOLETE #
01840  M01S01604.fsescrn +++|
01841  M01S01605.fsescrn +++|    GENTITLE(1);
01842  M01S01606.fsescrn +++|    SCRNPT4=MAX(LENGTH(TITLE1LIN),LENGTH(TTYLIN));
01843  M01S01607.fsescrn +++|    FOR SCRNPT1=0 STEP 1 UNTIL SCRNPT4 DO
01844  M01S01608.fsescrn +++|      BEGIN
01845  M01S01609.fsescrn +++|      GETCHAR(TITLE1LINE,SCRNPT1,SCRNPT2);
01846  M01S01610.fsescrn +++|      GETCHAR(TTYLINE,SCRNPT1,SCRNPT3);
01847  M01S01611.fsescrn +++|      IF SCRNPT2 NQ SCRNPT3 THEN ROWPAINT[TITLEROW[1]]=TRUE;
01848  M01S01612.fsescrn +++|      END
01849  M01S01613.fsescrn +++|    IF SPLITFILE[2] NQ 0 THEN
01850  M01S01614.fsescrn +++|      BEGIN
01851  M01S01615.fsescrn +++|      GENTITLE(2);
01852  M01S01616.fsescrn +++|      SCRNPT4=MAX(LENGTH(TITLE2LIN),LENGTH(TTYLIN));
01853  M01S01617.fsescrn +++|      FOR SCRNPT1=0 STEP 1 UNTIL SCRNPT4 DO
01854  M01S01618.fsescrn +++|        BEGIN
01855  M01S01619.fsescrn +++|        GETCHAR(TITLE2LINE,SCRNPT1,SCRNPT2);
01856  M01S01620.fsescrn +++|        GETCHAR(TTYLINE,SCRNPT1,SCRNPT3);
01857  M01S01621.fsescrn +++|        IF SCRNPT2 NQ SCRNPT3 THEN ROWPAINT[TITLEROW[2]]=TRUE;
01858  M01S01622.fsescrn +++|        END
01859  M01S01623.fsescrn +++|      END
01860  M01S01624.fsescrn +++|    FOR SPLIT=1 STEP 1 UNTIL 2 DO
01861  M01S01625.fsescrn +++|      BEGIN
01862  M01S01626.fsescrn +++|      FILNUM=SPLITFILE[SPLIT];
01863  M01S01627.fsescrn +++|      IF FILNUM NQ 0 THEN
01864  M01S01628.fsescrn +++|        BEGIN
01865  M01S01629.fsescrn +++|        IF LTPS(SPLIT) NQ TOPS(SPLIT)
01866  M01S01630.fsescrn +++|          OR LASTNAME[SPLIT] NQ FILENAM[FILNUM] THEN
01867  M01S01631.fsescrn +++|          BEGIN
01868  M01S01632.fsescrn +++|          PAINTONESPLT(SPLIT);
01869  M01S01633.fsescrn +++|          END
01870  M01S01634.fsescrn +++|        END
01871  M01S01635.fsescrn +++|      END
01872  M01S01636.fsescrn +++|    END
01873  M01S01637.fsescrn +++|
01874  M01S01638.fsescrn +++|  PAINTMARKS(2);
01875  M01S01639.fsescrn +++|
01876  M01S01640.fsescrn +++|  FOR SCRNPT1=0 STEP 1 UNTIL USRNUMLIN DO
01877  M01S01641.fsescrn +++|    BEGIN
01878  M01S01642.fsescrn +++|    IF ROWPAINT[SCRNPT1] OR ROWORIG[SCRNPT1] NQ SCRNPT1 THEN
01879  M01S01643.fsescrn +++|      BEGIN
01880  M01S01644.fsescrn +++|      ROWPAINT[SCRNPT1]=FALSE;
01881  M01S01645.fsescrn +++|      ROWORIG[SCRNPT1]=SCRNPT1;
01882  M01S01646.fsescrn +++|      GOTO PAINTSW[ROWTYPE[SCRNPT1]];
01883  M01S01647.fsescrn +++|
01884  M01S01648.fsescrn +++|PTTEXT:
01885  M01S01649.fsescrn +++|      IF ROWPMARK[SCRNPT1] THEN
01886  M01S01650.fsescrn +++|        BEGIN                        # IF ONLY LOGICALLY MARKED #
01887  M01S01651.fsescrn +++|        IF NUMMARKS EQ 0 THEN ROWPMARK[SCRNPT1] = FALSE;
01888  M01S01652.fsescrn +++|        END
01889  M01S01653.fsescrn +++|CONTROL IFEQ MULTI,1;                # IF MULTI USER FSE #
01890  M01S01654.fsescrn +++|      VDTPOS(0,SCRNPT1);             # POSITION #
01891  M01S01655.fsescrn +++|CONTROL FI;                          # END OF IF MULTI #
01892  M01S01656.fsescrn +++|CONTROL IFEQ SINGLE,1;               # IF NOT MULTI USER FSE #
01893  M01S01657.fsescrn +++|      IF TABLOCKMDE[0] THEN
01894  M01S01658.fsescrn +++|        BEGIN                        # IF BLOCK MODE TERMINAL #
01895  M01S01659.fsescrn +++|        VDTSAP(DUMB,0,SCRNPT1);      # SET ATTRIBUTE POSITION #
01896  M01S01660.fsescrn +++|        END
01897  M01S01661.fsescrn +++|      ELSE
01898  M01S01662.fsescrn +++|        BEGIN                        # NOT BLOCK MODE #
01899  M01S01663.fsescrn +++|        VDTPOS(0,SCRNPT1);           # POSITION #
01900  M01S01664.fsescrn +++|        END
01901  M01S01665.fsescrn +++|CONTROL FI;                          # END OF NOT MULTI #
01902  M01S01666.fsescrn +++|      SPLIT=ROWSPLIT[SCRNPT1];
01903  M01S01667.fsescrn +++|      SCRNPT2=YTOL(SCRNPT1,SPLIT);
01904  M01S01668.fsescrn +++|      IF VTCLRFRST[0] THEN VDTCLL(0,SCRNPT1);
01905  M01S01669.fsescrn +++|      SCRNPT6=XSHIFT[SPLIT]-1;      # PRESET COLUMN LENGTH #
01906  M01S01670.fsescrn +++|      IF SCRNPT2 LS BOTS(SPLIT) THEN
01907  M01S01671.fsescrn +++|        BEGIN
01908  M01S01672.fsescrn +++|        POSZ(SCRNPT2);
01909  M01S01673.fsescrn +++|        SCRNPT6=LENGTH(LIN);
01910  M01S01674.fsescrn +++|        IF SCRNPT6 GR NUMWIDBLK+WIDTH AND ERRSTRING EQ " $" THEN
01911  M01S01675.fsescrn +++|          BEGIN
01912  M01S01676.fsescrn +++|          ERRSTRING="WIDE LINE$";
01913  M01S01677.fsescrn +++|          YCURSOR=SCRNPT1;
01914  M01S01678.fsescrn +++|          END
01915  M01S01679.fsescrn +++|        IF USRNUMCOL+XSHIFT[SPLIT] LS SCRNPT6 AND NOT ROWPMARK[SCRNPT1]
01916  M01S01680.fsescrn +++|          THEN
01917  M01S01681.fsescrn +++|          BEGIN
01918  M01S01682.fsescrn +++|          SETCHAR(LINE,USRNUMCOL+XSHIFT[SPLIT]+1,CENDLINE);
01919  M01S01683.fsescrn +++|          TRIMPAD;
01920  M01S01684.fsescrn +++|          SCRNPT6=LENGTH(LIN);
01921  M01S01685.fsescrn +++|          END
01922  M01S01686.fsescrn +++|        IF ROWCOLUM[SCRNPT1] THEN
01923  M01S01687.fsescrn +++|          BEGIN
01924  M01S01688.fsescrn +++|CONTROL IFEQ SINGLE,1;               # IF NOT MULTI USER FSE #
01925  M01S01689.fsescrn +++|          IF TABLOCKMDE[0] THEN VDTSAM(0);
01926  M01S01690.fsescrn +++|CONTROL FI;
01927  M01S01691.fsescrn +++|          ROWCOLUM[SCRNPT1] = FALSE;
01928  M01S01692.fsescrn +++|          SCRNPT6 = 1;
01929  M01S01693.fsescrn +++|          FOR SCRNPT4 = XSHIFT[SPLIT] STEP 1 UNTIL
01930  M01S01694.fsescrn +++|            XSHIFT[SPLIT] + USRNUMCOL DO
01931  M01S01695.fsescrn +++|            BEGIN
01932  M01S01696.fsescrn +++|            SCRNPT5 = MOD(SCRNPT4+1,10) + CDIGIT0;
01933  M01S01697.fsescrn +++|CONTROL IFEQ MULTI,1;                # IF MULTI USER FSE #
01934  M01S01698.fsescrn +++|            IF SCRNPT5 EQ CDIGIT1 AND NOT TABATTRCHR[0] THEN
01935  M01S01699.fsescrn +++|CONTROL FI;                          # END OF IF MULTI #
01936  M01S01700.fsescrn +++|CONTROL IFEQ SINGLE,1;               # IF NOT MULTI USER FSE #
01937  M01S01701.fsescrn +++|            IF SCRNPT5 EQ CDIGIT1 AND NOT TABATTRCHR[0]
01938  M01S01702.fsescrn +++|              AND NOT TABLOCKMDE[0] THEN
01939  M01S01703.fsescrn +++|CONTROL FI;                          # END OF IF NOT MULTI #
01940  M01S01704.fsescrn +++|              BEGIN
01941  M01S01705.fsescrn +++|              SCRNPT6 = SCRNPT6 LXR 1;
01942  M01S01706.fsescrn +++|              IF SCRNPT6 EQ 0 THEN
01943  M01S01707.fsescrn +++|                BEGIN
01944  M01S01708.fsescrn +++|                VDTSAM(0);
01945  M01S01709.fsescrn +++|                END
01946  M01S01710.fsescrn +++|              ELSE
01947  M01S01711.fsescrn +++|                BEGIN
01948  M01S01712.fsescrn +++|                VDTSAM(MSKINVERSE);
01949  M01S01713.fsescrn +++|                END
01950  M01S01714.fsescrn +++|              END
01951  M01S01715.fsescrn +++|            SCRNPT5 = XLTINTXP[SCRNPT5];
01952  M01S01716.fsescrn +++|            VDTCHR(SCRNPT5);
01953  M01S01717.fsescrn +++|            END
01954  M01S01718.fsescrn +++|CONTROL IFEQ MULTI,1;                # IF MULTI USER FSE #
01955  M01S01719.fsescrn +++|          IF SCRNPT6 EQ 1 AND NOT TABATTRCHR[0] THEN VDTSAM(0);
01956  M01S01720.fsescrn +++|CONTROL FI;                          # END OF IF MULTI #
01957  M01S01721.fsescrn +++|CONTROL IFEQ SINGLE,1;               # IF NOT MULTI USER FSE #
01958  M01S01722.fsescrn +++|          IF SCRNPT6 EQ 1 AND NOT TABATTRCHR[0] AND NOT TABLOCKMDE[0]
01959  M01S01723.fsescrn +++|            THEN VDTSAM(0);
01960  M01S01724.fsescrn +++|CONTROL FI;                          # END OF IF NOT MULTI #
01961  M01S01725.fsescrn +++|          GOTO PTDONE;               # FINISHED WITH THIS LINE #
01962  M01S01726.fsescrn +++|          END
01963  M01S01727.fsescrn +++|        ELSE IF ROWPMARK[SCRNPT1] THEN
01964  M01S01728.fsescrn +++|          BEGIN
01965  M01S01729.fsescrn +++|          IF SCRNPT6 EQ 0 THEN
01966  M01S01730.fsescrn +++|            BEGIN
01967  M01S01731.fsescrn +++|            LINE[0]=BLANKLIN;
01968  M01S01732.fsescrn +++|            SCRNPT6=LENGTH(LIN);
01969  M01S01733.fsescrn +++|            END
01970  M01S01734.fsescrn +++|          SCRNPT4=XSHIFT[SPLIT];
01971  M01S01735.fsescrn +++|          SCRNPT5=MIN(SCRNPT6-1,USRNUMCOL+XSHIFT[SPLIT]);
01972  M01S01736.fsescrn +++|          SCRNPT2 = SCRNPT4;         # SAVE DEFAULT VALUES #
01973  M01S01737.fsescrn +++|          SCRNPT3 = SCRNPT5;
01974  M01S01738.fsescrn +++|          IF CURRENT EQ REGLINE[MARKREG] AND MRKCHAR[0]
01975  M01S01739.fsescrn +++|            GQ 0 THEN SCRNPT4=MAX(MRKCHAR[0],XSHIFT[SPLIT]);
01976  M01S01740.fsescrn +++|          IF CURRENT EQ REGLINE[MARKREG+1] AND MRKCHAR[1]
01977  M01S01741.fsescrn +++|            GQ 0 THEN SCRNPT5=MIN(MRKCHAR[1],SCRNPT5);
01978  M01S01742.fsescrn +++|              IF SCRNPT4 GR SCRNPT5 THEN
01979  M01S01743.fsescrn +++|                BEGIN                # IF BEYOND MARKED AREA #
01980  M01S01744.fsescrn +++|                SCRNPT4 = - 1;
01981  M01S01745.fsescrn +++|                SCRNPT5 = - 1;
01982  M01S01746.fsescrn +++|                END
01983  M01S01747.fsescrn +++|          IF TABLOCKMDE[0] THEN
01984  M01S01748.fsescrn +++|            BEGIN                    # IF BLOCK MODE TYPE TERMINAL #
01985  M01S01749.fsescrn +++|            IF (SCRNPT2 EQ SCRNPT4) AND (SCRNPT3 EQ SCRNPT5) THEN
01986  M01S01750.fsescrn +++|              BEGIN                  # IF MARKING #
01987  M01S01751.fsescrn +++|              VDTSAM(MSKINVERSE);
01988  M01S01752.fsescrn +++|              END
01989  M01S01753.fsescrn +++|            ELSE
01990  M01S01754.fsescrn +++|              BEGIN                  # NOT MARKING #
01991  M01S01755.fsescrn +++|              VDTSAM(0);
01992  M01S01756.fsescrn +++|              END
01993  M01S01757.fsescrn +++|            END
01994  M01S01758.fsescrn +++|          SCRNPT6=MIN(SCRNPT6-1,USRNUMCOL+XSHIFT[SPLIT]);
01995  M01S01759.fsescrn +++|          FOR SCRNPT2=XSHIFT[SPLIT] STEP 1 UNTIL SCRNPT6 DO
01996  M01S01760.fsescrn +++|            BEGIN
01997  M01S01761.fsescrn +++|            IF SCRNPT2 EQ SCRNPT4 AND NOT TABLOCKMDE[0] THEN
01998  M01S01762.fsescrn +++|              BEGIN
01999  M01S01763.fsescrn +++|              IF TABATTRCHR[0] THEN
02000  M01S01764.fsescrn +++|                BEGIN                # IF ATTRIBUTE TAKES A SPACE #
02001  M01S01765.fsescrn +++|                IF TABNOTCHAR[0] AND SCRNPT2 EQ XSHIFT[SPLIT]
02002  M01S01766.fsescrn +++|                  AND SCRNPT2 NQ SCRNPT5 THEN
02003  M01S01767.fsescrn +++|                  BEGIN              # IF A CHARACTER MUST BE SKIPPED #
02004  M01S01768.fsescrn +++|                  SCRNPT2 = SCRNPT2 + 1;
02005  M01S01769.fsescrn +++|                  END
02006  M01S01770.fsescrn +++|                ELSE
02007  M01S01771.fsescrn +++|                  BEGIN              # MOVE CURSOR BACK FOR ATTRIBUTE #
02008  M01S01772.fsescrn +++|                  VDTOUT(X"08");
02009  M01S01773.fsescrn +++|                  END
02010  M01S01774.fsescrn +++|                END
02011  M01S01775.fsescrn +++|              VDTSAM(MSKINVERSE);
02012  M01S01776.fsescrn +++|              END
02013  M01S01777.fsescrn +++|            GETCHAR(LINE,SCRNPT2,SCRNPT3);
02014  M01S01778.fsescrn +++|            SCRNPT3=XLTINTXP[SCRNPT3];
02015  M01S00001.ns2623  +++|            IF SCRNPT3 LS O"4040" THEN SCRNPT3 = XLTINTXP[UNPRINT];
02016  M01S01779.fsescrn +++|            VDTCHR(SCRNPT3);
02017  M01S01780.fsescrn +++|            IF SCRNPT2 EQ SCRNPT5 AND NOT TABLOCKMDE[0] THEN
02018  M01S01781.fsescrn +++|              BEGIN
02019  M01S01782.fsescrn +++|              IF TABATTRCHR[0] THEN
02020  M01S01783.fsescrn +++|                BEGIN                # IF ATTRIBUTE TAKES A BYTE #
02021  M01S01784.fsescrn +++|                IF SCRNPT2 EQ VTXMAX THEN
02022  M01S01785.fsescrn +++|                  BEGIN              # IF AT END OF CURRENT LINE #
02023  M01S01786.fsescrn +++|                  VDTOUT(X"08");     # CURSOR MUST MOVE BACK #
02024  M01S01787.fsescrn +++|                  END
02025  M01S01788.fsescrn +++|                ELSE
02026  M01S01789.fsescrn +++|                  BEGIN              # SKIP AN OUTPUT CHARACTER #
02027  M01S01790.fsescrn +++|                  IF SCRNPT2 NQ SCRNPT6 THEN SCRNPT2 = SCRNPT2 + 1;
02028  M01S01791.fsescrn +++|                  END
02029  M01S01792.fsescrn +++|                END
02030  M01S01793.fsescrn +++|              VDTSAM(0);
02031  M01S01794.fsescrn +++|              END
02032  M01S01795.fsescrn +++|            END
02033  M01S01796.fsescrn +++|          ROWPMARK[SCRNPT1]=FALSE;
02034  M01S01797.fsescrn +++|          END
02035  M01S01798.fsescrn +++|        ELSE
02036  M01S01799.fsescrn +++|          BEGIN                         # ALL TEXT THAT FITS WINDOW   #
02037  M01S01800.fsescrn +++|            IF TABATTRCHR[0] THEN
02038  M01S01801.fsescrn +++|              BEGIN                  # IF ATTRIBUTE TAKES A BYTE #
02039  M01S01802.fsescrn +++|              IF ROWTYPE[SCRNPT1-1] EQ ROWST"TITLE" THEN
02040  M01S01803.fsescrn +++|                BEGIN                # IF FIRST LINE AFTER TITLE #
02041  M01S01804.fsescrn +++|                VDTPOS(VTXMAX,SCRNPT1-1);
02042  M01S01805.fsescrn +++|                ATTRIBMASK = MSKINVERSE;
02043  M01S01806.fsescrn +++|                END
02044  M01S01807.fsescrn +++|              END
02045  M01S01808.fsescrn +++|          VDTSAM(0);                 # CLEAR ATTRIBUTES #
02046  M01S01809.fsescrn +++|          SCRNPT6=MIN(SCRNPT6-1,USRNUMCOL+XSHIFT[SPLIT]);
02047  M01S01810.fsescrn +++|          SCRNPT4 = -1;              # NUMBER OF BLANKS SO FAR, - 1 #
02048  M01S01811.fsescrn +++|          FOR SCRNPT2=XSHIFT[SPLIT] STEP 1 UNTIL SCRNPT6 DO
02049  M01S01812.fsescrn +++|            BEGIN
02050  M01S01813.fsescrn +++|            GETCHAR(LINE,SCRNPT2,SCRNPT3);
02051  M01S01814.fsescrn +++|            IF VTCLRFRST[0] AND SCRNPT3 EQ CBLANK THEN
02052  M01S01815.fsescrn +++|              BEGIN                  # IF LINE CLEAR, CHAR. A BLANK #
02053  M01S01816.fsescrn +++|              SCRNPT4 = SCRNPT4 + 1;
02054  M01S01817.fsescrn +++|              END
02055  M01S01818.fsescrn +++|            ELSE
02056  M01S01819.fsescrn +++|              BEGIN                  # NOT A BLANK, OR NO CLEAR LINE #
02057  M01S01820.fsescrn +++|              IF SCRNPT4 GQ 0 THEN
02058  M01S01821.fsescrn +++|                BEGIN                # IF SOME BLANKS HAVE BEEN SEEN #
02059  M01S01822.fsescrn +++|                IF SCRNPT4 GQ VTNUMBLNK[0] THEN
02060  M01S01823.fsescrn +++|                  BEGIN              # IF AT OR PAST THRESHOLD #
02061  M01S01824.fsescrn +++|                  VDTPOS(SCRNPT2-XSHIFT[SPLIT],SCRNPT1);
02062  M01S01825.fsescrn +++|                  END
02063  M01S01826.fsescrn +++|                ELSE
02064  M01S01827.fsescrn +++|                  BEGIN              # NOT WORTH VDTPOS #
02065  M01S01828.fsescrn +++|                  SCRNPT5 = XLTINTXP[CBLANK];
Line S01829 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2444a
Seq #  *Modification Id* Act 
----------------------------+
02066  M02S01829.ns2444a ---|                  FOR DUMB = 0 STEP 1 UNTIL SCRNPT4 DO
02067  M01S00001.ns2444a +++|                  FOR SCRNPT4 = SCRNPT4 STEP -1 UNTIL 0 DO
02068  M01S01830.fsescrn +++|                    BEGIN            # SEND BLANKS #
02069  M01S01831.fsescrn +++|                    VDTCHR(SCRNPT5);
02070  M01S01832.fsescrn +++|                    END
02071  M01S01833.fsescrn +++|                  END
02072  M01S01834.fsescrn +++|                SCRNPT4 = -1;        # RESET BLANK COUNT #
02073  M01S01835.fsescrn +++|                END
02074  M01S01836.fsescrn +++|              SCRNPT3 = XLTINTXP[SCRNPT3];
02075  M01S00002.ns2623  +++|              IF SCRNPT3 LS O"4040" THEN SCRNPT3 = XLTINTXP[UNPRINT];
02076  M01S01837.fsescrn +++|              VDTCHR(SCRNPT3);
02077  M01S01838.fsescrn +++|              END
02078  M01S01839.fsescrn +++|            END
02079  M01S01840.fsescrn +++|          END
02080  M01S01841.fsescrn +++|        END
02081  M01S01842.fsescrn +++|      ELSE
02082  M01S01843.fsescrn +++|        BEGIN
02083  M01S01844.fsescrn +++|        VDTSAM(0);                   # CLEAR ATTRIBUTES #
02084  M01S01845.fsescrn +++|        ROWPMARK[SCRNPT1] = FALSE;
02085  M01S01846.fsescrn +++|        END
02086  M01S01847.fsescrn +++|      SCRNPT6=SCRNPT6-XSHIFT[SPLIT]+1;
02087  M01S01848.fsescrn +++|      SCRNPT6=MAX(SCRNPT6,0);
02088  M01S01849.fsescrn +++|      IF SCRNPT6 LQ VTXMAX AND       # IF NOT CLEARED (AT PTTEXT)#
02089  M01S01850.fsescrn +++|         NOT VTCLRFRST[0] THEN       # BEFORE PRINTING OR BY THE #
02090  M01S01851.fsescrn +++|         VDTCLL(SCRNPT6,SCRNPT1);    # ACTUAL PRINTING OF OUTPUT #
02091  M01S01852.fsescrn +++|      GOTO PTDONE;
02092  M01S01853.fsescrn +++|
02093  M01S01854.fsescrn +++|PTTITLE:
02094  M01S01855.fsescrn +++|      SPLIT=ROWSPLIT[SCRNPT1];
02095  M01S01856.fsescrn +++|      FILNUM=SPLITFILE[SPLIT];
02096  M01S01857.fsescrn +++|      IF TABLOCKMDE[0] THEN
02097  M01S01858.fsescrn +++|        BEGIN                        # IF NOT CHARACTER MODE #
02098  M01S01859.fsescrn +++|        SCRNPT6 = 1;                 # WRITE TITLE LINE #
02099  M01S01860.fsescrn +++|        VDTSAP(DUMB,0,SCRNPT1);
02100  M01S01861.fsescrn +++|        VDTSAM(MSKPROTECT+MSKUNDERLN);
02101  M01S01862.fsescrn +++|        END
02102  M01S01863.fsescrn +++|      ELSE
02103  M01S01864.fsescrn +++|        BEGIN                        # CHARACTER MODE TERMINAL #
02104  M01S01865.fsescrn +++|        SCRNPT6 = 0;                 # NO CHANGE YET TO TITLE LINE #
02105  M01S01866.fsescrn +++|        END
02106  M01S01867.fsescrn +++|      GENTITLE(SPLIT);
02107  M01S01868.fsescrn +++|      SCRNPT5=LENGTH(TTYLIN);
02108  M01S01869.fsescrn +++|      IF TABATTRCHR[0] THEN SCRNPT5 = SCRNPT5 - 3;
02109  M01S01870.fsescrn +++|      IF SPLIT EQ 1 THEN
02110  M01S01871.fsescrn +++|        BEGIN                        # IF TOP SPLIT #
02111  M01S01872.fsescrn +++|        FOR SCRNPT2=LENGTH(TITLE1LIN) STEP 1 UNTIL SCRNPT5 DO
02112  M01S01873.fsescrn +++|          BEGIN
02113  M01S01874.fsescrn +++|          SETCHAR(TITLE1LINE,SCRNPT2,CENDLINE);
02114  M01S01875.fsescrn +++|          END
02115  M01S01876.fsescrn +++|        END
02116  M01S01877.fsescrn +++|      ELSE                           # IF BOTTOM SPLIT #
02117  M01S01878.fsescrn +++|        BEGIN
02118  M01S01879.fsescrn +++|        FOR SCRNPT2=LENGTH(TITLE2LIN) STEP 1 UNTIL SCRNPT5 DO
02119  M01S01880.fsescrn +++|          BEGIN
02120  M01S01881.fsescrn +++|          SETCHAR(TITLE2LINE,SCRNPT2,CENDLINE);
02121  M01S01882.fsescrn +++|          END
02122  M01S01883.fsescrn +++|        END
02123  M01S01884.fsescrn +++|      SCRNPT2 = 0;
02124  M01S01885.fsescrn +++|      IF TABATTRCHR[0] THEN SCRNPT2 = 1;
02125  M01S01886.fsescrn +++|      FOR SCRNPT2 = SCRNPT2 STEP 1 UNTIL SCRNPT5 DO
02126  M01S01887.fsescrn +++|        BEGIN                        # UNTIL DONE FOR TITLE LINE #
02127  M01S01888.fsescrn +++|        IF SPLIT EQ 1 THEN GETCHAR(TITLE1LINE,SCRNPT2,SCRNPT3);
02128  M01S01889.fsescrn +++|        ELSE GETCHAR(TITLE2LINE,SCRNPT2,SCRNPT3);
02129  M01S01890.fsescrn +++|        GETCHAR(TTYLINE,SCRNPT2,SCRNPT4);
02130  M01S01891.fsescrn +++|        IF SCRNPT3 NQ SCRNPT4 AND SCRNPT4 NQ CENDLINE THEN
02131  M01S01892.fsescrn +++|          BEGIN                      # IF CHARACTER HAS CHANGED #
02132  M01S01893.fsescrn +++|          SCRNPT4=XLTINTXP[SCRNPT4];
02133  M01S01894.fsescrn +++|          IF SCRNPT6 EQ 0 THEN
02134  M01S01895.fsescrn +++|            BEGIN                    # IF FIRST CHANGE (CHAR. MODE) #
02135  M01S01896.fsescrn +++|            IF TABNOTCHAR[0] THEN
02136  M01S01897.fsescrn +++|              BEGIN                  # IF ATTRIBUTE IS "EMBEDDED" #
02137  M01S01898.fsescrn +++|              VDTPOS(0,SCRNPT1);
02138  M01S01899.fsescrn +++|              END
02139  M01S01900.fsescrn +++|            ELSE
02140  M01S01901.fsescrn +++|              BEGIN                  # ATTRIBUTE WILL NOT OVERWRITE #
02141  M01S01902.fsescrn +++|              VDTPOS(SCRNPT2,SCRNPT1);
02142  M01S01903.fsescrn +++|              END
02143  M01S01904.fsescrn +++|            IF TABVTPROTM[0] THEN
02144  M01S01905.fsescrn +++|              BEGIN                  # IF PROTECT AVAILABLE FOR FSE #
02145  M01S01906.fsescrn +++|              VDTSAM(MSKPROTECT+MSKUNDERLN);
02146  M01S01907.fsescrn +++|              END
02147  M01S01908.fsescrn +++|            ELSE
02148  M01S01909.fsescrn +++|              BEGIN                  # NO PROTECT #
02149  M01S01910.fsescrn +++|              VDTSAM(MSKUNDERLN);
02150  M01S01911.fsescrn +++|              END
02151  M01S01912.fsescrn +++|            IF TABNOTCHAR[0] THEN
02152  M01S01913.fsescrn +++|              BEGIN                  # IF ATTRIBUTE IS "EMBEDDED" #
02153  M01S01914.fsescrn +++|              VDTPOS(SCRNPT2,SCRNPT1);
02154  M01S01915.fsescrn +++|              END
02155  M01S01916.fsescrn +++|            SCRNPT6 = 1;
02156  M01S01917.fsescrn +++|            END
02157  M01S01918.fsescrn +++|          ELSE
02158  M01S01919.fsescrn +++|            BEGIN                    # NOT FIRST CHANGED CHARACTER #
02159  M01S01920.fsescrn +++|            IF SCRNPT2 NQ VTXCUR THEN VDTPOS(SCRNPT2,SCRNPT1);
02160  M01S01921.fsescrn +++|            END
02161  M01S01922.fsescrn +++|          VDTCHR(SCRNPT4);
02162  M01S01923.fsescrn +++|          END
02163  M01S01924.fsescrn +++|        END
02164  M01S01925.fsescrn +++|      IF NOT TABLOCKMDE[0] THEN
02165  M01S01926.fsescrn +++|        BEGIN                        # IF CHARACTER MODE TERMINAL #
02166  M01S01927.fsescrn +++|        IF SCRNPT6 EQ 1 THEN
02167  M01S01928.fsescrn +++|          BEGIN                      # IF CHANGE MADE TO TITLE LINE #
Line S01929 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02168  M02S01929.ns2700  ---|          IF TABNOTCHAR[0] THEN
Line S01930 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02169  M02S01930.ns2700  ---|            BEGIN                    # IF ATTRIBUTE IS "EMBEDDED" #
Line S01931 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02170  M02S01931.ns2700  ---|            IF TABATTRCHR[0] THEN
Line S01932 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02171  M02S01932.ns2700  ---|              BEGIN                  # IF ATTRIBUTE TAKES SPACE #
Line S01933 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02172  M02S01933.ns2700  ---|              VDTPOS(VTXMAX-1,SCRNPT1);
Line S01934 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02173  M02S01934.ns2700  ---|              END
Line S01935 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02174  M02S01935.ns2700  ---|            ELSE
Line S01936 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02175  M02S01936.ns2700  ---|              BEGIN                  # NO SPACE TAKEN BY ATTRIBUTE #
Line S01937 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02176  M02S01937.ns2700  ---|              VDTPOS(VTXMAX,SCRNPT1);
Line S01938 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02177  M02S01938.ns2700  ---|              END
02178  M01S00002.ns2700  +++|          IF TABNOTCHAR[0] AND TABATTRCHR[0] THEN
02179  M01S00003.ns2700  +++|            BEGIN                    # IF ATTRIBUTE TAKES SPACE #
02180  M01S00004.ns2700  +++|            VDTPOS(VTXMAX-1,SCRNPT1);
02181  M01S00005.ns2700  +++|            END
02182  M01S00006.ns2700  +++|          ELSE
02183  M01S00007.ns2700  +++|            BEGIN                    # IF ATTRIBUTE TAKES NO SPACE #
02184  M01S00008.ns2700  +++|            VDTPOS(VTXMAX,SCRNPT1);
02185  M01S01939.fsescrn +++|            END
02186  M01S01940.fsescrn +++|          VDTSAM(0);
02187  M01S01941.fsescrn +++|          SCRNPT6 = 0;
02188  M01S01942.fsescrn +++|          END
02189  M01S01943.fsescrn +++|        END
02190  M01S01944.fsescrn +++|      ATTRIBMASK[0] = 0;             # CLEAR MASK #
02191  M01S01945.fsescrn +++|      FOR SCRNPT2 = 0 STEP 1 UNTIL TTLLNLEN DO
02192  M01S01946.fsescrn +++|        BEGIN
02193  M01S01947.fsescrn +++|        IF SPLIT EQ 1 THEN TITLE1LINE[SCRNPT2]=TTYLINE[SCRNPT2];
02194  M01S01948.fsescrn +++|        ELSE TITLE2LINE[SCRNPT2]=TTYLINE[SCRNPT2];
02195  M01S01949.fsescrn +++|        END
02196  M01S01950.fsescrn +++|      LTPS(SPLIT)=TOPS(SPLIT);
02197  M01S01951.fsescrn +++|      LASTNAME[SPLIT]=FILENAM[FILNUM];
02198  M01S01952.fsescrn +++|      GOTO PTDONE;
02199  M01S01953.fsescrn +++|
02200  M01S01954.fsescrn +++|PTLABEL:
02201  M01S01955.fsescrn +++|      VDTSAP(DUMB,0,SCRNPT1);        # SET ATTR POSITION #
02202  M01S01956.fsescrn +++|      IF NOT TABLOCKMDE[0] THEN
02203  M01S01957.fsescrn +++|        BEGIN                        # IF NOT BLOCK MODE #
02204  M01S01958.fsescrn +++|        VDTCLL(0,SCRNPT1);           # CLEAR LINE #
02205  M01S01959.fsescrn +++|        END
02206  M01S01960.fsescrn +++|      IF TABVTPROTM[0] THEN VDTSAM(MSKPROTECT);
02207  M01S01961.fsescrn +++|      SCRNPT3=1;
Line S01962 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2675
Seq #  *Modification Id* Act 
----------------------------+
02208  M02S01962.ns2675  ---|      IF SCRNPT1 EQ FKEYROW OR SCRNPT1 EQ FKEYROW+3 THEN SCRNPT3=-1;
Line S01963 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2675
Seq #  *Modification Id* Act 
----------------------------+
02209  M02S01963.ns2675  ---|      SCRNPT4=0;
Line S01964 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2675
Seq #  *Modification Id* Act 
----------------------------+
02210  M02S01964.ns2675  ---|      IF SCRNPT1 GQ FKEYROW+3 THEN SCRNPT4=FKEYSHOW;
Line S00001 Modification History
M01 (Added by) ns2675
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02211  M02S00001.ns2700  ---|      IF SCRNPT1 EQ FKEYROW OR SCRNPT1 EQ FKEYROW+3
Line S00002 Modification History
M01 (Added by) ns2675
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02212  M02S00002.ns2700  ---|        OR SCRNPT1 EQ FKEYROW+6 THEN SCRNPT3 = -1;
Line S00003 Modification History
M01 (Added by) ns2675
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02213  M02S00003.ns2700  ---|      IF SCRNPT1 LS FKEYROW+2 THEN SCRNPT4 = 0;
Line S00004 Modification History
M01 (Added by) ns2675
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02214  M02S00004.ns2700  ---|      ELSE IF SCRNPT1 LS FKEYROW+5 THEN SCRNPT4 = FKEYSHOW;
02215  M01S00009.ns2700  +++|      IF SHIFTFKEY NQ 0 AND (SCRNPT1 EQ FKEYROW OR SCRNPT1 EQ FKEYROW+3
02216  M01S00010.ns2700  +++|        OR SCRNPT1 EQ FKEYROW+6) THEN SCRNPT3 = -1;
02217  M01S00011.ns2700  +++|      IF SCRNPT1 LS FKEYROW+1+SHIFTFKEY THEN SCRNPT4 = 0;
02218  M01S00012.ns2700  +++|      ELSE IF SCRNPT1 LS FKEYROW+2*(2+SHIFTFKEY)-1 THEN
02219  M01S00013.ns2700  +++|        SCRNPT4 = FKEYSHOW;
02220  M01S00005.ns2675  +++|      ELSE SCRNPT4 = FKEYSHOW+FKEYSHOW;
Line S00006 Modification History
M01 (Added by) ns2675
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02221  M02S00006.ns2700  ---|      SCRNPT2=1;
Line S00007 Modification History
M01 (Added by) ns2675
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02222  M02S00007.ns2700  ---|      FOR SCRNPT5 = 1 STEP 1 UNTIL POSFKEYS DO
Line S00008 Modification History
M01 (Added by) ns2675
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02223  M02S00008.ns2700  ---|        BEGIN
Line S00009 Modification History
M01 (Added by) ns2675
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02224  M02S00009.ns2700  ---|        IF (FKEYSTRING[SCRNPT5] NQ NULLIN) OR
Line S00010 Modification History
M01 (Added by) ns2675
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02225  M02S00010.ns2700  ---|           (FKEYSTRING[-SCRNPT5] NQ NULLIN) THEN
Line S00011 Modification History
M01 (Added by) ns2675
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02226  M02S00011.ns2700  ---|          BEGIN
Line S00012 Modification History
M01 (Added by) ns2675
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02227  M02S00012.ns2700  ---|          FKEYNUMS[SCRNPT2] = SCRNPT5;
Line S00013 Modification History
M01 (Added by) ns2675
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02228  M02S00013.ns2700  ---|          SCRNPT2 = SCRNPT2 + 1;
Line S00014 Modification History
M01 (Added by) ns2675
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02229  M02S00014.ns2700  ---|          END
Line S00015 Modification History
M01 (Added by) ns2675
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02230  M02S00015.ns2700  ---|        END
Line S00016 Modification History
M01 (Added by) ns2675
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02231  M02S00016.ns2700  ---|      FOR SCRNPT2 = SCRNPT2 STEP 1 UNTIL POSFKEYS DO
Line S00017 Modification History
M01 (Added by) ns2675
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02232  M02S00017.ns2700  ---|        FKEYNUMS[SCRNPT2] = 0;
02233  M01S01965.fsescrn +++|      FOR SCRNPT2=1 STEP 1 WHILE SCRNPT2 LQ FKEYSHOW
Line S01966 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2675
Seq #  *Modification Id* Act 
----------------------------+
02234  M02S01966.ns2675  ---|        AND SCRNPT1 NQ FKEYROW+2 DO
Line S00018 Modification History
M01 (Added by) ns2675
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02235  M02S00018.ns2700  ---|        AND SCRNPT1 NQ FKEYROW+2 AND SCRNPT1 NQ FKEYROW+5 DO
02236  M01S00014.ns2700  +++|        AND SCRNPT1 NQ FKEYROW+1+SHIFTFKEY
02237  M01S00015.ns2700  +++|        AND SCRNPT1 NQ FKEYROW+2*(2+SHIFTFKEY)-1 DO
02238  M01S01967.fsescrn +++|        BEGIN
Line S01968 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2675
Seq #  *Modification Id* Act 
----------------------------+
02239  M02S01968.ns2675  ---|        SCRNPT5=SCRNPT2+SCRNPT4;
02240  M01S00019.ns2675  +++|        SCRNPT5 = FKEYNUMS[SCRNPT2+SCRNPT4];
02241  M01S00020.ns2675  +++|        IF SCRNPT5 EQ 0 THEN SCRNPT3 = -1;
02242  M01S01969.fsescrn +++|        IF SCRNPT3 GQ 0 THEN
02243  M01S01970.fsescrn +++|          BEGIN
02244  M01S01971.fsescrn +++|          IF SCRNPT5 LS 10 THEN TTSTR("F$");
02245  M01S01972.fsescrn +++|          TTDEC(SCRNPT5);
02246  M01S01973.fsescrn +++|          TTSTR(FKEYSPC1);           # " $" OR "$" #
02247  M01S01974.fsescrn +++|          END
02248  M01S01975.fsescrn +++|        ELSE TTSTR(FKEYSPC2);        # "   $" OR "  $" #
02249  M01S01976.fsescrn +++|        IF TABVTPROTM[0] THEN
02250  M01S01977.fsescrn +++|          BEGIN                      # IF PROTECT AVAILABLE FOR FSE #
02251  M01S01978.fsescrn +++|          VDTSAM(MSKPROTECT+MSKINVERSE);
02252  M01S01979.fsescrn +++|          END
02253  M01S01980.fsescrn +++|        ELSE
02254  M01S01981.fsescrn +++|          BEGIN                      # NO PROTECT #
02255  M01S01982.fsescrn +++|          VDTSAM(MSKINVERSE);
02256  M01S01983.fsescrn +++|          END
Line S01984 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
02257  M02S01984.ns2641  ---|        IF VTXMAX EQ 131 THEN TTSTR("   $");
02258  M01S00152.ns2641  +++|        IF FKEYPAD GR 0 THEN TTST("      ",FKEYPAD);
02259  M01S01985.fsescrn +++|        TTST(FKEYNAME[SCRNPT5*SCRNPT3],FKEYCHARS);
Line S01986 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
02260  M02S01986.ns2641  ---|        IF VTXMAX EQ 131 THEN TTSTR("   $");
02261  M01S00153.ns2641  +++|        IF FKEYPAD GR 0 THEN TTST("      ",FKEYPAD);
02262  M01S01987.fsescrn +++|        IF SCRNPT2 NQ FKEYSHOW THEN
02263  M01S01988.fsescrn +++|          BEGIN                      # IF NOT FKEYSHOW #
02264  M01S01989.fsescrn +++|          IF TABVTPROTM[0] THEN
02265  M01S01990.fsescrn +++|            BEGIN                    # IF PROTECT AVAILABLE FOR FSE #
02266  M01S01991.fsescrn +++|            VDTSAM(MSKPROTECT);
02267  M01S01992.fsescrn +++|            END
02268  M01S01993.fsescrn +++|          ELSE
02269  M01S01994.fsescrn +++|            BEGIN                    # NO PROTECT #
02270  M01S01995.fsescrn +++|            VDTSAM(0);
02271  M01S01996.fsescrn +++|            END
02272  M01S01997.fsescrn +++|          TTSTR(FKEYSPC1);           # " $" OR "$" #
02273  M01S01998.fsescrn +++|          END
02274  M01S01999.fsescrn +++|        END
02275  M01S02000.fsescrn +++|      IF NOT TABLOCKMDE[0] THEN
02276  M01S02001.fsescrn +++|        BEGIN                        # IF CHARACTER MODE TERMINAL #
02277  M01S02002.fsescrn +++|        IF NOT(TABATTRCHR[0] AND TABLASTPOS[0] EQ CURSORMOVE"SCROLL"
02278  M01S02003.fsescrn +++|          AND VTYCUR EQ VTYMAX) THEN VDTSAM(0);
02279  M01S02004.fsescrn +++|        END
02280  M01S02005.fsescrn +++|      ELSE
02281  M01S02006.fsescrn +++|        BEGIN                        # IF BLOCK MODE TERMINAL #
Line S02007 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2675
Seq #  *Modification Id* Act 
----------------------------+
02282  M02S02007.ns2675  ---|        IF SCRNPT1 EQ FKEYROW+2 THEN VDTCLL(0,SCRNPT1);
Line S00021 Modification History
M01 (Added by) ns2675
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02283  M02S00021.ns2700  ---|        IF SCRNPT1 EQ FKEYROW+2 OR SCRNPT1 EQ FKEYROW+5 THEN
02284  M01S00016.ns2700  +++|        IF SCRNPT1 EQ FKEYROW+1+SHIFTFKEY
02285  M01S00017.ns2700  +++|          OR SCRNPT1 EQ FKEYROW+2*(2+SHIFTFKEY)-1 THEN
02286  M01S00022.ns2675  +++|          VDTCLL(0,SCRNPT1);
02287  M01S02008.fsescrn +++|        END
02288  M01S02009.fsescrn +++|      ATTRIBMASK[0] = 0;             # CLEAR MASK #
02289  M01S02010.fsescrn +++|      GOTO PTDONE;
02290  M01S02011.fsescrn +++|
02291  M01S02012.fsescrn +++|PTEMPTY:
02292  M01S02013.fsescrn +++|      VDTSAP(DUMB,0,SCRNPT1);        # SET UP AN ATTR BYTE #
02293  M01S02014.fsescrn +++|      VDTSAM(0);
02294  M01S02015.fsescrn +++|      VDTCLL(0,SCRNPT1);
02295  M01S02016.fsescrn +++|      GOTO PTDONE;
02296  M01S02017.fsescrn +++|
02297  M01S02018.fsescrn +++|PTCMD:
02298  M01S02019.fsescrn +++|      VDTSAP(DUMB,0,COMMANDROW);     # SET UP AN ATTR BYTE #
02299  M01S02020.fsescrn +++|      VDTSAM(0);
02300  M01S02021.fsescrn +++|      VDTCLL(0,COMMANDROW);
02301  M01S02022.fsescrn +++|      GOTO PTDONE;
02302  M01S02023.fsescrn +++|
02303  M01S02024.fsescrn +++|PTRESPONSE:
02304  M01S02025.fsescrn +++|      VDTSAP(DUMB,0,RESPONSEROW);    # SET ATTRIBUTE POSITION #
02305  M01S02026.fsescrn +++|      IF TABLOCKMDE[0] THEN VDTSAM(MSKPROTECT);
02306  M01S02027.fsescrn +++|      VDTCLL(0,RESPONSEROW);
02307  M01S02028.fsescrn +++|      ATTRIBMASK[0] = 0;
02308  M01S02029.fsescrn +++|                                     # FALL THROUGH TO PTDONE #
02309  M01S02030.fsescrn +++|PTDONE:
02310  M01S02031.fsescrn +++|
02311  M01S02032.fsescrn +++|      END
02312  M01S02033.fsescrn +++|    END
02313  M01S02034.fsescrn +++|
02314  M01S02035.fsescrn +++|  IF ERRCURSOR GQ 0 THEN
02315  M01S02036.fsescrn +++|    BEGIN
02316  M01S02037.fsescrn +++|    XCURSOR=ERRCURSOR;
02317  M01S02038.fsescrn +++|    IF YCURSOR EQ COMMANDROW THEN
02318  M01S02039.fsescrn +++|      BEGIN                          # IF COMMAND ROW #
02319  M01S02040.fsescrn +++|      IF TABLOCKMDE[0] THEN
02320  M01S02041.fsescrn +++|        BEGIN                        # SET ATTRIBUTE #
02321  M01S02042.fsescrn +++|        VDTSAP(DUMB,0,COMMANDROW);
02322  M01S02043.fsescrn +++|        VDTSAM(0);
02323  M01S02044.fsescrn +++|        END
02324  M01S02045.fsescrn +++|      VDTCLL(0,COMMANDROW);
02325  M01S02046.fsescrn +++|      FOR SCRNPT2 = 0 STEP 1 UNTIL LENGTH(CMDLIN) - 1  DO
02326  M01S02047.fsescrn +++|        BEGIN                        # WRITE COMMAND #
02327  M01S02048.fsescrn +++|        GETCHAR(CMDLINE,SCRNPT2,SCRNPT3);
02328  M01S02049.fsescrn +++|        VDTCHR(XLTINTXP[SCRNPT3]);
02329  M01S02050.fsescrn +++|        END
02330  M01S02051.fsescrn +++|      ROWPAINT[COMMANDROW]=TRUE;
02331  M01S02052.fsescrn +++|      END
02332  M01S02053.fsescrn +++|    END
02333  M01S02054.fsescrn +++|  ELSE
02334  M01S02055.fsescrn +++|    BEGIN                            # NO NEED TO PAINT #
02335  M01S02056.fsescrn +++|    IF TABLOCKMDE[0] THEN
02336  M01S02057.fsescrn +++|      BEGIN                          # INSURE ATTRIBUTE #
02337  M01S02058.fsescrn +++|      VDTSAP(DUMB,0,COMMANDROW);
02338  M01S02059.fsescrn +++|      VDTSAM(0);
02339  M01S02060.fsescrn +++|      END
02340  M01S02061.fsescrn +++|    END
02341  M01S02062.fsescrn +++|
02342  M01S02063.fsescrn +++|  IF ERRSTRING NQ " $" THEN
02343  M01S02064.fsescrn +++|    BEGIN
02344  M01S02065.fsescrn +++|    VDTSAP(DUMB,0,RESPONSEROW);
02345  M01S02066.fsescrn +++|    IF TABLOCKMDE[0] THEN VDTSAM(MSKPROTECT);
02346  M01S02067.fsescrn +++|    VDTCLL(0,RESPONSEROW);
02347  M01S02068.fsescrn +++|    TTSTR(ERRSTRING);
02348  M01S02069.fsescrn +++|    ATTRIBMASK[0] = 0;
02349  M01S02070.fsescrn +++|    ROWPAINT[RESPONSEROW]=TRUE;
02350  M01S02071.fsescrn +++|    END
02351  M01S02072.fsescrn +++|
02352  M01S02073.fsescrn +++|  POSZ(CURF(CURFILE));
02353  M01S02074.fsescrn +++|  IF XCURSOR LS 0 THEN XCURSOR=0;
02354  M01S02075.fsescrn +++|  IF XCURSOR GR USRNUMCOL THEN
02355  M01S02076.fsescrn +++|    BEGIN                            # IF CURSOR OFF EDGE OF SCREEN #
02356  M01S02077.fsescrn +++|    XCURSOR=0;
02357  M01S02078.fsescrn +++|    IF ERRSTRING EQ " $" THEN
02358  M01S02079.fsescrn +++|      BEGIN                          # IF NO OTHER ERROR MESSAGE #
02359  M01S02080.fsescrn +++|      ERRSTRING = "CURSOR RESET FROM BEYOND EDGE OF SCREEN$";
02360  M01S02081.fsescrn +++|      CONTROL IFEQ SINGLE,1;         # IF NOT MULTI USER FSE #
02361  M01S02082.fsescrn +++|        IF TABLOCKMDE[0] THEN
02362  M01S02083.fsescrn +++|          BEGIN
02363  M01S02084.fsescrn +++|          VDTSAP(DUMB,0,RESPONSEROW);
02364  M01S02085.fsescrn +++|          VDTSAM(MSKPROTECT);
02365  M01S02086.fsescrn +++|          END
02366  M01S02087.fsescrn +++|      CONTROL FI;                    # END OF NOT MULTI USER FSE #
02367  M01S02088.fsescrn +++|      VDTCLL(0,RESPONSEROW);
02368  M01S02089.fsescrn +++|      TTSTR(ERRSTRING);
02369  M01S02090.fsescrn +++|      ATTRIBMASK[0] = 0;
02370  M01S02091.fsescrn +++|      ROWPAINT[RESPONSEROW]=TRUE;
02371  M01S02092.fsescrn +++|      END
02372  M01S02093.fsescrn +++|    END
02373  M01S02094.fsescrn +++|  VDTPOS(XCURSOR,YCURSOR);
02374  M01S02095.fsescrn +++|
02375  M01S02096.fsescrn +++|  IOEND  # PAINTSCREEN #
02376  M01S02097.fsescrn +++|PAGE                         # GLOBAL LOCATE/CHANGE PROMPT #
02377  M01S02098.fsescrn +++|
02378  M01S02099.fsescrn +++|
02379  M01S02100.fsescrn +++|PROC GLOBALPROMPT;
02380  M01S02101.fsescrn +++|  IOBEGIN(GLOBALPROMPT)
02381  M01S02102.fsescrn +++|#
02382  M01S02103.fsescrn +++|**        GLOBALPROMPT - ASK QUESTION FOR GLOBAL OPERATIONS.
02383  M01S02104.fsescrn +++|*
02384  M01S02105.fsescrn +++|*         THIS ROUTINE PROVIDES SCREEN FORMATTING AND INTERACTIVE
02385  M01S02106.fsescrn +++|*         DIALOGUE FOR THE GENERAL CATEGORY OF GLOBAL SEARCH AND
02386  M01S02107.fsescrn +++|*         GLOBAL CHANGES.  THESE FUNCTIONS REQUIRE INTERMITTENT
02387  M01S02108.fsescrn +++|*         CALLS TO A SCREEN DRIVER WHILE PROCESSING A FILE.  THE
02388  M01S02109.fsescrn +++|*         ACTUAL PROCESSING CODE INTERFACES TO EITHER GLOBALLOCATE
02389  M01S02110.fsescrn +++|*         OR GLOBALCHANGE.  THESE ROUTINES PERFORM PRELIMINARY
02390  M01S02111.fsescrn +++|*         OPERATIONS AND THEN PASS THE CALL TO THIS ROUTINE.  THEN
02391  M01S02112.fsescrn +++|*         THE INTERFACE ROUTINE ANALYZES THE USERS REPLY.
02392  M01S02113.fsescrn +++|*
02393  M01S02114.fsescrn +++|*         GLOBALPROMPT HAS THREE BASIC FUNCTIONS.  FIRST, IT DOES
02394  M01S02115.fsescrn +++|*         INITIAL SCREEN FORMATTING ON THE FIRST CALL OF THE GLOBAL
02395  M01S02116.fsescrn +++|*         OPERATION OR THE FIRST CALL AFTER A DIALOGUE.  SECOND, IT
02396  M01S02117.fsescrn +++|*         DISPLAYS EACH LINE OF TEXT AS THEY BECOME AVAILABLE.
02397  M01S02118.fsescrn +++|*         THIRD, WHEN THE DISPLAY IS FULL OR THE OPERATION IS ABOUT
02398  M01S02119.fsescrn +++|*         TO FINISH, GLOBALPROMPT PROMPTS THE USER FOR INSTRUCTIONS.
02399  M01S02120.fsescrn +++|*
02400  M01S02121.fsescrn +++|*         ENTRY  SCRNPT4 - ORDINAL OF PROMPT MESSAGE.
02401  M01S02122.fsescrn +++|*                SCREENMODE, PROMPTING - BOTH TRUE TO DO ANYTHING.
02402  M01S02123.fsescrn +++|*                ROWSUSED - AS INITIALIZED OR LEFT BY PREVIOUS CALL.
02403  M01S02124.fsescrn +++|*                LINCTR - INDICATES FINAL CALL OF GLOBAL OPERATION.
02404  M01S02125.fsescrn +++|*                CURRENT, CURSPLIT, CURFILE, TOPF() - WHERE WE ARE.
02405  M01S02126.fsescrn +++|*                COMMANDROW, TITLEROW[ALL], NUMROWS[ALL] - SETUP.
02406  M01S02127.fsescrn +++|*
02407  M01S02128.fsescrn +++|*         EXIT   SCRNPT5=1 IF PROMPT REALLY OCCURRED, ELSE 0.
02408  M01S02129.fsescrn +++|*                TTYLIN - POSSIBLY INPUT TEXT.
02409  M01S02130.fsescrn +++|*                TMPLIN - OLD VERSION OF TTYLIN IF TTYLIN CHANGED.
02410  M01S02131.fsescrn +++|*                ROWLNPTR[ALL] - INDICATE WHICH FILE LINE ON ROW.
02411  M01S02132.fsescrn +++|*                ROWUSED - UPDATED.
02412  M01S02133.fsescrn +++|*                ROWPAINT[THIS SPLIT] - TRUE.
02413  M01S02134.fsescrn +++|*                TITLE1LIN, TITLE2LIN - CLEARED.
02414  M01S02135.fsescrn +++|*
02415  M01S02136.fsescrn +++|*         MACROS GETCHAR.
02416  M01S02137.fsescrn +++|*
02417  M01S02138.fsescrn +++|*         CALLS  VDTCLL, VDTPOS, TTLPAD, TTSTR, VDTCHR, PAINTNONE,
02418  M01S02139.fsescrn +++|*                COPYLIN, ASKUSER, PAINTSPLIT.
02419  M01S02140.fsescrn +++|*
02420  M01S02141.fsescrn +++|*         USES   P<FROM>, SCRNPT1, SCRNPT2, SCRNPT3, SCRNPT6.
02421  M01S02142.fsescrn +++|#
02422  M01S02143.fsescrn +++|  ARRAY GLBLMSGS [1:4] S(8);
02423  M01S02144.fsescrn +++|    BEGIN
02424  M01S02145.fsescrn +++|    ITEM GLBLTITLE  C(0,0,40) = [ "LOCATED LINES$",
02425  M01S02146.fsescrn +++|      "LOCATED LINES$", "CHANGED LINES$", "CHANGED LINES$" ];
02426  M01S02147.fsescrn +++|    ITEM GLBLPROMPT C(4,0,40) = [
02427  M01S02148.fsescrn +++|      "ENTER LINE NUMBER OR PRESS NEXT$",
02428  M01S02149.fsescrn +++|      "ENTER LINE NUMBER OR PRESS NEXT$",
02429  M01S02150.fsescrn +++|      "ENTER UNDO OR PRESS NEXT FOR MORE$",
02430  M01S02151.fsescrn +++|      "ENTER UNDO OR PRESS NEXT TO END$" ];
02431  M01S02152.fsescrn +++|    END
02432  M01S02153.fsescrn +++|
02433  M01S02154.fsescrn +++|  SCRNPT5=0;
02434  M01S02155.fsescrn +++|
02435  M01S02156.fsescrn +++|  IF NOT (SCREENMODE AND PROMPTING) THEN IORET
02436  M01S02157.fsescrn +++|
02437  M01S02158.fsescrn +++|  IF ROWSUSED EQ 0 THEN      # INIT DISPLAY      #
02438  M01S02159.fsescrn +++|    BEGIN
02439  M01S02160.fsescrn +++|    VDTCLL(0,COMMANDROW);
02440  M01S02161.fsescrn +++|    VDTCLL(0,RESPONSEROW);
02441  M01S02162.fsescrn +++|    TITLE1LINE[0]=NULLIN;
02442  M01S02163.fsescrn +++|    TITLE2LINE[0]=NULLIN;
02443  M01S02164.fsescrn +++|    FOR SCRNPT1=0 STEP 1 UNTIL VTYMAX DO ROWLNPTR[SCRNPT1]=0;
02444  M01S02165.fsescrn +++|    FOR SCRNPT1=TITLEROW[CURSPLIT] STEP 1 UNTIL
02445  M01S02166.fsescrn +++|      TITLEROW[CURSPLIT]+NUMROWS[CURSPLIT] DO VDTCLL(0,SCRNPT1);
02446  M01S02167.fsescrn +++|    VDTPOS(0,TITLEROW[CURSPLIT]);
02447  M01S02168.fsescrn +++|    TTSTR("F$");
02448  M01S02169.fsescrn +++|    TTLCSTR("ILE $");
02449  M01S02170.fsescrn +++|    TTLFN(FILENAM[SPLITFILE[CURSPLIT]]);
02450  M01S02171.fsescrn +++|    TTSTR("   D$");
02451  M01S02172.fsescrn +++|    TTLCSTR("ISPLAYING $");
02452  M01S02173.fsescrn +++|    P<FROM>=LOC(GLBLTITLE[SCRNPT4]);
02453  M01S02174.fsescrn +++|    TTLCSTR(FROM);
02454  M01S02175.fsescrn +++|    END
02455  M01S02176.fsescrn +++|
02456  M01S02177.fsescrn +++|  IF LINCTR LS LARGENUM THEN # NOT FINAL CALL    #
02457  M01S02178.fsescrn +++|    BEGIN
02458  M01S02179.fsescrn +++|    ROWSUSED=ROWSUSED+1;
02459  M01S02180.fsescrn +++|    # PRINT ONE TEXT LINE NEXT POSITION #
02460  M01S02181.fsescrn +++|    VDTPOS(0,TITLEROW[CURSPLIT]+ROWSUSED);
02461  M01S02182.fsescrn +++|    ROWLNPTR[TITLEROW[CURSPLIT]+ROWSUSED]=CURRENT-TOPF(CURFILE);
02462  M01S02183.fsescrn +++|    TTLPAD(CURRENT-TOPF(CURFILE),7," ");
02463  M01S02184.fsescrn +++|    TTSTR(" $");
02464  M01S02185.fsescrn +++|    SCRNPT6 = -1;                    # NUMBER OF BLANKS SO FAR, - 1 #
02465  M01S02186.fsescrn +++|    FOR SCRNPT1=0 STEP 1 UNTIL MIN(LENGTH(LIN)-1,VTXMAX-8) DO
02466  M01S02187.fsescrn +++|      BEGIN
02467  M01S02188.fsescrn +++|      GETCHAR(LINE,SCRNPT1,SCRNPT2);
02468  M01S02189.fsescrn +++|      IF SCRNPT2 EQ CBLANK THEN
02469  M01S02190.fsescrn +++|        BEGIN                       # IF CHARACTER IS A BLANK #
02470  M01S02191.fsescrn +++|        SCRNPT6 = SCRNPT6 + 1;
02471  M01S02192.fsescrn +++|        END
02472  M01S02193.fsescrn +++|      ELSE
02473  M01S02194.fsescrn +++|        BEGIN                        # NOT A BLANK #
02474  M01S02195.fsescrn +++|        IF SCRNPT6 GQ 0 THEN
02475  M01S02196.fsescrn +++|          BEGIN                      # IF SOME BLANKS HAVE BEEN SEEN #
02476  M01S02197.fsescrn +++|          IF SCRNPT6 GQ VTNUMBLNK[0] THEN
02477  M01S02198.fsescrn +++|            BEGIN                    # IF AT OR PAST THRESHOLD #
02478  M01S02199.fsescrn +++|            VDTPOS(SCRNPT1+8,VTYCUR);
02479  M01S02200.fsescrn +++|            END
02480  M01S02201.fsescrn +++|          ELSE
02481  M01S02202.fsescrn +++|            BEGIN                    # NOT WORTH VDTPOS #
02482  M01S02203.fsescrn +++|            SCRNPT3 = XLTINTXP[CBLANK];
Line S02204 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2444a
Seq #  *Modification Id* Act 
----------------------------+
02483  M02S02204.ns2444a ---|            FOR DUMB = 0 STEP 1 UNTIL SCRNPT6 DO
02484  M01S00002.ns2444a +++|            FOR SCRNPT6 = SCRNPT6 STEP -1 UNTIL 0 DO
02485  M01S02205.fsescrn +++|              BEGIN                  # SEND BLANKS #
02486  M01S02206.fsescrn +++|              VDTCHR(SCRNPT3);
02487  M01S02207.fsescrn +++|              END
02488  M01S02208.fsescrn +++|            END
02489  M01S02209.fsescrn +++|          SCRNPT6 = -1;              # RESET BLANK COUNT #
02490  M01S02210.fsescrn +++|          END
02491  M01S02211.fsescrn +++|        SCRNPT2 = XLTINTXP[SCRNPT2];
02492  M01S02212.fsescrn +++|        VDTCHR(SCRNPT2);
02493  M01S02213.fsescrn +++|        END
02494  M01S02214.fsescrn +++|      END
02495  M01S02215.fsescrn +++|    END
02496  M01S02216.fsescrn +++|
02497  M01S02217.fsescrn +++|  IF ROWSUSED LS NUMROWS[CURSPLIT] AND LINCTR LS LARGENUM
02498  M01S02218.fsescrn +++|    THEN IORET
02499  M01S02219.fsescrn +++|
02500  M01S02220.fsescrn +++|  PAINTNONE;                         # SUPPRESS PAINTSCREEN OUTPUT #
02501  M01S02221.fsescrn +++|  COPYLIN(TTYLIN,TMPLIN);      # PRESERVE OLD TTYLIN         #
02502  M01S02222.fsescrn +++|  P<FROM>=LOC(GLBLPROMPT[SCRNPT4]);
02503  M01S02223.fsescrn +++|  ASKUSER(FROM,0);
02504  M01S02224.fsescrn +++|  PROMPTING=TRUE;            # SINCE ASKUSER CLEARS        #
02505  M01S02225.fsescrn +++|  PAINTSPLIT;                # SO SCREEN WILL BE RE-BUILT  #
02506  M01S02226.fsescrn +++|  SCRNPT5=1;                 # INDICATE PROMPT ON THIS CYCLE         #
02507  M01S02227.fsescrn +++|  ROWSUSED=0;                # INDICATE FRESH BATCH NEXT TIME        #
02508  M01S02228.fsescrn +++|
02509  M01S02229.fsescrn +++|  IOEND                       # OF GLOBALPROMPT   #
02510  M01S02230.fsescrn +++|
02511  M01S02231.fsescrn +++|
02512  M01S02232.fsescrn +++|PROC GLOBALLOCATE;
02513  M01S02233.fsescrn +++|  IOBEGIN(GLOBALLOCATE)
02514  M01S02234.fsescrn +++|#
02515  M01S02235.fsescrn +++|**        GLOBALLOCATE - GLOBAL LOCATE PROMPTING INTERFACE.
02516  M01S02236.fsescrn +++|*
02517  M01S02237.fsescrn +++|*         GLOBALLOCATE IS AN INTERFACE BETWEEN THE LOCATE
02518  M01S02238.fsescrn +++|*         COMMAND PROCESSING AND THE GLOBALPROMPT ROUTINE.
02519  M01S02239.fsescrn +++|*         GLOBAL SEARCHES DROP INTO A SECONDARY DISPLAY AND PROMPT.
02520  M01S02240.fsescrn +++|*         GLOBALLOCATE USES GLOBALPROMPT FOR CONTROL OVER THE
02521  M01S02241.fsescrn +++|*         DISPLAY AND USER'S REPLY, AND PERFORMS ITS OWN
02522  M01S02242.fsescrn +++|*         ANALYSIS OF REPLIES.  GLOBALLOCATE CAN DIRECT THE COMMAND
02523  M01S02243.fsescrn +++|*         DRIVER TO SHUTDOWN THE SEARCH ON USER REQUEST.
02524  M01S02244.fsescrn +++|*
02525  M01S02245.fsescrn +++|*         ENTRY  LINCTR - INDICATES LAST CALL OF OPERATION.
02526  M01S02246.fsescrn +++|*                CURRENT, CURSPLIT, CURFILE, TOPF() - WHERE WE ARE.
02527  M01S02247.fsescrn +++|*
02528  M01S02248.fsescrn +++|*         EXIT   LINCTR=LARGENUM FOR USER-REQUESTED SHUTDOWN.
02529  M01S02249.fsescrn +++|*                CURRENT - POSSIBLY MOVED.
02530  M01S02250.fsescrn +++|*
02531  M01S02251.fsescrn +++|*         MACROS GETCHAR.
02532  M01S02252.fsescrn +++|*
02533  M01S02253.fsescrn +++|*         CALLS  GLOBALPROMPT, WINDOLIN, POSZ.
02534  M01S02254.fsescrn +++|*
02535  M01S02255.fsescrn +++|*         USES   TTYLIN, SCRNPT4, SCRNPT5.
02536  M01S02256.fsescrn +++|#
02537  M01S02257.fsescrn +++|  ITEM TMP1, TMP2, TMP3;     # USE INSTANTLY     #
02538  M01S02258.fsescrn +++|
02539  M01S02259.fsescrn +++|  SCRNPT4=1;                 # INDICATE MESSAGE SELECTION  #
02540  M01S02260.fsescrn +++|  IF LINCTR EQ LARGENUM THEN SCRNPT4=2;
02541  M01S02261.fsescrn +++|  GLOBALPROMPT;
02542  M01S02262.fsescrn +++|  IF SCRNPT5 EQ 0 THEN IORET        # IF NO REPLY YET #
02543  M01S02263.fsescrn +++|
02544  M01S02264.fsescrn +++|  # EXIT IMMEDIATELY IF USER ESCAPING WITH FKEY #
02545  M01S02265.fsescrn +++|  IF ESCAPE THEN IORET
02546  M01S02266.fsescrn +++|
02547  M01S02267.fsescrn +++|  TMP1=-1;                   # SEE IF NUMERIC REPLY        #
02548  M01S02268.fsescrn +++|  FOR TMP2=0 STEP 1 UNTIL LENGTH(TTYLIN)-1 DO
02549  M01S02269.fsescrn +++|    BEGIN
02550  M01S02270.fsescrn +++|    GETCHAR(TTYLINE,TMP2,TMP3);
02551  M01S02271.fsescrn +++|    IF TMP3 GQ CDIGIT0 AND TMP3 LQ CDIGIT9 THEN
02552  M01S02272.fsescrn +++|      BEGIN
02553  M01S02273.fsescrn +++|      IF TMP1 LS 0 THEN TMP1=0;
02554  M01S02274.fsescrn +++|      TMP1=TMP1*10 + TMP3-CDIGIT0;
02555  M01S02275.fsescrn +++|      END
02556  M01S02276.fsescrn +++|    END
02557  M01S02277.fsescrn +++|
02558  M01S02278.fsescrn +++|  IF TMP1 LS 0 AND YCURSOR GR 0 AND ROWLNPTR[YCURSOR-1] NQ 0
02559  M01S02279.fsescrn +++|    THEN TMP1=ROWLNPTR[YCURSOR-1];     # IF CURSOR POINTED #
02560  M01S02280.fsescrn +++|
02561  M01S02281.fsescrn +++|  IF TMP1 GQ 0 THEN          # STOP ON SIGNIFICANT REPLY   #
02562  M01S02282.fsescrn +++|    BEGIN
02563  M01S02283.fsescrn +++|    LINCTR=LARGENUM;         # TO STOP DORANGE   #
02564  M01S02284.fsescrn +++|    TMP1=TMP1+TOPF(CURFILE);
02565  M01S02285.fsescrn +++|    WINDOLIN(TMP1,CURFILE);
02566  M01S02286.fsescrn +++|    POSZ(TMP1);
02567  M01S02287.fsescrn +++|    END
02568  M01S02288.fsescrn +++|
02569  M01S02289.fsescrn +++|  IOEND                       # OF GLOBALLOCATE   #
02570  M01S02290.fsescrn +++|
02571  M01S02291.fsescrn +++|
02572  M01S02292.fsescrn +++|PROC GLOBALCHANGE;
02573  M01S02293.fsescrn +++|  IOBEGIN(GLOBALCHANGE)
02574  M01S02294.fsescrn +++|#
02575  M01S02295.fsescrn +++|**        GLOBALCHANGE - GLOBAL CHANGE PROMPTING INTERFACE.
02576  M01S02296.fsescrn +++|*
02577  M01S02297.fsescrn +++|*         ENTRY  LINCTR - INDICATES LAST CALL OF OPERATION.
02578  M01S02298.fsescrn +++|*                CURRENT, CURSPLIT, CURFILE, TOPF() - WHERE WE ARE.
02579  M01S02299.fsescrn +++|*
02580  M01S02300.fsescrn +++|*         EXIT   LINCTR=LARGENUM FOR USER-REQUESTED SHUTDOWN.
02581  M01S02301.fsescrn +++|*                CMDLIN - POSSIBLY UNDO COMMAND.
02582  M01S02302.fsescrn +++|*
02583  M01S02303.fsescrn +++|*         MACROS GETCHAR.
02584  M01S02304.fsescrn +++|*
02585  M01S02305.fsescrn +++|*         CALLS  GLOBALPROMPT, EXCHWD, DSPLCOD, STARTCMD.
02586  M01S02306.fsescrn +++|*
02587  M01S02307.fsescrn +++|*         USES   TMPLIN, SCRNPT4, SCRNPT5.
02588  M01S02308.fsescrn +++|*
02589  M01S02309.fsescrn +++|*         NOTE   TTYLIN USED WITH RESTORATION.
02590  M01S02310.fsescrn +++|#
02591  M01S02311.fsescrn +++|
02592  M01S02312.fsescrn +++|  ITEM TMP1, TMP2, TMP3;     # USE INSTANTLY     #
02593  M01S02313.fsescrn +++|
02594  M01S02314.fsescrn +++|  IF NOT (SCREENMODE AND PROMPTING) THEN IORET   # EFFICIENT         #
02595  M01S02315.fsescrn +++|
02596  M01S02316.fsescrn +++|  SCRNPT4=3;                 # INDICATE MESSAGE SELECTION  #
02597  M01S02317.fsescrn +++|  IF LINCTR EQ LARGENUM THEN SCRNPT4=4;
02598  M01S02318.fsescrn +++|  GLOBALPROMPT;
02599  M01S02319.fsescrn +++|  IF SCRNPT5 EQ 0 THEN IORET    # LEAVE IF NO REPLY YET #
02600  M01S02320.fsescrn +++|
02601  M01S02321.fsescrn +++|  # GET OUT IF USER ESCAPING WITH FKEY #
02602  M01S02322.fsescrn +++|  IF ESCAPE THEN IORET
02603  M01S02323.fsescrn +++|
02604  M01S02324.fsescrn +++|  EXCHWD(BUFWIDP1,TTYLIN,TMPLIN);      # TTYLIN AS WAS, TMPLIN=INPUT #
02605  M01S02325.fsescrn +++|  TMP1=-1;                   # SEARCH FOR ALPHABETIC REPLY #
02606  M01S02326.fsescrn +++|  FOR TMP2=0 STEP 1 UNTIL LENGTH(TMPLIN)-1 DO
02607  M01S02327.fsescrn +++|    BEGIN
02608  M01S02328.fsescrn +++|    GETCHAR(TMPLINE,TMP2,TMP3);
02609  M01S02329.fsescrn +++|    DSPLCOD(TMP3);
02610  M01S02330.fsescrn +++|    IF TMP1 LS 0 AND TMP3 GQ CLETTERA AND TMP3 LQ CLETTERZ
02611  M01S02331.fsescrn +++|      THEN TMP1=TMP3;
02612  M01S02332.fsescrn +++|    END
02613  M01S02333.fsescrn +++|  IF TMP1 EQ "U" THEN
02614  M01S02334.fsescrn +++|    BEGIN
02615  M01S02335.fsescrn +++|    LINCTR=LARGENUM;         # TO STOP DORANGE   #
02616  M01S02336.fsescrn +++|    SETCHAR(CMDLINE,0,CLETTERU);       # CREATE UNDO COMMAND         #
02617  M01S02337.fsescrn +++|    SETCHAR(CMDLINE,1,CENDLINE);
02618  M01S02338.fsescrn +++|    STARTCMD;
02619  M01S02339.fsescrn +++|    END
02620  M01S02340.fsescrn +++|
02621  M01S02341.fsescrn +++|  IOEND                       # OF GLOBALCHANGE   #
02622  M01S02342.fsescrn +++|PAGE                         # GENERAL LINE TO SCREEN DISPLAYS       #
02623  M01S02343.fsescrn +++|
02624  M01S02344.fsescrn +++|#
02625  M01S02345.fsescrn +++|**        DEDICATED DISPLAY DRIVERS.
02626  M01S02346.fsescrn +++|*
02627  M01S02347.fsescrn +++|*         BGNDSPLAY, ENDDSPLAY, AND EOLDSPLAY PROVIDE A GENERAL
02628  M01S02348.fsescrn +++|*         MECHANISM FOR COMMAND PROCESSORS IN THE EDITOR TO
02629  M01S02349.fsescrn +++|*         OVERRIDE THE NORMAL DISPLAY AND DISPLAY SPECIALIZED
02630  M01S02350.fsescrn +++|*         INFORMATION.  AT THE CURRENT TIME, THESE ROUTINES ARE
02631  M01S02351.fsescrn +++|*         COMPILED ONLY IN THE SINGLE-USER VERSION OF THE EDITOR
02632  M01S02352.fsescrn +++|*         DUE TO THEIR LIMITED SCOPE OF NEED.
02633  M01S02353.fsescrn +++|*
02634  M01S02354.fsescrn +++|*         THE CALLER USES BGNDSPLAY TO TAKE OVER THE SCREEN,
02635  M01S02355.fsescrn +++|*         THEN USES ANY OF THE FSEFORM ROUTINES TO FORMAT EACH
02636  M01S02356.fsescrn +++|*         LINE OF TEXT, CALLING EOLDSPLAY TO ADVANCE THE CURSOR
02637  M01S02357.fsescrn +++|*         BETWEEN LINES.  THE DISPLAY IS COMPLETED BY ENDDSPLAY.
02638  M01S02358.fsescrn +++|*         NOTE THAT EOLDSPLAY INCLUDES LOGIC TO TURN PAGES.
02639  M01S02359.fsescrn +++|#
02640  M01S02360.fsescrn +++|
02641  M01S02361.fsescrn +++|CONTROL IFEQ SINGLE,1;
02642  M01S02362.fsescrn +++|
02643  M01S02363.fsescrn +++|  PROC BGNDSPLAY;
02644  M01S02364.fsescrn +++|# TITLE BGNDSPLAY - INTIALIZE DEDICATED DISPLAY FORMAT. #
02645  M01S02365.fsescrn +++|
02646  M01S02366.fsescrn +++|    BEGIN  # BGNDSPLAY #
02647  M01S02367.fsescrn +++|
02648  M01S02368.fsescrn +++|#
02649  M01S02369.fsescrn +++|**        BGNDSPLAY - INITIALIZE DEDICATED DISPLAY FORMAT.
02650  M01S02370.fsescrn +++|*
02651  M01S02371.fsescrn +++|*         PROC BGNDSPLAY
02652  M01S02372.fsescrn +++|*
02653  M01S02373.fsescrn +++|*         ENTRY  SCREENMODE - ON FOR NON-TRIVIAL OPERATION.
02654  M01S02374.fsescrn +++|*
02655  M01S02375.fsescrn +++|*         EXIT   SCRNPT1 - INITIALIZED AS PAGE COUNTER.
02656  M01S02376.fsescrn +++|*                SCREEN CLEARED, CURSOR POSITIONED.
02657  M01S02377.fsescrn +++|*                TITLE1LIN, TITLE2LIN - CLEARED.
02658  M01S02378.fsescrn +++|*
02659  M01S02379.fsescrn +++|*         CALLS  PAINTNONE, VDTCLS, VDTPOS.
02660  M01S02380.fsescrn +++|#
02661  M01S02381.fsescrn +++|
02662  M01S02382.fsescrn +++|    IF SCREENMODE THEN
02663  M01S02383.fsescrn +++|      BEGIN
02664  M01S02384.fsescrn +++|      IF SPLITFILE[2] NQ 0 THEN
02665  M01S02385.fsescrn +++|        BEGIN                        # IF IN SPLIT SCREEN MODE #
02666  M01S02386.fsescrn +++|        IF CURSPLIT EQ 1 THEN
02667  M01S02387.fsescrn +++|          BEGIN                      # IF FIRST SPLIT IS CURRENT #
02668  M01S02388.fsescrn +++|          CURSPLIT = 2;              # CLEAR FOR OTHER SPLIT #
02669  M01S02389.fsescrn +++|          PAINTNONE;
02670  M01S02390.fsescrn +++|          CURSPLIT = 1;              # RESET #
02671  M01S02391.fsescrn +++|          END
02672  M01S02392.fsescrn +++|        ELSE
02673  M01S02393.fsescrn +++|          BEGIN                      # CURRENT SPLIT IN THE SECOND #
02674  M01S02394.fsescrn +++|          CURSPLIT = 1;              # CLEAR FOR OTHER SPLIT #
02675  M01S02395.fsescrn +++|          PAINTNONE;
02676  M01S02396.fsescrn +++|          CURSPLIT = 2;              # RESET #
02677  M01S02397.fsescrn +++|          END
02678  M01S02398.fsescrn +++|        END
02679  M01S02399.fsescrn +++|      PAINTNONE;
02680  M01S02400.fsescrn +++|      VDTCLS;
02681  M01S02401.fsescrn +++|      TITLE1LINE[0]=NULLIN;
02682  M01S02402.fsescrn +++|      TITLE2LINE[0]=NULLIN;
02683  M01S02403.fsescrn +++|      SCRNPT1=TITLEROW[1];
02684  M01S02404.fsescrn +++|      VDTPOS(0,SCRNPT1);
02685  M01S02405.fsescrn +++|      END
02686  M01S02406.fsescrn +++|
02687  M01S02407.fsescrn +++|    END  # BGNDSPLAY #
02688  M01S02408.fsescrn +++|
02689  M01S02409.fsescrn +++|
02690  M01S02410.fsescrn +++|  PROC ENDDSPLAY;
02691  M01S02411.fsescrn +++|    BEGIN
02692  M01S02412.fsescrn +++|#
02693  M01S02413.fsescrn +++|**        ENDDSPLAY - TERMINATE SPECIAL DISPLAY SEQUENCE.
02694  M01S02414.fsescrn +++|*
02695  M01S02415.fsescrn +++|*         EXIT   ROWPAINT[ALL] - TRUE.
02696  M01S02416.fsescrn +++|*
02697  M01S02417.fsescrn +++|*         CALLS  EOLDSPLAY, PAINTALL.
02698  M01S02418.fsescrn +++|*
02699  M01S02419.fsescrn +++|*         USES   SCRNPT1.
02700  M01S02420.fsescrn +++|#
02701  M01S02421.fsescrn +++|    SCRNPT1=VTYMAX;
02702  M01S02422.fsescrn +++|    EOLDSPLAY;
02703  M01S02423.fsescrn +++|    PAINTALL;
02704  M01S02424.fsescrn +++|    END                       # OF ENDDSPLAY      #
02705  M01S02425.fsescrn +++|
02706  M01S02426.fsescrn +++|
02707  M01S02427.fsescrn +++|  PROC EOLDSPLAY;
02708  M01S02428.fsescrn +++|    BEGIN
02709  M01S02429.fsescrn +++|#
02710  M01S02430.fsescrn +++|**        EOLDSPLAY - LINE BY LINE CONTROL FOR SPECIAL DISPLAYS.
02711  M01S02431.fsescrn +++|*
02712  M01S02432.fsescrn +++|*         ENTRY  SCREENMODE - TRUE FOR NON-TRIVIAL OPERATION.
02713  M01S02433.fsescrn +++|*                SCRNPT1 - AS INITIALIZED BY BGNDSPLAY OR INCREMENTED
02714  M01S02434.fsescrn +++|*                    IN LAST CALL TO EOLDSPLAY.
02715  M01S02435.fsescrn +++|*
02716  M01S02436.fsescrn +++|*         EXIT   SCRNPT1 - INCREMENTED OR RE-INITIALIZED.
02717  M01S02437.fsescrn +++|*                CURSOR MOVED TO NEXT LINE.
02718  M01S02438.fsescrn +++|*
02719  M01S02439.fsescrn +++|*         CALLS  ASKUSER, BGNDSPLAY, VDTPOS, TTBRK.
02720  M01S02440.fsescrn +++|*
02721  M01S02441.fsescrn +++|*         USES   SCRNPT2.
02722  M01S02442.fsescrn +++|#
02723  M01S02443.fsescrn +++|    IF SCREENMODE THEN
02724  M01S02444.fsescrn +++|      BEGIN
02725  M01S02445.fsescrn +++|      SCRNPT1=SCRNPT1+1;
02726  M01S02446.fsescrn +++|      SCRNPT2=USRNUMLIN;
02727  M01S02447.fsescrn +++|      IF SCRNPT2 EQ COMMANDROW THEN SCRNPT2=SCRNPT2-1;
02728  M01S02448.fsescrn +++|      IF SCRNPT1 GR SCRNPT2 THEN
02729  M01S02449.fsescrn +++|        BEGIN
02730  M01S02450.fsescrn +++|        ASKUSER("PRESS NEXT TO CONTINUE$",0);
02731  M01S02451.fsescrn +++|        BGNDSPLAY;
02732  M01S02452.fsescrn +++|        END
02733  M01S02453.fsescrn +++|      ELSE VDTPOS(0,SCRNPT1);
02734  M01S02454.fsescrn +++|      END
02735  M01S02455.fsescrn +++|    ELSE TTBRK;
02736  M01S02456.fsescrn +++|    END                       # OF EOLDSPLAY      #
02737  M01S02457.fsescrn +++|
02738  M01S02458.fsescrn +++|CONTROL FI;
02739  M01S02459.fsescrn +++|PAGE                         # SCREEN SETUP/MANIPULATION   #
02740  M01S02460.fsescrn +++|
02741  M01S02461.fsescrn +++|
02742  M01S02462.fsescrn +++|PROC PAINTALL;
02743  M01S02463.fsescrn +++|  BEGIN
02744  M01S02464.fsescrn +++|#
02745  M01S02465.fsescrn +++|**        PAINTALL - SET PAINT BITS ON ALL LINES.
02746  M01S02466.fsescrn +++|*
02747  M01S02467.fsescrn +++|*         EXIT   ROWPAINT[ALL] - TRUE.
02748  M01S02468.fsescrn +++|*
02749  M01S02469.fsescrn +++|*         CALLS  PAINTREST.
02750  M01S02470.fsescrn +++|#
02751  M01S02471.fsescrn +++|  PAINTREST(0);
02752  M01S02472.fsescrn +++|  END                        # OF PAINTALL     #
02753  M01S02473.fsescrn +++|
02754  M01S02474.fsescrn +++|
02755  M01S02475.fsescrn +++|PROC PAINTNONE;
02756  M01S02476.fsescrn +++|  BEGIN
02757  M01S02477.fsescrn +++|#
02758  M01S02478.fsescrn +++|**        PAINTNONE - CLEAR PAINT BITS FOR ONE SPLIT.
02759  M01S02479.fsescrn +++|*
02760  M01S02480.fsescrn +++|*         ENTRY  CURSPLIT - WHICH SPLIT TO SUPPRESS PAINT.
02761  M01S02481.fsescrn +++|*                TITLEROW[1-2], NUMROWS[1-2] - SETUP.
02762  M01S02482.fsescrn +++|*
02763  M01S02483.fsescrn +++|*         EXIT   ROWPAINT[ALL IN SPLIT] - FALSE.
02764  M01S02484.fsescrn +++|*                ROWORIG[ALL IN SPLIT] - NOMINAL.
02765  M01S02485.fsescrn +++|#
02766  M01S02486.fsescrn +++|  FOR SCRNPT1=TITLEROW[CURSPLIT] STEP 1 UNTIL
02767  M01S02487.fsescrn +++|    TITLEROW[CURSPLIT]+NUMROWS[CURSPLIT] DO
02768  M01S02488.fsescrn +++|    BEGIN                     # SUPPRESS PAINTSCREEN OUTPUT #
02769  M01S02489.fsescrn +++|    ROWPAINT[SCRNPT1]=FALSE;
02770  M01S02490.fsescrn +++|    ROWORIG[SCRNPT1]=SCRNPT1;
02771  M01S02491.fsescrn +++|    END
02772  M01S02492.fsescrn +++|  END                         # OF PAINTNONE      #
02773  M01S02493.fsescrn +++|
02774  M01S02494.fsescrn +++|
02775  M01S02495.fsescrn +++|PROC PAINTREST(PARM);
02776  M01S02496.fsescrn +++|# TITLE PAINTREST - SET PAINT BITS FOR REST OF SCREEN. #
02777  M01S02497.fsescrn +++|
02778  M01S02498.fsescrn +++|  BEGIN  # PAINTREST #
02779  M01S02499.fsescrn +++|
02780  M01S02500.fsescrn +++|#
02781  M01S02501.fsescrn +++|**        PAINTREST - SET PAINT BITS FOR REST OF SCREEN.
02782  M01S02502.fsescrn +++|*
02783  M01S02503.fsescrn +++|*         PROC PAINTREST(PARM)
02784  M01S02504.fsescrn +++|*
02785  M01S02505.fsescrn +++|*         ENTRY  PARM - FIRST LINE TO SET BIT FOR.
02786  M01S02506.fsescrn +++|*                VTYMAX - LAST LINE.
02787  M01S02507.fsescrn +++|*
02788  M01S02508.fsescrn +++|*         EXIT   ROWPAINT[THOSE] - TRUE.
02789  M01S02509.fsescrn +++|#
02790  M01S02510.fsescrn +++|
02791  M01S02511.fsescrn +++|  ITEM PARM      I;                  # FIRST LINE #
02792  M01S02512.fsescrn +++|  ITEM TMP1      I;                  # TEMPORARY STORAGE #
02793  M01S02513.fsescrn +++|
02794  M01S02514.fsescrn +++|  FOR TMP1=PARM STEP 1 UNTIL VTYMAX DO
02795  M01S02515.fsescrn +++|    BEGIN
02796  M01S02516.fsescrn +++|    ROWPAINT[TMP1]=TRUE;
02797  M01S02517.fsescrn +++|    IF ROWTYPE[TMP1] EQ ROWST"TITLE" THEN
02798  M01S02518.fsescrn +++|      BEGIN
02799  M01S02519.fsescrn +++|      IF ROWSPLIT[TMP1] EQ 1 THEN TITLE1LINE[0]=NULLIN;
02800  M01S02520.fsescrn +++|      ELSE TITLE2LINE[0]=NULLIN;
02801  M01S02521.fsescrn +++|      END
02802  M01S02522.fsescrn +++|    END
02803  M01S02523.fsescrn +++|
02804  M01S02524.fsescrn +++|  END  # PAINTREST #
02805  M01S02525.fsescrn +++|
02806  M01S02526.fsescrn +++|
02807  M01S02527.fsescrn +++|PROC PAINTSPLIT;
02808  M01S02528.fsescrn +++|# TITLE PAINTSPLIT - SET PAINT BITS ALL LINES ONE SPLIT. #
02809  M01S02529.fsescrn +++|
02810  M01S02530.fsescrn +++|  BEGIN  # PAINTSPLIT #
02811  M01S02531.fsescrn +++|
02812  M01S02532.fsescrn +++|#
02813  M01S02533.fsescrn +++|**        PAINTSPLIT - SET PAINT BITS ALL LINES ONE SPLIT.
02814  M01S02534.fsescrn +++|*
02815  M01S02535.fsescrn +++|*         PROC PAINTSPLIT
02816  M01S02536.fsescrn +++|*
02817  M01S02537.fsescrn +++|*         ENTRY  CURSPLIT - WHICH SPLIT TO PAINT.
02818  M01S02538.fsescrn +++|*                TITLEROW[1-2], NUMROWS[1-2] - SETUP.
02819  M01S02539.fsescrn +++|*
02820  M01S02540.fsescrn +++|*         EXIT   ROWPAINT[ALL IN SPLIT] - TRUE.
02821  M01S02541.fsescrn +++|*
02822  M01S02542.fsescrn +++|*         CALLS  PAINTONESPLT.
02823  M01S02543.fsescrn +++|#
02824  M01S02544.fsescrn +++|
02825  M01S02545.fsescrn +++|  PAINTONESPLT(CURSPLIT);
02826  M01S02546.fsescrn +++|
02827  M01S02547.fsescrn +++|  END  # PAINTSPLIT #
02828  M01S02548.fsescrn +++|
02829  M01S02549.fsescrn +++|
02830  M01S02550.fsescrn +++|PROC PAINTONESPLT(SPLIT);
02831  M01S02551.fsescrn +++|# TITLE PAINTONESPLT - SET PAINT BITS ALL LINES ONE SPLIT. #
02832  M01S02552.fsescrn +++|
02833  M01S02553.fsescrn +++|  BEGIN  # PAINTONESPLT #
02834  M01S02554.fsescrn +++|
02835  M01S02555.fsescrn +++|#
02836  M01S02556.fsescrn +++|**        PAINTONESPLT - SET PAINT BITS ALL LINES ONE SPLIT.
02837  M01S02557.fsescrn +++|*
02838  M01S02558.fsescrn +++|*         PROC PAINTONESPLT(SPLIT)
02839  M01S02559.fsescrn +++|*
02840  M01S02560.fsescrn +++|*         ENTRY  SPLIT - WHICH SPLIT TO PAINT.
02841  M01S02561.fsescrn +++|*                TITLEROW[1-2], NUMROWS[1-2] - SETUP.
02842  M01S02562.fsescrn +++|*
02843  M01S02563.fsescrn +++|*         EXIT   ROWPAINT[ALL IN SPLIT] - TRUE.
02844  M01S02564.fsescrn +++|#
02845  M01S02565.fsescrn +++|
02846  M01S02566.fsescrn +++|  ITEM SPLIT;                        # WHICH SPLIT TO PAINT #
02847  M01S02567.fsescrn +++|  ITEM TMP1;                         # TEMPORARY STORAGE #
02848  M01S02568.fsescrn +++|
02849  M01S02569.fsescrn +++|  FOR TMP1=TITLEROW[SPLIT] STEP 1 UNTIL
02850  M01S02570.fsescrn +++|    TITLEROW[SPLIT]+NUMROWS[SPLIT] DO ROWPAINT[TMP1]=TRUE;
02851  M01S02571.fsescrn +++|
02852  M01S02572.fsescrn +++|  END  # PAINTONESPLT #
02853  M01S02573.fsescrn +++|
02854  M01S02574.fsescrn +++|
02855  M01S02575.fsescrn +++|PROC SETUPSCREEN(I,J,K);
02856  M01S02576.fsescrn +++|  BEGIN
02857  M01S02577.fsescrn +++|#
02858  M01S02578.fsescrn +++|**        SETUPSCREEN - INITIALIZE ALL SCREEN FORMAT CONTROLS.
02859  M01S02579.fsescrn +++|*
02860  M01S02580.fsescrn +++|*         ENTRY  I - FILE BRACKET NUMBER FOR SPLIT 1.
02861  M01S02581.fsescrn +++|*                J - FILE BRACKET NUMBER FOR SPLIT 2.
02862  M01S02582.fsescrn +++|*                K - NUMBER OF DATA LINES IN BOTTOM SPLIT.
02863  M01S02583.fsescrn +++|*                TABVTHOMEU[0] - CONTROLS SELECTION OF COMMANDROW.
02864  M01S02584.fsescrn +++|*                FKEYNUMROW - WHETHER TO INCLUDE FUNCTION KEY DISPLAY.
02865  M01S02585.fsescrn +++|*
02866  M01S02586.fsescrn +++|*         EXIT   COMMANDROW, FKEYROW - SETUP.
02867  M01S02587.fsescrn +++|*                TITLEROW[1-2], NUMROWS[1-2] - SETUP.
02868  M01S02588.fsescrn +++|*                TOPS(1-2), BOTS(1-2) - SETUP.
02869  M01S02589.fsescrn +++|*                ALL ROW CONTROLS SETUP.
02870  M01S02590.fsescrn +++|*
02871  M01S02591.fsescrn +++|*         CALLS  SETTOPBOTS, SETROWTYPE.
02872  M01S00018.ns2700  +++|*
02873  M01S00019.ns2700  +++|*         USES   SCRNPT1, SCRNPT2.
02874  M01S02592.fsescrn +++|#
02875  M01S02593.fsescrn +++|  ITEM I,J,K;
02876  M01S02594.fsescrn +++|  ITEM NKEYS, NTITLES;
02877  M01S02595.fsescrn +++|
02878  M01S02596.fsescrn +++|
02879  M01S02597.fsescrn +++|  PROC SETROWSPLIT;
02880  M01S02598.fsescrn +++|# TITLE SETROWSPLIT - INITIALIZE ROWSPLIT VECTOR. #
02881  M01S02599.fsescrn +++|
02882  M01S02600.fsescrn +++|    BEGIN  # SETROWSPLIT #
02883  M01S02601.fsescrn +++|
02884  M01S02602.fsescrn +++|#
02885  M01S02603.fsescrn +++|**        SETROWSPLIT - INITIALIZE ROWSPLIT VECTOR.
02886  M01S02604.fsescrn +++|*
02887  M01S02605.fsescrn +++|*         PROC SETROWSPLIT
02888  M01S02606.fsescrn +++|*
02889  M01S02607.fsescrn +++|*         ENTRY  CURSPLIT - WHICH SPLIT.
02890  M01S02608.fsescrn +++|*                TITLEROW[1-2], NUMROWS[1-2] - SETUP.
02891  M01S02609.fsescrn +++|*
02892  M01S02610.fsescrn +++|*         EXIT   ROWTYPE[ALL IN SPLIT] - INITIALIZED.
02893  M01S02611.fsescrn +++|*                ROWSPLIT[ALL IN SPLIT] - INITIALIZED.
02894  M01S02612.fsescrn +++|*
02895  M01S02613.fsescrn +++|*         CALLS  PAINTSPLIT.
02896  M01S02614.fsescrn +++|*
02897  M01S02615.fsescrn +++|*         USES   SCRNPT1, SCRNPT5.
02898  M01S02616.fsescrn +++|#
02899  M01S02617.fsescrn +++|
02900  M01S02618.fsescrn +++|    IF ROWTYPE[TITLEROW[CURSPLIT]] NQ ROWST"TITLE"
02901  M01S02619.fsescrn +++|      OR ROWSPLIT[TITLEROW[CURSPLIT]] NQ CURSPLIT THEN
02902  M01S02620.fsescrn +++|      BEGIN
02903  M01S02621.fsescrn +++|      PAINTSPLIT;
02904  M01S02622.fsescrn +++|      IF CURSPLIT EQ 1 THEN TITLE1LINE[0]=NULLIN;
02905  M01S02623.fsescrn +++|      ELSE TITLE2LINE[0]=NULLIN;
02906  M01S02624.fsescrn +++|      END
02907  M01S02625.fsescrn +++|    ROWTYPE[TITLEROW[CURSPLIT]]=ROWST"TITLE";
02908  M01S02626.fsescrn +++|    ROWSPLIT[TITLEROW[CURSPLIT]]=CURSPLIT;
02909  M01S02627.fsescrn +++|    FOR SCRNPT1=1 STEP 1 UNTIL NUMROWS[CURSPLIT] DO
02910  M01S02628.fsescrn +++|      BEGIN
02911  M01S02629.fsescrn +++|      SCRNPT5=SCRNPT1+TITLEROW[CURSPLIT];
02912  M01S02630.fsescrn +++|      IF ROWTYPE[SCRNPT5] NQ ROWST"TEXT"
02913  M01S02631.fsescrn +++|        OR ROWSPLIT[SCRNPT5] NQ CURSPLIT THEN ROWPAINT[SCRNPT5]=TRUE;
02914  M01S02632.fsescrn +++|      ROWTYPE[SCRNPT5]=ROWST"TEXT";
02915  M01S02633.fsescrn +++|      ROWSPLIT[SCRNPT5]=CURSPLIT;
02916  M01S02634.fsescrn +++|      END
02917  M01S02635.fsescrn +++|
02918  M01S02636.fsescrn +++|    END  # SETROWSPLIT #
02919  M01S02637.fsescrn +++|
02920  M01S02638.fsescrn +++|
02921  M01S02639.fsescrn +++|  PROC SETROWTYPE;
02922  M01S02640.fsescrn +++|    BEGIN
02923  M01S02641.fsescrn +++|#
02924  M01S02642.fsescrn +++|**        SETROWTYPE - CLASSIFY LINES BY TYPE OF DISPLAY.
02925  M01S02643.fsescrn +++|*
02926  M01S02644.fsescrn +++|*         ENTRY  COMMANDROW, RESPONSEROW, TITLEROW[1-2],
02927  M01S02645.fsescrn +++|*                FKEYROW, SPLITFILE[1-2] - INITIALIZED.
02928  M01S02646.fsescrn +++|*                VTYMAX - NUMBER OF LINES ON SCREEN.
02929  M01S02647.fsescrn +++|*
02930  M01S02648.fsescrn +++|*         EXIT   ROWTYPE[ALL] - INITIALIZED.
02931  M01S02649.fsescrn +++|*                ROWSPLIT[ALL] - INITIALIZED.
02932  M01S02650.fsescrn +++|*                CURSPLIT - INITIALIZED.
02933  M01S02651.fsescrn +++|*
02934  M01S02652.fsescrn +++|*         CALLS  SETROWSPLIT.
02935  M01S02653.fsescrn +++|*
02936  M01S02654.fsescrn +++|*         USES   SCRNPT1, SCRNPT2, SCRNPT3.
02937  M01S02655.fsescrn +++|#
02938  M01S02656.fsescrn +++|    ROWTYPE[COMMANDROW]=ROWST"COMMAND";
02939  M01S02657.fsescrn +++|    ROWSPLIT[COMMANDROW]=1;
02940  M01S02658.fsescrn +++|    ROWTYPE[RESPONSEROW] = ROWST"RESPONSE";
02941  M01S02659.fsescrn +++|
02942  M01S02660.fsescrn +++|    CURSPLIT=1;
02943  M01S02661.fsescrn +++|    SETROWSPLIT;
02944  M01S02662.fsescrn +++|    IF SPLITFILE[2] NQ 0 THEN
02945  M01S02663.fsescrn +++|      BEGIN
02946  M01S02664.fsescrn +++|      CURSPLIT=2;
02947  M01S02665.fsescrn +++|      SETROWSPLIT;
02948  M01S02666.fsescrn +++|      END
02949  M01S02667.fsescrn +++|
Line S02668 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2675
Seq #  *Modification Id* Act 
----------------------------+
02950  M02S02668.ns2675  ---|    SCRNPT1=-1;
Line S02669 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2675
Seq #  *Modification Id* Act 
----------------------------+
02951  M02S02669.ns2675  ---|    IF FKEYNUMROW EQ 1 THEN SCRNPT1=1;
Line S02670 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2675
Seq #  *Modification Id* Act 
----------------------------+
02952  M02S02670.ns2675  ---|    IF FKEYNUMROW EQ 2 THEN SCRNPT1=4;
02953  M01S00023.ns2675  +++|    IF FKEYNUMROW EQ 0 THEN SCRNPT1=-1;
Line S00024 Modification History
M01 (Added by) ns2675
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
02954  M02S00024.ns2700  ---|    ELSE SCRNPT1=1+(FKEYNUMROW-1)*3;
02955  M01S00020.ns2700  +++|    ELSE SCRNPT1=FKEYNUMROW*(2+SHIFTFKEY)-2;
02956  M01S02671.fsescrn +++|    FOR SCRNPT2=0 STEP 1 UNTIL SCRNPT1 DO
02957  M01S02672.fsescrn +++|      BEGIN
02958  M01S02673.fsescrn +++|      IF ROWTYPE[FKEYROW+SCRNPT2] NQ ROWST"LABEL" THEN
02959  M01S02674.fsescrn +++|        BEGIN
02960  M01S02675.fsescrn +++|        ROWPAINT[FKEYROW+SCRNPT2]=TRUE;
02961  M01S02676.fsescrn +++|        ROWTYPE[FKEYROW+SCRNPT2]=ROWST"LABEL";
02962  M01S02677.fsescrn +++|        END
02963  M01S02678.fsescrn +++|      END
02964  M01S02679.fsescrn +++|    SCRNPT1=FKEYROW+SCRNPT1+1;
02965  M01S02680.fsescrn +++|    SCRNPT3=VTYMAX;
02966  M01S02681.fsescrn +++|    IF COMMANDROW EQ VTYMAX THEN SCRNPT3=VTYMAX-1;
02967  M01S02682.fsescrn +++|    FOR SCRNPT2=SCRNPT1 STEP 1 UNTIL SCRNPT3 DO
02968  M01S02683.fsescrn +++|      BEGIN
02969  M01S02684.fsescrn +++|      # BLANK OUT BOTTOM OF SCREEN IF USER REQUESTED SHORT SCREEN #
02970  M01S02685.fsescrn +++|      IF ROWTYPE[SCRNPT2] NQ ROWST"EMPTY" THEN ROWPAINT[SCRNPT2]=TRUE;
02971  M01S02686.fsescrn +++|      ROWTYPE[SCRNPT2]=ROWST"EMPTY";
02972  M01S02687.fsescrn +++|      END
02973  M01S02688.fsescrn +++|
02974  M01S02689.fsescrn +++|    END                              # OF SETROWTYPE #
02975  M01S02690.fsescrn +++|
02976  M01S02691.fsescrn +++|
02977  M01S02692.fsescrn +++|  # ACTUAL SETUPSCREEN MAIN CODE STARTS HERE #
02978  M01S02693.fsescrn +++|
02979  M01S02694.fsescrn +++|  IF NOT SCREENMODE THEN RETURN;
02980  M01S02695.fsescrn +++|
02981  M01S02696.fsescrn +++|  IF TABVTHOMEU[0] THEN
02982  M01S02697.fsescrn +++|    BEGIN
02983  M01S02698.fsescrn +++|    COMMANDROW=0;
02984  M01S02699.fsescrn +++|    RESPONSEROW=1;
02985  M01S02700.fsescrn +++|    TITLEROW[1]=2;
02986  M01S02701.fsescrn +++|    END
02987  M01S02702.fsescrn +++|  ELSE
02988  M01S02703.fsescrn +++|    BEGIN
02989  M01S02704.fsescrn +++|    COMMANDROW=VTYMAX;
02990  M01S02705.fsescrn +++|    RESPONSEROW = VTYMAX-1;
02991  M01S02706.fsescrn +++|    TITLEROW[1]=0;
02992  M01S02707.fsescrn +++|    END
02993  M01S02708.fsescrn +++|
02994  M01S02709.fsescrn +++|  SPLITFILE[1]=I;
02995  M01S02710.fsescrn +++|  SPLITFILE[2]=J;
02996  M01S02711.fsescrn +++|
Line S02712 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2675
Seq #  *Modification Id* Act 
----------------------------+
02997  M02S02712.ns2675  ---|  NKEYS=FKEYNUMROW*2;
Line S02713 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2675
Seq #  *Modification Id* Act 
----------------------------+
02998  M02S02713.ns2675  ---|  IF NKEYS EQ 4 THEN NKEYS=5;
Line S02714 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2675
Seq #  *Modification Id* Act 
----------------------------+
02999  M02S02714.ns2675  ---|    FKEYROW = USRNUMLIN + TITLEROW[1] - (NKEYS + 1);
Line S00025 Modification History
M01 (Added by) ns2675
M02 (Updated by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
03000  M02S00025.ns2700  ---|  NKEYS=MAX(0,FKEYNUMROW*3-1);
Line S00021 Modification History
M01 (Added by) ns2700
M02 (Updated by) ns2718
Seq #  *Modification Id* Act 
----------------------------+
03001  M02S00021.ns2718  ---|  SHIFTFKEY = 0;
03002  M01S00001.ns2718  +++|  SFKEYDEFS = 0;
03003  M01S00022.ns2700  +++|  SCRNPT1 = 1;
03004  M01S00023.ns2700  +++|  FOR SCRNPT2 = 1 STEP 1 UNTIL POSFKEYS DO
03005  M01S00024.ns2700  +++|    BEGIN
03006  M01S00025.ns2700  +++|    IF (FKEYNAME[SCRNPT2] NQ " ") OR
03007  M01S00026.ns2700  +++|       (FKEYNAME[-SCRNPT2] NQ " ") THEN
03008  M01S00027.ns2700  +++|      BEGIN                          # IF FUNCTION KEY DEFINED #
03009  M01S00028.ns2700  +++|      FKEYNUMS[SCRNPT1] = SCRNPT2;
03010  M01S00029.ns2700  +++|      SCRNPT1 = SCRNPT1 + 1;
Line S00030 Modification History
M01 (Added by) ns2700
M02 (Updated by) ns2718
Seq #  *Modification Id* Act 
----------------------------+
03011  M02S00030.ns2718  ---|      IF FKEYNAME[-SCRNPT2] NQ " " THEN SHIFTFKEY = 1;
03012  M01S00002.ns2718  +++|      IF FKEYNAME[-SCRNPT2] NQ " " THEN SFKEYDEFS = 1;
03013  M01S00031.ns2700  +++|      END
03014  M01S00032.ns2700  +++|    END
03015  M01S00033.ns2700  +++|  FOR SCRNPT1 = SCRNPT1 STEP 1 UNTIL POSFKEYS DO
03016  M01S00034.ns2700  +++|    FKEYNUMS[SCRNPT1] = 0;
03017  M01S00003.ns2718  +++|  SHIFTFKEY = SFKEYDEFS LAN SFKEYSHOW;
03018  M01S00035.ns2700  +++|  NKEYS=MAX(0,FKEYNUMROW*(2+SHIFTFKEY)-1);
03019  M01S00026.ns2675  +++|  FKEYROW = USRNUMLIN + TITLEROW[1] - (NKEYS + 1);
03020  M01S02715.fsescrn +++|
03021  M01S02716.fsescrn +++|  NUMROWS[1]=0;
03022  M01S02717.fsescrn +++|  IF K LS 0 THEN NUMROWS[2]=(USRNUMLIN-2-NKEYS)/2;
03023  M01S02718.fsescrn +++|  ELSE NUMROWS[2]=MIN(K,(USRNUMLIN-2-NKEYS));
03024  M01S02719.fsescrn +++|
03025  M01S02720.fsescrn +++|  IF J EQ 0 THEN NTITLES=1;
03026  M01S02721.fsescrn +++|  ELSE NTITLES=2;
03027  M01S02722.fsescrn +++|
03028  M01S02723.fsescrn +++|  IF I NQ 0 THEN
03029  M01S02724.fsescrn +++|    BEGIN
03030  M01S02725.fsescrn +++|    NUMROWS[1]=USRNUMLIN-NKEYS-NTITLES-NUMROWS[2]-1;
03031  M01S02726.fsescrn +++|    SETTOPBOTS(1);
03032  M01S02727.fsescrn +++|    END
03033  M01S02728.fsescrn +++|  IF J NQ 0 THEN
03034  M01S02729.fsescrn +++|    BEGIN
03035  M01S02730.fsescrn +++|    TITLEROW[2]=USRNUMLIN-NKEYS-NUMROWS[2]-2+TITLEROW[1];
03036  M01S02731.fsescrn +++|    SETTOPBOTS(2);
03037  M01S02732.fsescrn +++|    END
03038  M01S02733.fsescrn +++|  ELSE TITLEROW[2]=TITLEROW[1]+NUMROWS[1];
03039  M01S02734.fsescrn +++|  SETROWTYPE;
03040  M01S02735.fsescrn +++|  IF TABLOCKMDE[0] OR TABATTRCHR[0] THEN
03041  M01S02736.fsescrn +++|    BEGIN                            # IF ATTRIBUTE TAKES A POSITION #
03042  M01S02737.fsescrn +++|    IF TABLOCKMDE[0] THEN ATTCOUNT = 1;
03043  M01S02738.fsescrn +++|    FKEYSPC1 = "$";
03044  M01S02739.fsescrn +++|    FKEYSPC2 = "  $";
03045  M01S02740.fsescrn +++|    END
03046  M01S02741.fsescrn +++|  ELSE
03047  M01S02742.fsescrn +++|    BEGIN                            # CHARACTER MODE TERMINAL #
03048  M01S02743.fsescrn +++|    ATTCOUNT = 0;                    # NO ATTRIBUTE BYTE #
03049  M01S02744.fsescrn +++|    FKEYSPC1 = " $";
03050  M01S02745.fsescrn +++|    FKEYSPC2 = "   $";
03051  M01S02746.fsescrn +++|    END
03052  M01S02747.fsescrn +++|  END                            #  OF SETUPSCREEN  #
03053  M01S02748.fsescrn +++|
03054  M01S02749.fsescrn +++|CONTROL IFEQ SINGLE,1;
03055  M01S02750.fsescrn +++|  PROC CLEARSCREEN;
03056  M01S02751.fsescrn +++|# TITLE CLEARSCREEN - GET BACK TO LINE MODE. #
03057  M01S02752.fsescrn +++|
03058  M01S02753.fsescrn +++|    BEGIN  # CLEARSCREEN #
03059  M01S02754.fsescrn +++|
03060  M01S02755.fsescrn +++|#
03061  M01S02756.fsescrn +++|**        CLEARSCREEN - GET BACK TO LINE MODE.
03062  M01S02757.fsescrn +++|*
03063  M01S02758.fsescrn +++|*         EXIT   SCREEN CLEARED.
03064  M01S02759.fsescrn +++|*                VIRTERM SHUT DOWN VIA VDTSTM ROUTINE.
03065  M01S02760.fsescrn +++|*                ALL PAINT BITS TRUE.
03066  M01S02761.fsescrn +++|*
03067  M01S02762.fsescrn +++|*         CALLS  PAINTALL, VDTCLS, VDTSTM.
03068  M01S02763.fsescrn +++|*
03069  M01S02764.fsescrn +++|*         USES   SCRNPT1.
03070  M01S02765.fsescrn +++|#
03071  M01S02766.fsescrn +++|
03072  M01S02767.fsescrn +++|    IF SCREENMODE THEN
03073  M01S02768.fsescrn +++|      BEGIN
03074  M01S02769.fsescrn +++|      VDTCLS;
03075  M01S02770.fsescrn +++|      PAINTALL;
03076  M01S02771.fsescrn +++|      VDTSTM(0,SCRNPT1);             # SET LINE MODE #
03077  M01S02772.fsescrn +++|      ATTCOUNT = 0;                  # CLEAR ATTRIBUTE BYTE COUNT #
03078  M01S02773.fsescrn +++|      END
03079  M01S02774.fsescrn +++|
03080  M01S02775.fsescrn +++|    END  # CLEARSCREEN #
03081  M01S02776.fsescrn +++|CONTROL FI;
03082  M01S02777.fsescrn +++|PAGE                      # EDITOR/WORKIO/SCREEN INTERFACE #
03083  M01S02778.fsescrn +++|
03084  M01S02779.fsescrn +++|
03085  M01S02780.fsescrn +++|PROC SETTOPBOTS(SPLIT);
03086  M01S02781.fsescrn +++|# TITLE SETTOPBOTS - FORCE TOPS AND BOTS TO BRACKET CURRENT. #
03087  M01S02782.fsescrn +++|
03088  M01S02783.fsescrn +++|  BEGIN  # SETTOPBOTS #
03089  M01S02784.fsescrn +++|
03090  M01S02785.fsescrn +++|#
03091  M01S02786.fsescrn +++|**        SETTOPBOTS - FORCE TOPS AND BOTS TO BRACKET CURRENT.
03092  M01S02787.fsescrn +++|*
03093  M01S02788.fsescrn +++|*         SETTOPBOTS ASSURES THAT TOPS AND BOTS ARE WITHIN LEGAL
03094  M01S02789.fsescrn +++|*         FILE BOUNDARIES AND THAT THEY BRACKET THE CURRENT LINE.
03095  M01S02790.fsescrn +++|*         IF THESE CONDITIONS ARE ALREADY TRUE, NOTHING IS CHANGED.
03096  M01S02791.fsescrn +++|*         ELSE WE BUILD NEW SPLIT STARTING AT CURRENT LINE.
03097  M01S02792.fsescrn +++|*
03098  M01S02793.fsescrn +++|*         PROC SETTOPBOTS(SPLIT)
03099  M01S02794.fsescrn +++|*
03100  M01S02795.fsescrn +++|*         ENTRY  SPLIT - WHICH SPLIT.
03101  M01S02796.fsescrn +++|*                SPLITFILE[SPLIT] - SETUP.
03102  M01S02797.fsescrn +++|*                CURF(SPLITFILE[SPLIT]) - CURRENT LINE.
03103  M01S02798.fsescrn +++|*                TOPS(SPLIT), BOTS(SPLIT) - POSSIBLY ALREADY VALID.
03104  M01S02799.fsescrn +++|*
03105  M01S02800.fsescrn +++|*         EXIT   TOPS(SPLIT), BOTS(SPLIT) - GUARANTEED VALID.
03106  M01S02801.fsescrn +++|*                ROWPAINT[ALL THIS SPLIT] - POSSIBLY TRUE.
03107  M01S02802.fsescrn +++|*
03108  M01S02803.fsescrn +++|*         CALLS  SETTOPS, SETBOTS, PAINTONESPLT.
03109  M01S02804.fsescrn +++|#
03110  M01S02805.fsescrn +++|
03111  M01S02806.fsescrn +++|  ITEM SPLIT     I;                  # WHICH SPLIT #
03112  M01S02807.fsescrn +++|  ITEM L         I;                  # LINE #
03113  M01S02808.fsescrn +++|
03114  M01S02809.fsescrn +++|  SETTOPS(SPLIT);
03115  M01S02810.fsescrn +++|  SETBOTS(SPLIT);
03116  M01S02811.fsescrn +++|  L=CURF(SPLITFILE[SPLIT]);
03117  M01S02812.fsescrn +++|  L=MAX(L,TOPF(SPLITFILE[SPLIT])+1);
03118  M01S02813.fsescrn +++|  L=MIN(L,BOTF(SPLITFILE[SPLIT])-1);
03119  M01S02814.fsescrn +++|  IF L LQ TOPS(SPLIT) OR L GQ BOTS(SPLIT) THEN
03120  M01S02815.fsescrn +++|    BEGIN
03121  M01S02816.fsescrn +++|    TOPS(SPLIT)=L-1;
03122  M01S02817.fsescrn +++|    SETTOPS(SPLIT);
03123  M01S02818.fsescrn +++|    SETBOTS(SPLIT);
03124  M01S02819.fsescrn +++|    IF BOTS(SPLIT) GR TOPS(SPLIT)+1 THEN PAINTONESPLT(SPLIT);
03125  M01S02820.fsescrn +++|    END
03126  M01S02821.fsescrn +++|
03127  M01S02822.fsescrn +++|  END  # SETTOPBOTS #
03128  M01S02823.fsescrn +++|
03129  M01S02824.fsescrn +++|
03130  M01S02825.fsescrn +++|PROC SETTOPS(SPLIT);
03131  M01S02826.fsescrn +++|  BEGIN
03132  M01S02827.fsescrn +++|#
03133  M01S02828.fsescrn +++|**        SETTOPS - ASSURE TOPS() IS IN FILE BOUNDS.
03134  M01S02829.fsescrn +++|*
03135  M01S02830.fsescrn +++|*         ENTRY  SPLIT - WHICH SPLIT.
03136  M01S02831.fsescrn +++|*                SPLITFILE[SPLIT] - WHICH FILE.
03137  M01S02832.fsescrn +++|*                TOPF(FILE), BOTF(FILE) - FILE BOUNDARIES.
03138  M01S02833.fsescrn +++|*
03139  M01S02834.fsescrn +++|*         EXIT   TOPS(SPLIT) - GUARANTEED IN BOUNDS.
03140  M01S02835.fsescrn +++|#
03141  M01S02836.fsescrn +++|  ITEM SPLIT;
03142  M01S02837.fsescrn +++|  TOPS(SPLIT)=MIN(TOPS(SPLIT),BOTF(SPLITFILE[SPLIT])-2);
03143  M01S02838.fsescrn +++|  TOPS(SPLIT)=MAX(TOPS(SPLIT),TOPF(SPLITFILE[SPLIT]));
03144  M01S02839.fsescrn +++|  END                         # OF SETTOPS        #
03145  M01S02840.fsescrn +++|
03146  M01S02841.fsescrn +++|
03147  M01S02842.fsescrn +++|PROC SETBOTS(SPLIT);
03148  M01S02843.fsescrn +++|  BEGIN
03149  M01S02844.fsescrn +++|#
03150  M01S02845.fsescrn +++|**        SETBOTS - SET BOTS() BY TOPS() AND FILE BOUNDS.
03151  M01S02846.fsescrn +++|*
03152  M01S02847.fsescrn +++|*         ENTRY  SPLIT - WHICH SPLIT.
03153  M01S02848.fsescrn +++|*                SPLITFILE[SPLIT] - WHICH FILE BRACKET.
03154  M01S02849.fsescrn +++|*                TOPS(SPLIT), BOTF(FILE) - SETUP.
03155  M01S02850.fsescrn +++|*
03156  M01S02851.fsescrn +++|*         EXIT   BOTS(SPLIT) - DEFINED.
03157  M01S02852.fsescrn +++|#
03158  M01S02853.fsescrn +++|  ITEM SPLIT;
03159  M01S02854.fsescrn +++|  BOTS(SPLIT)=MIN(TOPS(SPLIT)+NUMROWS[SPLIT]+1,BOTF(SPLITFILE[SPLIT]));
03160  M01S02855.fsescrn +++|  END                      # OF SETBOTS                 #
03161  M01S02856.fsescrn +++|
03162  M01S02857.fsescrn +++|
03163  M01S02858.fsescrn +++|PROC REPX;
03164  M01S02859.fsescrn +++|  IOBEGIN(REPX)
03165  M01S02860.fsescrn +++|#
03166  M01S02861.fsescrn +++|**        REPX - INTERFACE FOR LINE REPLACEMENT.
03167  M01S02862.fsescrn +++|*
03168  M01S02863.fsescrn +++|*         REPX IS CALLED BY ANY ROUTINE IN THE EDITOR WHICH IS
03169  M01S02864.fsescrn +++|*         REPLACING A TEXT LINE IN THE WORKFILE.  NOTE THAT WE
03170  M01S02865.fsescrn +++|*         DEFINE TEXT LINES AS LINES WITHIN FILE BRACKETS.  THIS
03171  M01S02866.fsescrn +++|*         DOES NOT INCLUDE LINES IN THE AUDIT TRAIL OR IN THE
03172  M01S02867.fsescrn +++|*         FILE DIRECTORY.
03173  M01S02868.fsescrn +++|*
03174  M01S02869.fsescrn +++|*         REPX ASSURES THAT ANY SCREEN DISPLAY OF THE LINE IS
03175  M01S02870.fsescrn +++|*         FLAGGED FOR REPAINT WHEN NEEDED.  REPAINT IS NOT NEEDED
03176  M01S02871.fsescrn +++|*         FOR CHANGES MADE BY THE DOSCREEN ROUTINE TO MIMIC TERMINAL
03177  M01S02872.fsescrn +++|*         HARDWARE CAPABILITIES.  THIS IS DENOTED BY THE HARDFN FLAG.
03178  M01S02873.fsescrn +++|*
03179  M01S02874.fsescrn +++|*         LOGIC FOR THIS ROUTINE MUST CHECK SCREEN BOUNDARIES SINCE
03180  M01S02875.fsescrn +++|*         CHANGES CAN BE MADE OFF-SCREEN.  ALSO MUST CHECK FOR OVER-
03181  M01S02876.fsescrn +++|*         LAPPED SPLITS OF SAME FILE - EVEN IF CHANGE CAME AS A
03182  M01S02877.fsescrn +++|*         HARD FUNCTION, THE OVERLAPPED VERSON STILL NEEDS PAINTING.
03183  M01S02878.fsescrn +++|*
03184  M01S02879.fsescrn +++|*         ENTRY  LIN - THE LINE IMAGE AS CHANGED.
03185  M01S02880.fsescrn +++|*                CURRENT, CURSPLIT, CURFILE - WHERE WE ARE.
03186  M01S02881.fsescrn +++|*                HARDFN - TRUE IF MIMIC-ING WHAT HARDWARE ALREADY DID.
03187  M01S02882.fsescrn +++|*                TOPS(BOTH), BOTS(BOTH) - BRACKET THE LINES ON DISPLAY.
03188  M01S02883.fsescrn +++|*                SCREENMODE - TRUE FOR NON-TRIVIAL OPERATION.
03189  M01S02884.fsescrn +++|*
03190  M01S02885.fsescrn +++|*         EXIT   ROWPAINT[RIGHT ROWS] - SET TRUE IF NEEDED.
03191  M01S02886.fsescrn +++|*                WORKFILE ACCESS METHOD CALLED TO MANAGE UPDATE.
03192  M01S02887.fsescrn +++|*
03193  M01S02888.fsescrn +++|*         CALLS  REPS (INTERNAL), REPZ.
03194  M01S02889.fsescrn +++|#
03195  M01S02890.fsescrn +++|
03196  M01S02891.fsescrn +++|   PROC REPS(SPLIT);
03197  M01S02892.fsescrn +++|     BEGIN
03198  M01S02893.fsescrn +++|#
03199  M01S02894.fsescrn +++|**        REPS - INTERNAL LOGIC FOR REPX.
03200  M01S02895.fsescrn +++|*
03201  M01S02896.fsescrn +++|*         NOTE   SEE HEADER FOR REPX.
03202  M01S02897.fsescrn +++|#
03203  M01S02898.fsescrn +++|     ITEM SPLIT;
03204  M01S02899.fsescrn +++|     IF CURRENT GR TOPS(SPLIT) AND CURRENT LS BOTS(SPLIT)
03205  M01S02900.fsescrn +++|       AND (SPLIT NQ CURSPLIT OR NOT HARDFN)
03206  M01S02901.fsescrn +++|       THEN ROWPAINT[LTOY(CURRENT,SPLIT)]=TRUE;
03207  M01S02902.fsescrn +++|     END                     # OF REPS            #
03208  M01S02903.fsescrn +++|
03209  M01S02904.fsescrn +++|  # ACTUAL REPX CODE STARTS HERE #
03210  M01S02905.fsescrn +++|  REPZ;
03211  M01S02906.fsescrn +++|  IF SCREENMODE THEN
03212  M01S02907.fsescrn +++|    BEGIN
03213  M01S02908.fsescrn +++|    REPS(1);
03214  M01S02909.fsescrn +++|    REPS(2);
03215  M01S02910.fsescrn +++|    END
03216  M01S02911.fsescrn +++|  IOEND                    # OF REPX            #
03217  M01S02912.fsescrn +++|
03218  M01S02913.fsescrn +++|
03219  M01S02914.fsescrn +++|PROC INSX;
03220  M01S02915.fsescrn +++|  IOBEGIN(INSX)
03221  M01S02916.fsescrn +++|#
03222  M01S02917.fsescrn +++|**        INSX - INTERFACE FOR LINE INSERTION.
03223  M01S02918.fsescrn +++|*
03224  M01S02919.fsescrn +++|*         INSX IS CALLED BY ANY ROUTINE IN THE EDITOR WHICH IS
03225  M01S02920.fsescrn +++|*         INSERTING A TEXT LINE IN THE WORKFILE.  NOTE THAT WE
03226  M01S02921.fsescrn +++|*         DEFINE TEXT LINES AS LINES WITHIN FILE BRACKETS.  THIS
03227  M01S02922.fsescrn +++|*         DOES NOT INCLUDE LINES IN THE AUDIT TRAIL OR IN THE
03228  M01S02923.fsescrn +++|*         FILE DIRECTORY.
03229  M01S02924.fsescrn +++|*
03230  M01S02925.fsescrn +++|*         INSX ASSURES THAT ANY SCREEN DISPLAY OF THE LINE IS
03231  M01S02926.fsescrn +++|*         FLAGGED FOR REPAINT WHEN NEEDED.  REPAINT IS NOT NEEDED
03232  M01S02927.fsescrn +++|*         FOR CHANGES MADE BY THE DOSCREEN ROUTINE TO MIMIC TERMINAL
03233  M01S02928.fsescrn +++|*         HARDWARE CAPABILITIES.  THIS IS DENOTED BY THE HARDFN FLAG.
03234  M01S02929.fsescrn +++|*
03235  M01S02930.fsescrn +++|*         LOGIC FOR THIS ROUTINE MUST CHECK SCREEN BOUNDARIES SINCE
03236  M01S02931.fsescrn +++|*         CHANGES CAN BE MADE OFF-SCREEN.  ALSO MUST CHECK FOR OVER-
03237  M01S02932.fsescrn +++|*         LAPPED SPLITS OF SAME FILE - EVEN IF CHANGE CAME AS A
03238  M01S02933.fsescrn +++|*         HARD FUNCTION, THE OVERLAPPED VERSON STILL NEEDS PAINTING.
03239  M01S02934.fsescrn +++|*
03240  M01S02935.fsescrn +++|*         ENTRY  LIN - THE LINE IMAGE TO BE INSERTED.
03241  M01S02936.fsescrn +++|*                CURRENT, CURSPLIT, CURFILE - WHERE WE ARE.
03242  M01S02937.fsescrn +++|*                HARDFN - TRUE IF MIMIC-ING WHAT HARDWARE ALREADY DID.
03243  M01S02938.fsescrn +++|*                TOPS(BOTH), BOTS(BOTH) - BRACKET THE LINES ON DISPLAY.
03244  M01S02939.fsescrn +++|*                SCREENMODE - TRUE FOR NON-TRIVIAL OPERATION.
03245  M01S02940.fsescrn +++|*                TABVTPROTM[0] - TERMINAL CAPABILITY TO PROTECT FIELDS.
03246  M01S02941.fsescrn +++|*
03247  M01S02942.fsescrn +++|*         EXIT   ROWPAINT[RIGHT ROWS] - SET TRUE IF NEEDED.
03248  M01S02943.fsescrn +++|*                ROWPAINT[LOWER], ROWBITS[LOWER] - PROPOGATED AS NEEDED.
03249  M01S02944.fsescrn +++|*                WORKFILE ACCESS METHOD CALLED TO MANAGE UPDATE.
03250  M01S02945.fsescrn +++|*
03251  M01S02946.fsescrn +++|*         CALLS  INSS (INTERNAL), INSZ.
03252  M01S02947.fsescrn +++|#
03253  M01S02948.fsescrn +++|
03254  M01S02949.fsescrn +++|  PROC INSS(SPLIT);
03255  M01S02950.fsescrn +++|    BEGIN
03256  M01S02951.fsescrn +++|#
03257  M01S02952.fsescrn +++|**        INSS - INTERNAL LOGIC FOR INSX.
03258  M01S02953.fsescrn +++|*
03259  M01S02954.fsescrn +++|*         NOTE   SEE HEADER FOR INSX.
03260  M01S02955.fsescrn +++|#
03261  M01S02956.fsescrn +++|    ITEM SPLIT, I, THISROW, LASTROW;
03262  M01S02957.fsescrn +++|    IF SPLITFILE[SPLIT] NQ 0 THEN
03263  M01S02958.fsescrn +++|      BEGIN
03264  M01S02959.fsescrn +++|      IF CURRENT GR TOPF(SPLITFILE[SPLIT]) AND
03265  M01S02960.fsescrn +++|         CURRENT LS BOTF(SPLITFILE[SPLIT]) THEN
03266  M01S02961.fsescrn +++|        BEGIN
03267  M01S02962.fsescrn +++|        SETBOTS(SPLIT);
03268  M01S02963.fsescrn +++|        IF CURRENT GR TOPS(SPLIT) AND CURRENT LS BOTS(SPLIT) THEN
03269  M01S02964.fsescrn +++|          BEGIN
03270  M01S02965.fsescrn +++|          THISROW=LTOY(CURRENT,SPLIT);
03271  M01S02966.fsescrn +++|          LASTROW=TITLEROW[SPLIT]+NUMROWS[SPLIT];
03272  M01S02967.fsescrn +++|          FOR I=LASTROW STEP -1 UNTIL THISROW+1 DO
03273  M01S02968.fsescrn +++|            BEGIN
03274  M01S02969.fsescrn +++|            ROWPAINT[I]=ROWPAINT[I-1];
03275  M01S02970.fsescrn +++|            ROWBITS[I]=ROWBITS[I-1];
03276  M01S02971.fsescrn +++|            END
03277  M01S02972.fsescrn +++|          IF HARDFN AND SPLIT EQ CURSPLIT THEN
03278  M01S02973.fsescrn +++|            BEGIN
03279  M01S02974.fsescrn +++|            IF NOT TABVTPROTM[0] THEN PAINTREST(LASTROW+1);
03280  M01S02975.fsescrn +++|            END
03281  M01S02976.fsescrn +++|          ELSE
03282  M01S02977.fsescrn +++|            BEGIN
03283  M01S02978.fsescrn +++|            FOR I=LASTROW STEP -1 UNTIL THISROW+1
03284  M01S02979.fsescrn +++|              DO ROWORIG[I]=ROWORIG[I-1];
03285  M01S02980.fsescrn +++|            ROWORIG[THISROW]=0;
03286  M01S02981.fsescrn +++|            END
03287  M01S02982.fsescrn +++|          END
03288  M01S02983.fsescrn +++|        END
03289  M01S02984.fsescrn +++|      END
03290  M01S02985.fsescrn +++|    END                    # OF INSS              #
03291  M01S02986.fsescrn +++|
03292  M01S02987.fsescrn +++|  # ACTUAL INSX CODE STARTS HERE #
03293  M01S02988.fsescrn +++|  INSZ;
03294  M01S02989.fsescrn +++|  IF SCREENMODE THEN
03295  M01S02990.fsescrn +++|    BEGIN
03296  M01S02991.fsescrn +++|    INSS(1);
03297  M01S02992.fsescrn +++|    INSS(2);
03298  M01S02993.fsescrn +++|    END
03299  M01S02994.fsescrn +++|  IOEND                   # OF INSX              #
03300  M01S02995.fsescrn +++|
03301  M01S02996.fsescrn +++|
03302  M01S02997.fsescrn +++|PROC DELX;
03303  M01S02998.fsescrn +++|  IOBEGIN(DELX)
03304  M01S02999.fsescrn +++|#
03305  M01S03000.fsescrn +++|**        DELX - INTERFACE FOR LINE DELETION.
03306  M01S03001.fsescrn +++|*
03307  M01S03002.fsescrn +++|*         DELX IS CALLED BY ANY ROUTINE IN THE EDITOR WHICH IS
03308  M01S03003.fsescrn +++|*         DELETEING A TEXT LINE IN THE WORKFILE.  NOTE THAT WE
03309  M01S03004.fsescrn +++|*         DEFINE TEXT LINES AS LINES WITHIN FILE BRACKETS.  THIS
03310  M01S03005.fsescrn +++|*         DOES NOT INCLUDE LINES IN THE AUDIT TRAIL OR IN THE
03311  M01S03006.fsescrn +++|*         FILE DIRECTORY.
03312  M01S03007.fsescrn +++|*
03313  M01S03008.fsescrn +++|*         DELX ASSURES THAT ANY SCREEN DISPLAY OF THE LINE IS
03314  M01S03009.fsescrn +++|*         FLAGGED FOR REPAINT WHEN NEEDED.  REPAINT IS NOT NEEDED
03315  M01S03010.fsescrn +++|*         FOR CHANGES MADE BY THE DOSCREEN ROUTINE TO MIMIC TERMINAL
03316  M01S03011.fsescrn +++|*         HARDWARE CAPABILITIES.  THIS IS DENOTED BY THE HARDFN FLAG.
03317  M01S03012.fsescrn +++|*
03318  M01S03013.fsescrn +++|*         LOGIC FOR THIS ROUTINE MUST CHECK SCREEN BOUNDARIES SINCE
03319  M01S03014.fsescrn +++|*         CHANGES CAN BE MADE OFF-SCREEN.  ALSO MUST CHECK FOR OVER-
03320  M01S03015.fsescrn +++|*         LAPPED SPLITS OF SAME FILE - EVEN IF CHANGE CAME AS A
03321  M01S03016.fsescrn +++|*         HARD FUNCTION, THE OVERLAPPED VERSON STILL NEEDS PAINTING.
03322  M01S03017.fsescrn +++|*
03323  M01S03018.fsescrn +++|*         ENTRY  LIN - THE LINE IMAGE TO BE DELETED.
03324  M01S03019.fsescrn +++|*                CURRENT, CURSPLIT, CURFILE - WHERE WE ARE.
03325  M01S03020.fsescrn +++|*                HARDFN - TRUE IF MIMIC-ING WHAT HARDWARE ALREADY DID.
03326  M01S03021.fsescrn +++|*                TABVTPROTM[0] - TERMINAL CAPABILITY TO PROTECT FIELDS.
03327  M01S03022.fsescrn +++|*                TOPS(BOTH), BOTS(BOTH) - BRACKET THE LINES ON DISPLAY.
03328  M01S03023.fsescrn +++|*                SCREENMODE - TRUE FOR NON-TRIVIAL OPERATION.
03329  M01S03024.fsescrn +++|*
03330  M01S03025.fsescrn +++|*         EXIT   ROWPAINT[RIGHT ROWS] - SET TRUE IF NEEDED.
03331  M01S03026.fsescrn +++|*                ROWPAINT[LOWER], ROWBITS[LOWER] - POSSIBLY PROPOGATED.
03332  M01S03027.fsescrn +++|*                LIN - UNAFFECTED BY DELX CODE.  MAY BE AFFECTED BY
03333  M01S03028.fsescrn +++|*                    PASS-ON CALL TO DELZ.
03334  M01S03029.fsescrn +++|*                WORKFILE ACCESS METHOD CALLED TO MANAGE UPDATE.
03335  M01S03030.fsescrn +++|*
03336  M01S03031.fsescrn +++|*         CALLS  DELS (INTERNAL), DELZ.
03337  M01S03032.fsescrn +++|#
03338  M01S00001.fsesc30 +++|  ITEM SPLIT;                        # TEMPORARY SPLIT REFERENCE #
03339  M01S03033.fsescrn +++|
03340  M01S03034.fsescrn +++|  PROC DELS(SPLIT);
03341  M01S03035.fsescrn +++|    BEGIN
03342  M01S03036.fsescrn +++|#
03343  M01S03037.fsescrn +++|**        DELS - INTERNAL LOGIC FOR DELX.
03344  M01S03038.fsescrn +++|*
03345  M01S03039.fsescrn +++|*         NOTE   SEE HEADER FOR DELX.
03346  M01S03040.fsescrn +++|#
03347  M01S03041.fsescrn +++|    ITEM SPLIT,I,THISROW,LASTROW;
03348  M01S03042.fsescrn +++|    IF SPLITFILE[SPLIT] NQ 0 THEN
Line S03043 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc30
Seq #  *Modification Id* Act 
----------------------------+
03349  M02S03043.fsesc30 ---|      BEGIN
03350  M01S00002.fsesc30 +++|      BEGIN                          # IF A FILE IN THIS SPLIT #
Line S03044 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fses30a
Seq #  *Modification Id* Act 
----------------------------+
03351  M02S03044.fses30a ---|      IF CURRENT GQ TOPF(SPLITFILE[SPLIT]) AND
Line S03045 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fses30a
Seq #  *Modification Id* Act 
----------------------------+
03352  M02S03045.fses30a ---|         CURRENT LQ BOTF(SPLITFILE[SPLIT]) THEN
Line S03046 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc30
M03 (Updated by) fses30a
Seq #  *Modification Id* Act 
----------------------------+
03353  M03S03046.fses30a ---|        BEGIN
Line S03047 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc30
M03 (Updated by) fses30a
Seq #  *Modification Id* Act 
----------------------------+
03354  M03S03047.fses30a ---|        IF CURRENT GQ TOPS(SPLIT) AND CURRENT LQ BOTS(SPLIT) THEN
Line S03048 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc30
M03 (Updated by) fses30a
Seq #  *Modification Id* Act 
----------------------------+
03355  M03S03048.fses30a ---|          BEGIN
Line S00003 Modification History
M01 (Added by) fsesc30
M02 (Updated by) fses30a
Seq #  *Modification Id* Act 
----------------------------+
03356  M02S00003.fses30a ---|        BEGIN                        # IF DELETED LINE IN THIS FILE #
Line S00004 Modification History
M01 (Added by) fsesc30
M02 (Updated by) fses30a
Seq #  *Modification Id* Act 
----------------------------+
03357  M02S00004.fses30a ---|        IF TEMP GR 0 AND CURRENT LS BOTS(SPLIT) THEN
03358  M01S00001.fses30a +++|        IF TEMP GR 0 THEN
03359  M01S00005.fsesc30 +++|          BEGIN                      # IF DELETED LINE WAS ON SCREEN #
03360  M01S03049.fsescrn +++|          THISROW=CURRENT-DELETCTL;
03361  M01S03050.fsescrn +++|          THISROW=LTOY(THISROW,SPLIT);
03362  M01S03051.fsescrn +++|          LASTROW=TITLEROW[SPLIT]+NUMROWS[SPLIT];
03363  M01S03052.fsescrn +++|          FOR I=THISROW+2 STEP 1 UNTIL LASTROW DO
Line S03053 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc30
Seq #  *Modification Id* Act 
----------------------------+
03364  M02S03053.fsesc30 ---|            BEGIN
03365  M01S00006.fsesc30 +++|            BEGIN                    # REPAINT LINES AFTER DELETION #
03366  M01S03054.fsescrn +++|            ROWPAINT[I-1]=ROWPAINT[I];
03367  M01S03055.fsescrn +++|            ROWBITS[I-1]=ROWBITS[I];
03368  M01S03056.fsescrn +++|            END
03369  M01S03057.fsescrn +++|          ROWPAINT[LASTROW]=TRUE;
03370  M01S03058.fsescrn +++|          IF HARDFN AND SPLIT EQ CURSPLIT THEN
03371  M01S03059.fsescrn +++|            BEGIN
03372  M01S03060.fsescrn +++|            IF NOT TABVTPROTM[0] THEN PAINTREST(LASTROW);
03373  M01S03061.fsescrn +++|            END
03374  M01S03062.fsescrn +++|          ELSE
03375  M01S03063.fsescrn +++|            BEGIN
03376  M01S03064.fsescrn +++|            ROWORIG[THISROW]=0;
03377  M01S03065.fsescrn +++|            FOR I=THISROW+2 STEP 1 UNTIL LASTROW
03378  M01S03066.fsescrn +++|              DO ROWORIG[I-1]=ROWORIG[I];
03379  M01S03067.fsescrn +++|            END
03380  M01S03068.fsescrn +++|          END
Line S00007 Modification History
M01 (Added by) fsesc30
M02 (Updated by) fses30a
Seq #  *Modification Id* Act 
----------------------------+
03381  M02S00007.fses30a ---|        POPTEMP;
Line S03069 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fses30a
Seq #  *Modification Id* Act 
----------------------------+
03382  M02S03069.fses30a ---|        END
03383  M01S00002.fses30a +++|      POPTEMP;
03384  M01S03070.fsescrn +++|      END
03385  M01S03071.fsescrn +++|    END                    # OF DELS             #
03386  M01S03072.fsescrn +++|
03387  M01S03073.fsescrn +++|  # ACTUAL DELX CODE STARTS HERE #
03388  M01S03074.fsescrn +++|
03389  M01S03075.fsescrn +++|  IF NUMMARKS GR 0 THEN
03390  M01S03076.fsescrn +++|    BEGIN                            # IF MARK IS ACTIVE #
03391  M01S03077.fsescrn +++|    IF CURRENT EQ REGLINE[MARKREG] THEN
03392  M01S03078.fsescrn +++|      BEGIN                          # IF FIRST MARKED LINE DELETED #
03393  M01S03079.fsescrn +++|      IF REGLINE[MARKREG+1] GR CURRENT THEN
03394  M01S03080.fsescrn +++|        BEGIN                        # IF MORE THAN ONE MARKED LINE #
03395  M01S03081.fsescrn +++|        REGLINE[MARKREG] = CURRENT + 1;
03396  M01S03082.fsescrn +++|        MRKCHAR[0] = - 1;
03397  M01S03083.fsescrn +++|        END
03398  M01S03084.fsescrn +++|      ELSE
03399  M01S03085.fsescrn +++|        BEGIN                        # ONLY ONE MARKED LINE #
Line S03086 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc30
Seq #  *Modification Id* Act 
----------------------------+
03400  M02S03086.fsesc30 ---|      KILLMARKS = TRUE;
03401  M01S00008.fsesc30 +++|        KILLMARKS = TRUE;
03402  M01S03087.fsescrn +++|        END
03403  M01S03088.fsescrn +++|      END
03404  M01S03089.fsescrn +++|    ELSE
03405  M01S03090.fsescrn +++|      BEGIN                          # NOT FIRST MARKED LINE DELETED #
03406  M01S03091.fsescrn +++|      IF CURRENT EQ REGLINE[MARKREG+1] THEN
03407  M01S03092.fsescrn +++|        BEGIN                        # IF LAST MARKED LINE DELETED #
03408  M01S03093.fsescrn +++|        IF REGLINE[MARKREG] LS CURRENT THEN
03409  M01S03094.fsescrn +++|          BEGIN                      # IF MORE THAN ONE MARKED LINE #
03410  M01S03095.fsescrn +++|          REGLINE[MARKREG+1] = CURRENT - 1;
Line S03096 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc30
Seq #  *Modification Id* Act 
----------------------------+
03411  M02S03096.fsesc30 ---|        MRKCHAR[1] = - 1;
03412  M01S00009.fsesc30 +++|          MRKCHAR[1] = - 1;
03413  M01S03097.fsescrn +++|          END
03414  M01S03098.fsescrn +++|        ELSE
03415  M01S03099.fsescrn +++|          BEGIN                      # ONLY ONE MARKED LINE #
Line S03100 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc30
Seq #  *Modification Id* Act 
----------------------------+
03416  M02S03100.fsesc30 ---|        KILLMARKS = TRUE;
03417  M01S00010.fsesc30 +++|          KILLMARKS = TRUE;
03418  M01S03101.fsescrn +++|          END
03419  M01S03102.fsescrn +++|        END
03420  M01S03103.fsescrn +++|      END
03421  M01S03104.fsescrn +++|    END
Line S03105 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc30
Seq #  *Modification Id* Act 
----------------------------+
03422  M02S03105.fsesc30 ---|  DELZ;
03423  M01S03106.fsescrn +++|  IF SCREENMODE THEN
03424  M01S03107.fsescrn +++|    BEGIN
03425  M01S00011.fsesc30 +++|    FOR SPLIT=2 STEP -1 UNTIL 1 DO
03426  M01S00012.fsesc30 +++|      BEGIN
03427  M01S00013.fsesc30 +++|      IF SPLITFILE[SPLIT] NQ 0 THEN
03428  M01S00014.fsesc30 +++|        BEGIN                        # IF A FILE IN THIS SPLIT #
03429  M01S00003.fses30a +++|        PUSHTEMP;
03430  M01S00004.fses30a +++|        TEMP = 0;
03431  M01S00015.fsesc30 +++|        IF CURRENT GQ TOPF(SPLITFILE[SPLIT]) AND
03432  M01S00016.fsesc30 +++|           CURRENT LQ BOTF(SPLITFILE[SPLIT]) THEN
03433  M01S00017.fsesc30 +++|          BEGIN                      # IF DELETING LINE IN THIS FILE #
Line S00018 Modification History
M01 (Added by) fsesc30
M02 (Updated by) fses30a
Seq #  *Modification Id* Act 
----------------------------+
03434  M02S00018.fses30a ---|          PUSHTEMP;
Line S00019 Modification History
M01 (Added by) fsesc30
M02 (Updated by) fses30a
Seq #  *Modification Id* Act 
----------------------------+
03435  M02S00019.fses30a ---|          TEMP = CURRENT - TOPS(SPLIT);
Line S00005 Modification History
M01 (Added by) fses30a
M02 (Updated by) fses30b
Seq #  *Modification Id* Act 
----------------------------+
03436  M02S00005.fses30b ---|          IF CURRENT GR TOPS(SPLIT) AND CURRENT LS BOTS(SPLIT) THEN
03437  M01S00001.fses30b +++|          IF CURRENT GR TOPS(SPLIT) AND CURRENT LQ BOTS(SPLIT) THEN
03438  M01S00006.fses30a +++|            TEMP = 1;
03439  M01S00020.fsesc30 +++|          END
03440  M01S00021.fsesc30 +++|        END
03441  M01S00022.fsesc30 +++|      END
03442  M01S00023.fsesc30 +++|    DELZ;
03443  M01S03108.fsescrn +++|    DELS(1);
03444  M01S03109.fsescrn +++|    DELS(2);
03445  M01S03110.fsescrn +++|    END
03446  M01S00024.fsesc30 +++|  ELSE DELZ;
03447  M01S03111.fsescrn +++|  IOEND                   # OF DELX             #
03448  M01S03112.fsescrn +++|
03449  M01S03113.fsescrn +++|
03450  M01S03114.fsescrn +++|END TERM
cdc/nos2.source/opl.opl871/deck/fsescrn.001.txt ยท Last modified: by 127.0.0.1