User Tools

Site Tools


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

Deck FSESCRN

22 Modifications

Listing Sections

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M01S00001.fsescrn +++|PROC FSESCRN;
00002  M01S00002.fsescrn +++|  BEGIN
00003  M01S00003.fsescrn +++|#
00004  M01S00004.fsescrn +++|***       FSESCRN - SCREEN EDITING MODULE.
00005  M01S00005.fsescrn +++|*
Line S00006 Modification History
M01 (Added by) fsescrn
M02 (Updated by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00006  M02S00006.281l803 ---|*         COPYRIGHT CONTROL DATA CORPORATION, 1983.
00007  M01S00001.281l803 +++|*         COPYRIGHT CONTROL DATA SYSTEMS INC.  1992.
00008  M01S00007.fsescrn +++|#
00009  M01S00008.fsescrn +++|
00010  M01S00009.fsescrn +++|  DEF LISTCON #0#;
00011  M01S00010.fsescrn +++|
00012  M01S00011.fsescrn +++|*IFCALL SINGLE,COMFSGL
00013  M01S00012.fsescrn +++|*IFCALL ONLY,COMFONL
00014  M01S00013.fsescrn +++|*IFCALL MULTI,COMFMLT
00015  M01S00014.fsescrn +++|*CALL COMFFSE
00016  M01S00015.fsescrn +++|*CALL COMFDS1
00017  M01S00016.fsescrn +++|*CALL COMFVD2
00018  M01S00017.fsescrn +++|*CALL COMFDS2
00019  M01S00018.fsescrn +++|*CALL COMFTAB
00020  M01S00019.fsescrn +++|
00021  M01S00020.fsescrn +++|*CALL COMFVDT
00022  M01S00021.fsescrn +++|
00023  M01S00022.fsescrn +++|CONTROL IFEQ MULTI,1;
00024  M01S00023.fsescrn +++|  XREF ARRAY RENTSTK [1:MAXREENT];     # SUBROUTINE STACK  #
00025  M01S00024.fsescrn +++|    BEGIN
00026  M01S00025.fsescrn +++|    ITEM RSTK;
00027  M01S00026.fsescrn +++|    END
00028  M01S00027.fsescrn +++|  XREF ITEM RSTKPTR;
00029  M01S00028.fsescrn +++|CONTROL FI;
00030  M01S00029.fsescrn +++|
00031  M01S00030.fsescrn +++|
00032  M01S00031.fsescrn +++|XDEF
00033  M01S00032.fsescrn +++|  BEGIN
00034  M01S00033.fsescrn +++|*CALL COMFXSC
00035  M01S00034.fsescrn +++|  END
00036  M01S00035.fsescrn +++|
00037  M01S00036.fsescrn +++|XREF
00038  M01S00037.fsescrn +++|  BEGIN
00039  M01S00038.fsescrn +++|*CALL COMFXVT
00040  M01S00039.fsescrn +++|*CALL COMFXTI
00041  M01S00040.fsescrn +++|*CALL COMFXFO
00042  M01S00041.fsescrn +++|*CALL COMFXSB
00043  M01S00042.fsescrn +++|*CALL COMFXED
00044  M01S00043.fsescrn +++|  END
00045  M01S00044.fsescrn +++|
00046  M01S00045.fsescrn +++|XREF FUNC LENGTH;   # COMPASS ROUTINES #
00047  M01S00046.fsescrn +++|XREF PROC MOVEWD;   XREF PROC EXCHWD;
00048  M01S00047.fsescrn +++|#
00049  M01S00048.fsescrn +++|  MASKS FOR SETTING THE VARIOUS ATTRIBUTES IN ATTRIBMASK (COMFVD2)
00050  M01S00049.fsescrn +++|#
00051  M01S00050.fsescrn +++|  DEF MSKLOGICAL #O"4000"#;          # LOGICAL ATTRIBUTE #
00052  M01S00051.fsescrn +++|  DEF MSKPROTECT #O"2000"#;          # PROTECT #
00053  M01S00052.fsescrn +++|  DEF MSKGUARDMD #O"1000"#;          # GUARD MODE #
00054  M01S00053.fsescrn +++|  DEF MSKUNDERLN #O"0010"#;          # UNDERLINE #
00055  M01S00054.fsescrn +++|  DEF MSKALTERIN #O"0004"#;          # ALTERNATE INTENSITY #
00056  M01S00055.fsescrn +++|  DEF MSKINVERSE #O"0002"#;          # INVERSE #
00057  M01S00056.fsescrn +++|  DEF MSKBLINKMD #O"0001"#;          # BLINK MODE #
00058  M01S00057.fsescrn +++|PAGE                         # DOSCREEN - SCREEN MANIPULATIONS       #
00059  M01S00058.fsescrn +++|
00060  M01S00059.fsescrn +++|
00061  M01S00060.fsescrn +++|PROC DOSCREEN;
00062  M01S00061.fsescrn +++|  IOBEGIN(DOSCREEN)
00063  M01S00062.fsescrn +++|#
00064  M01S00063.fsescrn +++|**        DOSCREEN - MIMIC ON-SCREEN MANIPULATIONS IN INPUT.
00065  M01S00064.fsescrn +++|*
00066  M01S00065.fsescrn +++|*         DOSCREEN PROCESSES ALL SCREEN MODE INPUT.  IT PERFORMS
00067  M01S00066.fsescrn +++|*         FILE MANIPULATIONS TO MIMIC SCREEN MANIPULATIONS.  IT
00068  M01S00067.fsescrn +++|*         KEEPS FILE POSITIONING UP TO DATE WITH THE USERS CURSOR
00069  M01S00068.fsescrn +++|*         POSITIONING.  IT COMPUTES NEW DEFAULT CURSOR POSITIONING
00070  M01S00069.fsescrn +++|*         BETWEEN TRANSACTIONS.  IT PROCESS SOME FUNCTION KEYS
00071  M01S00070.fsescrn +++|*         INTERNALLY AND CONVERTS OTHER FUNCTION KEYS INTO COMMAND
00072  M01S00071.fsescrn +++|*         STRINGS.  DOSCREEN SHOULD BE CALLED ALTERNATING WITH THE
00073  M01S00072.fsescrn +++|*         COMMAND SCANNER AND THE SCREEN PAINTER.
00074  M01S00073.fsescrn +++|*
00075  M01S00074.fsescrn +++|*         ENTRY  CMDLIN - REPAIRABLE COMMANDS IF ANY OR NULL.
00076  M01S00075.fsescrn +++|*                OUTPUT CYCLE (PAINTSCREEN) EXECUTED.
00077  M01S00076.fsescrn +++|*                VTXCUR, VTYCUR - CURSOR AS SET BY OUTPUT.
00078  M01S00077.fsescrn +++|*                CURFILE, CURSPLIT, CURRENT - AS SET BY
00079  M01S00078.fsescrn +++|*                    COMMAND PROCESSING.
00080  M01S00079.fsescrn +++|*                FILENAM[1-2], FILEATTR[1-2] - SET UP.
00081  M01S00080.fsescrn +++|*                XSHIFT[1-2], YSHIFT[1-2] - SHIFT FACTORS.
00082  M01S00081.fsescrn +++|*                TOPS(1-2), BOTS(1-2), BOTF(1-2) - SCREEN BOUNDARIES.
00083  M01S00082.fsescrn +++|*                SETUPSCREEN ALREADY CALLED. (TITLEROW[1-2],
00084  M01S00083.fsescrn +++|*                    NUMROWS[1-2], ROWTYPE[1-2], ETC, SETUP)
00085  M01S00084.fsescrn +++|*                ROWPAINT[ALL] - FALSE SINCE PAINTSCREEN CALLED.
00086  M01S00085.fsescrn +++|*                FKEYNAME[ALL,ALL] - SETUP.
00087  M01S00086.fsescrn +++|*                CHARRANGE - INDICATES LINE OR CHARACTER MARKING.
00088  M01S00087.fsescrn +++|*                TABVTPROTM[0] - SETUP.
00089  M01S00088.fsescrn +++|*                COMMANDROW - SETUP.
00090  M01S00089.fsescrn +++|*                PROMPTING - INDICATES NORMAL OR SPECIAL PROMPT.
00091  M01S00090.fsescrn +++|*                EDITFIELD - LOGICAL RIGHT LIMIT ON CHANGES.
00092  M01S00091.fsescrn +++|*
00093  M01S00092.fsescrn +++|*         EXIT   CMDLIN - REPAIRED OR NEWLY ENTERED COMMANDS.
00094  M01S00093.fsescrn +++|*                ROWPAINT[ANY] - POSSIBLY TRUE.
00095  M01S00094.fsescrn +++|*                VTXCUR, VTYCUR - CURSOR AS MOVED BY USER.
00096  M01S00095.fsescrn +++|*                XCURSOR, YCURSOR - SET BY USER THEN POSSIBLY
00097  M01S00096.fsescrn +++|*                    UPDATED TO ADVANCE THRU FILE OR TO STAY
00098  M01S00097.fsescrn +++|*                    WITH DATA UPON AUTO HALF-PAGE ADVANCE.
00099  M01S00098.fsescrn +++|*                XSHIFT[1-2], YSHIFT[1-2] - POSSIBLY UPDATED.
00100  M01S00099.fsescrn +++|*                TOPS(1-2), BOTS(1-2), BOTF(1-2) - UPDATED.
00101  M01S00100.fsescrn +++|*                CURFILE, CURSPLIT, CURRENT - AS SELECTED BY USER.
00102  M01S00101.fsescrn +++|*                CURCURSOR - USERS LAST VTXCUR, SHIFTED.
00103  M01S00102.fsescrn +++|*                HARDFN - FALSE TO ALLOW PROPER COMMAND OPERATION.
00104  M01S00103.fsescrn +++|*                LIN - TEXT CORRESPONDING TO CURRENT, CURFILE.
00105  M01S00104.fsescrn +++|*
00106  M01S00105.fsescrn +++|*         MACROS GETCHAR, SETCHAR, YTOL, LTOY.
00107  M01S00106.fsescrn +++|*
00108  M01S00107.fsescrn +++|*         CALLS  (INTERNAL) - ALIGN, CLEANLINE, DELTEXT, DSERRJMP,
00109  M01S00108.fsescrn +++|*                EXTEND, INCRCURSOR, INSTEXT, MOVETEXT, REJECT,
00110  M01S00109.fsescrn +++|*                SETCMD, SETCURSOR.
00111  M01S00110.fsescrn +++|*                (EXTERNAL) - BAKZ, DELX, INSX, LENGTH, PAINTALL,
00112  M01S00111.fsescrn +++|*                PAINTREST, PAINTSPLIT, SETBOTS, SETMARK, SETTOPS,
00113  M01S00112.fsescrn +++|*                TRIMPAD, VDTBOO, VDTEOO, VDTINP, VDTPPI, VFYLOCK.
00114  M01S00113.fsescrn +++|*
00115  M01S00114.fsescrn +++|*         USES   ALIGNGOOD, COMPUTEDPOS, FKEYNDX, HARDFN, LINECHANGED,
00116  M01S00115.fsescrn +++|*                OLDVTXCUR, OLDVTYCUR, READNAM, SCREENLIMIT, SCRNPT1,
00117  M01S00116.fsescrn +++|*                SCRNPT2, SCRNPT3, SCRNPT4, SCRNPT5, SOFTTAB.
00118  M01S00117.fsescrn +++|*
00119  M01S00118.fsescrn +++|*         NOTE -
00120  M01S00119.fsescrn +++|*
00121  M01S00120.fsescrn +++|*         DOSCREEN MUST PROCESS ALL INPUT CHARACTERS.  THE ONLY UN-
00122  M01S00121.fsescrn +++|*         FINISHED BUSINESS IT MAY LEAVE WOULD BE THE CONTENTS OF THE
00123  M01S00122.fsescrn +++|*         COMMAND BUFFER LINE.  DOSCREEN CAN EXIT ONLY THROUGH THE
00124  M01S00123.fsescrn +++|*         "DSEOI" SECTION OR THRU THE DSERRJMP ROUTINE.  DOSCREEN MUST
00125  M01S00124.fsescrn +++|*         THEREFORE BE FUNCTIONALLY EQUIVALENT IN BOTH SINGLE AND MULTI
00126  M01S00125.fsescrn +++|*         USER VERSIONS.  THE ONLY SINGLE/MULTI COMPILE-TIME DIFFERENCE
00127  M01S00126.fsescrn +++|*         ALLOWABLE WOULD BE MODULE-DEPENDENT OPTIMIZATIONS WHICH CAUSE
00128  M01S00127.fsescrn +++|*         NO TRANSITIONS TO OCCUR.
00129  M01S00128.fsescrn +++|#
00130  M01S00129.fsescrn +++|
00131  M01S00130.fsescrn +++|  # NOTE -- SCREENSW AND VIRTERMATR MUST MATCH SCREENST #
00132  M01S00131.fsescrn +++|
Line S00132 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00133  M02S00132.ns2641  ---|  SWITCH SCREENSW  DSDUMMY, DSCHAR, DSINSC, DSDELC, DSINSL,
00134  M01S00001.ns2641  +++|  SWITCH SCREENSW  DSCLRALL, DSCHAR, DSINSC, DSDELC, DSINSL,
00135  M01S00133.fsescrn +++|    DSDELL, DSCLRPAG, DSCLREOP, DSCLRUNP, DSCLREOL, DSPOS,
00136  M01S00134.fsescrn +++|    DSHOME, DSUP, DSDOWN, DSLEFT, DSRIGHT, DSFTAB, DSBTAB,
00137  M01S00135.fsescrn +++|    DSRET, DSERAC, DSERAL, DSEOI, DSRESET, DSFKEY, DSGENERIC,
Line S00136 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00138  M02S00136.ns2641  ---|    DSBAD, DSNOOP, DSCOORD, DSPROTECT, DSFIELD, DSRSRV1, DSRSRV2;
00139  M01S00002.ns2641  +++|    DSBAD, DSNOOP, DSCOORD, DSPROTECT, DSFIELD, DSCLRTAB, DSSETTAB;
00140  M01S00137.fsescrn +++|
00141  M01S00138.fsescrn +++|  ARRAY VIRTERMATR [0:31];    # VIRTUAL TERMINAL ATTRIBUTES #
00142  M01S00139.fsescrn +++|    BEGIN                      # INDEXED BY VDT ORDINAL      #
00143  M01S00140.fsescrn +++|    ITEM NEEDALIGN  B(0,0,1)=[
Line S00141 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00144  M02S00141.ns2641  ---|      FALSE, TRUE,  TRUE,  TRUE,     # DUMMY, CHAR, IC, DC           #
00145  M01S00003.ns2641  +++|      FALSE, TRUE,  TRUE,  TRUE,     # CLRALL, CHAR, IC, DC          #
00146  M01S00142.fsescrn +++|      TRUE,  TRUE,  TRUE,  TRUE,     # IL, DL, CLRPAG, CLREOP        #
00147  M01S00143.fsescrn +++|      TRUE,  TRUE,  FALSE, FALSE,    # CLRUNP, CLREOL, POS, HOME     #
00148  M01S00144.fsescrn +++|      FALSE, FALSE, FALSE, FALSE,    # UP, DOWN, LEFT, RIGHT         #
00149  M01S00145.fsescrn +++|      FALSE, FALSE, FALSE, TRUE,     # FTAB, BTAB, RET, ERAC         #
00150  M01S00146.fsescrn +++|      TRUE,  FALSE, FALSE, TRUE,     # ERAL, EOI, RESET, FUNCTION    #
00151  M01S00147.fsescrn +++|      TRUE,  FALSE, FALSE, FALSE,    # GENERIC, BAD, NOOP, COORD     #
Line S00148 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00152  M02S00148.ns2641  ---|      FALSE, TRUE,  FALSE, FALSE     # PROTECT, FIELD, 2 FILLERS     #
00153  M01S00004.ns2641  +++|      FALSE, TRUE,  FALSE, FALSE     # PROTECT, FIELD, CLRTAB, SETTAB#
00154  M01S00149.fsescrn +++|                              ];
00155  M01S00150.fsescrn +++|    ITEM NEEDCLEAN  B(0,1,1)=[
Line S00151 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00156  M02S00151.ns2641  ---|      FALSE, FALSE, FALSE, FALSE,    # DUMMY, CHAR, IC, DC           #
00157  M01S00005.ns2641  +++|      FALSE, FALSE, FALSE, FALSE,    # CLRALL, CHAR, IC, DC          #
00158  M01S00152.fsescrn +++|      TRUE,  TRUE,  FALSE, FALSE,    # IL, DL, CLRPAG, CLREOP        #
00159  M01S00153.fsescrn +++|      FALSE, FALSE, FALSE, FALSE,    # CLRUNP, CLREOL, POS, HOME     #
00160  M01S00154.fsescrn +++|      FALSE, FALSE, FALSE, FALSE,    # UP, DOWN, LEFT, RIGHT         #
00161  M01S00155.fsescrn +++|      FALSE, FALSE, FALSE, FALSE,    # FTAB, BTAB, RET, ERAC         #
00162  M01S00156.fsescrn +++|      FALSE, TRUE,  FALSE, TRUE,     # ERAL, EOI, RESET, FUNCTION    #
00163  M01S00157.fsescrn +++|      TRUE,  FALSE, FALSE, FALSE,    # GENERIC, BAD, NOOP, COORD     #
Line S00158 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00164  M02S00158.ns2641  ---|      FALSE, TRUE,  FALSE, FALSE     # PROTECT, FIELD, 2 FILLERS     #
00165  M01S00006.ns2641  +++|      FALSE, TRUE,  FALSE, FALSE     # PROTECT, FIELD, CLRTAB, SETTAB#
00166  M01S00159.fsescrn +++|                              ];
00167  M01S00160.fsescrn +++|    ITEM NEEDUNLOCK B(0,2,1)=[
Line S00161 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00168  M02S00161.ns2641  ---|      FALSE, TRUE,  TRUE,  TRUE,     # DUMMY, CHAR, IC, DC           #
00169  M01S00007.ns2641  +++|      FALSE, TRUE,  TRUE,  TRUE,     # CLRALL, CHAR, IC, DC          #
00170  M01S00162.fsescrn +++|      TRUE,  TRUE,  FALSE, FALSE,    # IL, DL, CLRPAG, CLREOP        #
00171  M01S00163.fsescrn +++|      FALSE, TRUE,  FALSE, FALSE,    # CLRUNP, CLREOL, POS, HOME     #
00172  M01S00164.fsescrn +++|      FALSE, FALSE, FALSE, FALSE,    # UP, DOWN, LEFT, RIGHT         #
00173  M01S00165.fsescrn +++|      FALSE, FALSE, FALSE, TRUE,     # FTAB, BTAB, RET, ERAC         #
00174  M01S00166.fsescrn +++|      TRUE,  FALSE, FALSE, FALSE,    # ERAL, EOI, RESET, FUNCTION    #
00175  M01S00167.fsescrn +++|      FALSE, FALSE, FALSE, FALSE,    # GENERIC, BAD, NOOP, COORD     #
Line S00168 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00176  M02S00168.ns2641  ---|      FALSE, TRUE,  FALSE, FALSE     # PROTECT, FIELD, 2 FILLERS     #
00177  M01S00008.ns2641  +++|      FALSE, TRUE,  FALSE, FALSE     # PROTECT, FIELD, CLRTAB, SETTAB#
00178  M01S00169.fsescrn +++|                              ];
00179  M01S00170.fsescrn +++|    ITEM NEEDCURSOR B(0,3,1)=[
Line S00171 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00180  M02S00171.ns2641  ---|      FALSE, TRUE,  TRUE,  TRUE,     # DUMMY, CHAR, IC, DC           #
00181  M01S00009.ns2641  +++|      FALSE, TRUE,  TRUE,  TRUE,     # CLRALL, CHAR, IC, DC          #
00182  M01S00172.fsescrn +++|      TRUE,  TRUE,  TRUE,  TRUE,     # IL, DL, CLRPAG, CLREOP        #
00183  M01S00173.fsescrn +++|      TRUE,  TRUE,  FALSE, FALSE,    # CLRUNP, CLREOL, POS, HOME     #
00184  M01S00174.fsescrn +++|      FALSE, FALSE, FALSE, FALSE,    # UP, DOWN, LEFT, RIGHT         #
00185  M01S00175.fsescrn +++|      FALSE, FALSE, FALSE, TRUE,     # FTAB, BTAB, RET, ERAC         #
00186  M01S00176.fsescrn +++|      TRUE,  FALSE, FALSE, TRUE,     # ERAL, EOI, RESET, FUNCTION    #
00187  M01S00177.fsescrn +++|      TRUE,  FALSE, FALSE, FALSE,    # GENERIC, BAD, NOOP, COORD     #
Line S00178 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00188  M02S00178.ns2641  ---|      FALSE, TRUE,  FALSE, FALSE     # PROTECT, FIELD, 2 FILLERS     #
00189  M01S00010.ns2641  +++|      FALSE, TRUE,  FALSE, FALSE     # PROTECT, FIELD, CLRTAB, SETTAB#
00190  M01S00179.fsescrn +++|                              ];
00191  M01S00180.fsescrn +++|    ITEM NEEDLIMIT  U(0,6,6)=[
Line S00181 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00192  M02S00181.ns2641  ---|      0,     1,     1,     1,        # DUMMY, CHAR, IC, DC           #
00193  M01S00011.ns2641  +++|      0,     1,     1,     1,        # CLRALL, CHAR, IC, DC          #
00194  M01S00182.fsescrn +++|      1,     1,     1,     1,        # IL, DL, CLRPAG, CLREOP        #
00195  M01S00183.fsescrn +++|      2,     1,     1,     1,        # CLRUNP, CLREOL, POS, HOME     #
00196  M01S00184.fsescrn +++|      1,     1,     1,     1,        # UP, DOWN, LEFT, RIGHT         #
00197  M01S00185.fsescrn +++|      1,     1,     0,     1,        # FTAB, BTAB, RET, ERAC         #
00198  M01S00186.fsescrn +++|      1,     0,     0,     2,        # ERAL, EOI, RESET, FUNCTION    #
00199  M01S00187.fsescrn +++|      2,     0,     0,     0,        # GENERIC, BAD, NOOP, COORD     #
Line S00188 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00200  M02S00188.ns2641  ---|      0,     1,     0,     0         # PROTECT, FIELD, 2 FILLERS     #
00201  M01S00012.ns2641  +++|      0,     1,     0,     0         # PROTECT, FIELD, CLRTAB, SETTAB#
00202  M01S00189.fsescrn +++|                              ];
00203  M01S00190.fsescrn +++|    END
00204  M01S00191.fsescrn +++|
00205  M01S00192.fsescrn +++|  BASED ARRAY KEYLIN[0:99]; ITEM KEYLINE;
00206  M01S00193.fsescrn +++|PAGE                          # SUBROUTINES INTERNAL TO DOSCREEN #
00207  M01S00194.fsescrn +++|
00208  M01S00195.fsescrn +++|
00209  M01S00196.fsescrn +++|  PROC SETCURSOR;
00210  M01S00197.fsescrn +++|    BEGIN
00211  M01S00198.fsescrn +++|#
00212  M01S00199.fsescrn +++|**        SETCURSOR - SET CURSOR CONTROLS.
00213  M01S00200.fsescrn +++|*
00214  M01S00201.fsescrn +++|*         ENTRY  ROWTYPE[ALL], ROWSPLIT[ALL] - SETUP.
00215  M01S00202.fsescrn +++|*
00216  M01S00203.fsescrn +++|*         EXIT   XCURSOR, YCURSOR, COMPUTEDPOS - SETUP.
00217  M01S00204.fsescrn +++|*                CURCURSOR - SET IF YCURSOR ON TEXT ROW.
00218  M01S00205.fsescrn +++|#
00219  M01S00206.fsescrn +++|    XCURSOR=VTXCUR;
00220  M01S00207.fsescrn +++|    YCURSOR=VTYCUR;
00221  M01S00208.fsescrn +++|    COMPUTEDPOS=TRUE;
00222  M01S00209.fsescrn +++|    IF ROWTYPE[YCURSOR] EQ ROWST"TEXT"
00223  M01S00210.fsescrn +++|      OR ROWTYPE[YCURSOR] EQ ROWST"TITLE" THEN
00224  M01S00211.fsescrn +++|      BEGIN
00225  M01S00212.fsescrn +++|      CURCURSOR=XCURSOR+XSHIFT[ROWSPLIT[YCURSOR]];
00226  M01S00213.fsescrn +++|      CURSPLIT=ROWSPLIT[YCURSOR];
00227  M01S00214.fsescrn +++|      END
00228  M01S00215.fsescrn +++|    END                        # OF SETCURSOR    #
00229  M01S00216.fsescrn +++|
00230  M01S00217.fsescrn +++|  PROC ALIGN;
00231  M01S00218.fsescrn +++|    IOBEGIN(ALIGN)
00232  M01S00219.fsescrn +++|#
00233  M01S00220.fsescrn +++|**        ALIGN - ASSURE FILE ALIGNED WITH CURSOR.
00234  M01S00221.fsescrn +++|*
00235  M01S00222.fsescrn +++|*         ENTRY  YCURSOR - WHERE THE CURSOR IS.
00236  M01S00223.fsescrn +++|*                CURRENT - MOST RECENT FILE POSITION.
00237  M01S00224.fsescrn +++|*                ROWTYPE[ALL], ROWSPLIT[ALL] - SETUP.
00238  M01S00225.fsescrn +++|*                TOPS(1-2), BOTF(1-2) - SETUP.
00239  M01S00226.fsescrn +++|*                NUMROWS[1-2], SPLITFILE[1-2] - SETUP.
00240  M01S00227.fsescrn +++|*                PROMPTING - WHETHER NORMAL OR SPECIAL DISPLAY.
00241  M01S00228.fsescrn +++|*
00242  M01S00229.fsescrn +++|*         EXIT   ALIGNGOOD - TRUE IF PROMPTING AND SUCCEEDED
00243  M01S00230.fsescrn +++|*                    IN GETTING TO RIGHT LINE.  FALSE IF CURSOR NOT
00244  M01S00231.fsescrn +++|*                    ON TEXT OR IN AREA BEYOND LAST EXTANT LINE.
00245  M01S00232.fsescrn +++|*                CURRENT, CURFILE, CURSPLIT - WHERE WE ARE.
00246  M01S00233.fsescrn +++|*                CURF(CURFILE) - WHERE WE ARE.
00247  M01S00234.fsescrn +++|*
00248  M01S00235.fsescrn +++|*         MACROS YTOL.
00249  M01S00236.fsescrn +++|*
00250  M01S00237.fsescrn +++|*         CALLS  CLEANLINE, POSZ.
00251  M01S00238.fsescrn +++|*
00252  M01S00239.fsescrn +++|*         USES   SCRNPT1.
00253  M01S00240.fsescrn +++|#
00254  M01S00241.fsescrn +++|    ALIGNGOOD=FALSE;
00255  M01S00242.fsescrn +++|    IF ROWTYPE[YCURSOR] EQ ROWST"TEXT" OR
Line S00243 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc22
Seq #  *Modification Id* Act 
----------------------------+
00256  M02S00243.fsesc22 ---|       ROWTYPE[YCURSOR] EQ ROWST"TITLE" THEN
00257  M01S00001.fsesc22 +++|      (ROWTYPE[YCURSOR] EQ ROWST"TITLE" AND
00258  M01S00002.fsesc22 +++|       ROWSPLIT[YCURSOR] EQ CURSPLIT) THEN
00259  M01S00244.fsescrn +++|      BEGIN
00260  M01S00245.fsescrn +++|      EXTENDSIZE=0;
00261  M01S00246.fsescrn +++|      CURSPLIT=ROWSPLIT[YCURSOR];
00262  M01S00247.fsescrn +++|      CURSPLIT=MIN(MAX(CURSPLIT,1),2);
00263  M01S00248.fsescrn +++|      SCRNPT1=YTOL(YCURSOR,CURSPLIT);
00264  M01S00249.fsescrn +++|      IF SCRNPT1 LQ MIN(TOPS(CURSPLIT)+NUMROWS[CURSPLIT],
00265  M01S00250.fsescrn +++|        BOTF(SPLITFILE[CURSPLIT])-1) THEN
00266  M01S00251.fsescrn +++|        BEGIN
00267  M01S00252.fsescrn +++|        IF NOT PROMPTING AND ROWTYPE[YCURSOR] EQ
00268  M01S00253.fsescrn +++|          ROWST"TEXT" THEN ALIGNGOOD=TRUE;
00269  M01S00254.fsescrn +++|        IF CURRENT NQ SCRNPT1
00270  M01S00255.fsescrn +++|           OR CURFILE NQ SPLITFILE[CURSPLIT] THEN
00271  M01S00256.fsescrn +++|          BEGIN
00272  M01S00257.fsescrn +++|          CLEANLINE;
00273  M01S00258.fsescrn +++|          CURF(CURFILE)=CURRENT;
00274  M01S00259.fsescrn +++|          POSZ(SCRNPT1);
00275  M01S00260.fsescrn +++|          CURFILE=SPLITFILE[CURSPLIT];
00276  M01S00261.fsescrn +++|          END
00277  M01S00262.fsescrn +++|        END
00278  M01S00263.fsescrn +++|      ELSE
00279  M01S00264.fsescrn +++|        BEGIN
00280  M01S00265.fsescrn +++|        CLEANLINE;
00281  M01S00266.fsescrn +++|        CURFILE=SPLITFILE[CURSPLIT];
00282  M01S00267.fsescrn +++|        POSZ(BOTF(CURFILE)-1);
00283  M01S00268.fsescrn +++|        CURF(CURFILE)=CURRENT;
00284  M01S00269.fsescrn +++|        EXTENDSIZE=SCRNPT1-BOTF(CURFILE)+1;
00285  M01S00270.fsescrn +++|        END
00286  M01S00271.fsescrn +++|      END
00287  M01S00272.fsescrn +++|    IOEND                   # OF ALIGN         #
00288  M01S00273.fsescrn +++|
00289  M01S00274.fsescrn +++|  PROC EXTEND;
00290  M01S00275.fsescrn +++|    IOBEGIN(EXTEND)
00291  M01S00276.fsescrn +++|#
00292  M01S00277.fsescrn +++|**        EXTEND - LENGTHEN FILE TO MATCH CURSOR ALIGNMENT.
00293  M01S00278.fsescrn +++|*
00294  M01S00279.fsescrn +++|*         ENTRY  ALIGN ROUTINE RECENTLY CALLED.
00295  M01S00280.fsescrn +++|*                ALIGNGOOD - RESULT OF ALIGN ROUTINE.
00296  M01S00281.fsescrn +++|*                ROWTYPE[ALL], ROWSPLIT[ALL] - SETUP.
00297  M01S00282.fsescrn +++|*                BOTF(1-2), SPLITFILE[1-2] - SETUP.
00298  M01S00283.fsescrn +++|*                CURRENT - MOST RECENT FILE POSITION.
00299  M01S00284.fsescrn +++|*                PROMPTING - NORMAL OR SPECIAL DISPLAY.
00300  M01S00285.fsescrn +++|*
00301  M01S00286.fsescrn +++|*         EXIT   ALIGNGOOD - ASSURED TRUE UNLESS PROMPTING.
00302  M01S00287.fsescrn +++|*                CURSPLIT, CURRENT, CURFILE - WHERE WE ARE.
00303  M01S00288.fsescrn +++|*                CURF(CURFILE) - WHERE WE WERE BEFORE CHANGING CURFILE.
00304  M01S00289.fsescrn +++|*                HARDFN - FALSE IF WE EXTENDED THE FILE.
00305  M01S00290.fsescrn +++|*                FILE IS POSSIBLY LONGER.
00306  M01S00291.fsescrn +++|*
00307  M01S00292.fsescrn +++|*         MACROS YTOL.
00308  M01S00293.fsescrn +++|*
00309  M01S00294.fsescrn +++|*         CALLS  CLEANLINE, POSZ, INSZ.
00310  M01S00295.fsescrn +++|*
00311  M01S00296.fsescrn +++|*         USES   LIN.
00312  M01S00297.fsescrn +++|*
00313  M01S00298.fsescrn +++|*         NOTE   ALGORITHM ASSUMES CURSOR INDICATES FILE EXTENSION
00314  M01S00299.fsescrn +++|*                ANYTIME IT IS ON A TEXT ROW BUT ALIGNGOOD IS OFF AND
00315  M01S00300.fsescrn +++|*                THE FILE POSITION EXCEEDS BOTF(SPLITFILE[CURSPLIT]).
00316  M01S00301.fsescrn +++|#
00317  M01S00302.fsescrn +++|    IF NOT ALIGNGOOD THEN
00318  M01S00303.fsescrn +++|      BEGIN
00319  M01S00304.fsescrn +++|      IF ROWTYPE[YCURSOR] EQ ROWST"TEXT" THEN
00320  M01S00305.fsescrn +++|        BEGIN
00321  M01S00306.fsescrn +++|        CURSPLIT=ROWSPLIT[YCURSOR];
00322  M01S00307.fsescrn +++|        CURSPLIT=MIN(MAX(CURSPLIT,1),2);
00323  M01S00308.fsescrn +++|        IF YTOL(YCURSOR,CURSPLIT) GQ BOTF(SPLITFILE[CURSPLIT]) THEN
00324  M01S00309.fsescrn +++|          BEGIN
00325  M01S00310.fsescrn +++|          CLEANLINE;
00326  M01S00311.fsescrn +++|          CURF(CURFILE)=CURRENT;
00327  M01S00312.fsescrn +++|          POSZ(BOTF(SPLITFILE[CURSPLIT])-1);
00328  M01S00313.fsescrn +++|          LINE[0]=NULLIN;
00329  M01S00314.fsescrn +++|          HARDFN=FALSE;
00330  M01S00315.fsescrn +++|          FOR SCRNPT4=LTOY(CURRENT,CURSPLIT)+1 STEP 1
00331  M01S00316.fsescrn +++|            UNTIL YCURSOR DO INSZ;
00332  M01S00317.fsescrn +++|          IF NOT PROMPTING THEN ALIGNGOOD=TRUE;
00333  M01S00318.fsescrn +++|          CURFILE=SPLITFILE[CURSPLIT];
00334  M01S00319.fsescrn +++|          END
00335  M01S00320.fsescrn +++|        END
00336  M01S00321.fsescrn +++|      END
00337  M01S00322.fsescrn +++|    IOEND                      # OF EXTEND        #
00338  M01S00323.fsescrn +++|
00339  M01S00324.fsescrn +++|  PROC CLEANLINE;
00340  M01S00325.fsescrn +++|    IOBEGIN(CLEANLINE)
00341  M01S00326.fsescrn +++|#
00342  M01S00327.fsescrn +++|**        CLEANLINE - CLEAN UP LINE BUFFER AND FILE BEFORE MOVING.
00343  M01S00328.fsescrn +++|*
00344  M01S00329.fsescrn +++|*         ENTRY  LINECHANGED - LINE BUFFER RECENTLY ALTERED.
00345  M01S00330.fsescrn +++|*                LIN - THE LINE BUFFER.
00346  M01S00331.fsescrn +++|*                CURRENT - WHERE WE ARE IN THE FILE.
00347  M01S00332.fsescrn +++|*                SOFTTAB - TRUE IF ANY CHANGE WAS SOFT-TAB OVERSTRIKE.
00348  M01S00333.fsescrn +++|*                CURFILE - WHICH FILE BRACKET WE ARE IN.
00349  M01S00334.fsescrn +++|*                CURSPLIT - WHICH SCREEN BRACKET WE ARE IN.
00350  M01S00335.fsescrn +++|*                NUMBERED[CURFILE] - SEQUENCING MODE FOR THIS FILE.
00351  M01S00336.fsescrn +++|*                WIDTH - USERS LINE WIDTH THRESHHOLD.
00352  M01S00337.fsescrn +++|*
00353  M01S00338.fsescrn +++|*         EXIT   ANY CHANGES TO LINE BUFFER ARE IN WORKFILE.
00354  M01S00339.fsescrn +++|*                SEQUENCE NUMBERS ADJUSTED TO NUMWIDTH.
00355  M01S00340.fsescrn +++|*                OUT-OF-SEQUENCE NUMBERS BLANKED OUT.
00356  M01S00341.fsescrn +++|*                LINECHANGED, SOFTTAB - CLEARED.
00357  M01S00342.fsescrn +++|*                ERRSTRING - POSSIBLE WIDE LINE WARNING.
00358  M01S00343.fsescrn +++|*                ROWPAINT[THIS LINE] - POSSIBLY TRUE.
00359  M01S00344.fsescrn +++|*
00360  M01S00345.fsescrn +++|*         MACROS SETCHAR, LTOY.
00361  M01S00346.fsescrn +++|*
00362  M01S00347.fsescrn +++|*         CALLS  COPYLIN, DOTAB, TRIMPAD, REPX, GETLNUM, SETLNUM,
00363  M01S00348.fsescrn +++|*                PUSH, BAKNUM, POP, FWDNUM, LENGTH.
00364  M01S00349.fsescrn +++|*
00365  M01S00350.fsescrn +++|*         USES   WIDTHFOUND, LINENO, SCRNPT2, SCRNPT3.
00366  M01S00351.fsescrn +++|#
00367  M01S00352.fsescrn +++|    IF LINECHANGED THEN
00368  M01S00353.fsescrn +++|      BEGIN
00369  M01S00354.fsescrn +++|      LINECHANGED=FALSE;
00370  M01S00355.fsescrn +++|      IF SOFTTAB THEN
00371  M01S00356.fsescrn +++|        BEGIN
00372  M01S00357.fsescrn +++|        SOFTTAB=FALSE;
00373  M01S00358.fsescrn +++|        COPYLIN(LIN,TTYLIN);
00374  M01S00359.fsescrn +++|        DOTAB(NUMWIDBLK,NUMWIDBLK,NUMWIDBLK);
00375  M01S00360.fsescrn +++|        COPYLIN(TTYLIN,LIN);
00376  M01S00361.fsescrn +++|        END
00377  M01S00362.fsescrn +++|      TRIMPAD;
00378  M01S00363.fsescrn +++|      REPX;
00379  M01S00364.fsescrn +++|      IF NUMBERED[CURFILE] NQ 0 THEN
00380  M01S00365.fsescrn +++|        BEGIN                 # ASSURE ASCENDING NUMBERS    #
00381  M01S00366.fsescrn +++|        GETLNUM;             # SEE IF ANY NUMBER TO FIX    #
00382  M01S00367.fsescrn +++|        IF WIDTHFOUND NQ 0 THEN
00383  M01S00368.fsescrn +++|          BEGIN
00384  M01S00369.fsescrn +++|          IF WIDTHFOUND NQ NUMWIDTH THEN  # NOT STANDARD   #
00385  M01S00370.fsescrn +++|            BEGIN
00386  M01S00371.fsescrn +++|            SETLNUM;
00387  M01S00372.fsescrn +++|            HARDFN=FALSE;
00388  M01S00373.fsescrn +++|            REPX;
00389  M01S00374.fsescrn +++|            END
00390  M01S00375.fsescrn +++|          ELSE                       # DIGITS OK BUT CHECK BLANK #
00391  M01S00376.fsescrn +++|            BEGIN
00392  M01S00377.fsescrn +++|            GETCHAR(LINE,NUMWIDTH,SCRNPT2);
00393  M01S00378.fsescrn +++|            IF BLANKS NQ 0 AND SCRNPT2 NQ CBLANK THEN
00394  M01S00379.fsescrn +++|              BEGIN
00395  M01S00380.fsescrn +++|              RSHIFT(LIN,NUMWIDTH,1);
00396  M01S00381.fsescrn +++|              SETCHAR(LINE,NUMWIDTH,CBLANK);
00397  M01S00382.fsescrn +++|              END
00398  M01S00383.fsescrn +++|            END
00399  M01S00384.fsescrn +++|          SCRNPT2=LINENO;    # VERIFY BOUNDARIES #
00400  M01S00385.fsescrn +++|          PUSH;
00401  M01S00386.fsescrn +++|          BAKNUM;
00402  M01S00387.fsescrn +++|          POP;
00403  M01S00388.fsescrn +++|          SCRNPT3=LINENO;
00404  M01S00389.fsescrn +++|          PUSH;
00405  M01S00390.fsescrn +++|          FWDNUM;
00406  M01S00391.fsescrn +++|          POP;
00407  M01S00392.fsescrn +++|          IF SCRNPT2 LQ SCRNPT3 OR SCRNPT2 GQ LINENO THEN
00408  M01S00393.fsescrn +++|            BEGIN             # NOT ASCEND SO BLANKOUT      #
00409  M01S00394.fsescrn +++|            FOR SCRNPT2=1 STEP 1 UNTIL NUMWIDTH
00410  M01S00395.fsescrn +++|              DO SETCHAR(LINE,SCRNPT2-1,CBLANK);
00411  M01S00396.fsescrn +++|            END
00412  M01S00397.fsescrn +++|          HARDFN=FALSE;
00413  M01S00398.fsescrn +++|          REPX;
00414  M01S00399.fsescrn +++|          END
00415  M01S00400.fsescrn +++|        END
00416  M01S00401.fsescrn +++|      IF LENGTH(LIN) GR WIDTH+NUMWIDBLK AND ERRSTRING EQ " $" THEN
00417  M01S00402.fsescrn +++|        BEGIN
00418  M01S00403.fsescrn +++|        ERRSTRING="WIDE LINE$";
00419  M01S00404.fsescrn +++|        END
00420  M01S00405.fsescrn +++|      END
00421  M01S00406.fsescrn +++|    IOEND                     # OF CLEANLINE      #
00422  M01S00407.fsescrn +++|
00423  M01S00408.fsescrn +++|
00424  M01S00409.fsescrn +++|  PROC REJECT;
00425  M01S00410.fsescrn +++|# TITLE REJECT - REJECT CHANGE. #
00426  M01S00411.fsescrn +++|
00427  M01S00412.fsescrn +++|    BEGIN  # REJECT #
00428  M01S00413.fsescrn +++|
00429  M01S00414.fsescrn +++|#
00430  M01S00415.fsescrn +++|**        REJECT - REJECT CHANGE.
00431  M01S00416.fsescrn +++|*
00432  M01S00417.fsescrn +++|*         A KEYBOARD CHANGE WAS MADE ON A ROW THAT IN NOT ALLOWED.
00433  M01S00418.fsescrn +++|*         FLAG THE ROW FOR REPAINT AND IF ITS A TITLE ROW, INDICATE
00434  M01S00419.fsescrn +++|*         A TOTAL REPAINT.
00435  M01S00420.fsescrn +++|*
00436  M01S00421.fsescrn +++|*         PROC REJECT
00437  M01S00422.fsescrn +++|#
00438  M01S00423.fsescrn +++|
00439  M01S00424.fsescrn +++|    ROWPAINT[YCURSOR]=TRUE;
00440  M01S00425.fsescrn +++|    IF ROWTYPE[YCURSOR] EQ ROWST"TITLE" THEN
00441  M01S00426.fsescrn +++|      BEGIN
00442  M01S00427.fsescrn +++|      IF ROWSPLIT[YCURSOR] EQ 1 THEN TITLE1LINE[0]=NULLIN;
00443  M01S00428.fsescrn +++|      ELSE TITLE2LINE[0]=NULLIN;
00444  M01S00429.fsescrn +++|      END
00445  M01S00430.fsescrn +++|    IF ROWTYPE[YCURSOR] EQ ROWST"TITLE"
00446  M01S00431.fsescrn +++|      OR ROWTYPE[YCURSOR] EQ ROWST"LABEL"
00447  M01S00432.fsescrn +++|      OR ROWTYPE[YCURSOR] EQ ROWST"RESPONSE" THEN
00448  M01S00433.fsescrn +++|      BEGIN
00449  M01S00434.fsescrn +++|      ERRSTRING = "CHANGES OUTSIDE OF TEXT AREA DISCARDED$";
00450  M01S00435.fsescrn +++|      END
00451  M01S00436.fsescrn +++|
00452  M01S00437.fsescrn +++|    END  # REJECT #
00453  M01S00438.fsescrn +++|
00454  M01S00439.fsescrn +++|
00455  M01S00440.fsescrn +++|  PROC MOVETEXT(TEXTLIN,OFFSET,FENCE);
00456  M01S00441.fsescrn +++|    BEGIN
00457  M01S00442.fsescrn +++|#
00458  M01S00443.fsescrn +++|**        MOVETEXT - UPDATE LINE BUFFER WITH OVERSTRIKE.
00459  M01S00444.fsescrn +++|*
00460  M01S00445.fsescrn +++|*         ENTRY  TEXTLIN - WHICH LINE BUFFER TO UPDATE.
00461  M01S00446.fsescrn +++|*                XCURSOR, OFFSET - WHERE TO UPDATE.
00462  M01S00447.fsescrn +++|*                CURSPLIT, YCURSOR - WHERE WE ARE.
00463  M01S00448.fsescrn +++|*                FENCE - RIGHT HAND BOUNDARY FOR CHANGES.
00464  M01S00449.fsescrn +++|*                ASCII[CURFILE] - INDICATES CASE SUPPRESSION.
00465  M01S00450.fsescrn +++|*                TABCHAR - SOFT TAB CHARACTER.
00466  M01S00451.fsescrn +++|*                VTCHAR - THE CHARACTER TO OVERSTRIKE.
00467  M01S00452.fsescrn +++|*
00468  M01S00453.fsescrn +++|*         EXIT   THE CHARACTER IS IN PLACE IF POSSIBLE.
00469  M01S00454.fsescrn +++|*                SOFTTAB - POSSIBLY TRUE.
00470  M01S00455.fsescrn +++|*                ROWPAINT[YCURSOR] - POSSIBLY TRUE.
00471  M01S00456.fsescrn +++|*
00472  M01S00457.fsescrn +++|*         MACROS SETCHAR.
00473  M01S00458.fsescrn +++|*
00474  M01S00459.fsescrn +++|*         CALLS  EXTENDC, DSPLCOD.
00475  M01S00460.fsescrn +++|#
00476  M01S00461.fsescrn +++|
00477  M01S00462.fsescrn +++|    ARRAY TEXTLIN[0:99];
00478  M01S00463.fsescrn +++|      BEGIN # ARRAY TEXTLIN #
00479  M01S00464.fsescrn +++|      ITEM TEXTLINE   I;             # LINE BUFFER TO UPDATE #
00480  M01S00465.fsescrn +++|      END # ARRAY TEXTLIN #
00481  M01S00466.fsescrn +++|
00482  M01S00467.fsescrn +++|    ITEM OFFSET     I;               # COLUMN OFFSET #
00483  M01S00468.fsescrn +++|    ITEM FENCE      I;               # RIGHT SIDE BOUNDARY #
00484  M01S00469.fsescrn +++|    ITEM TMP1       I;               # TEMPORARY STORAGE #
00485  M01S00470.fsescrn +++|    ITEM TMP2       I;               # TEMPORARY STORAGE #
00486  M01S00471.fsescrn +++|
00487  M01S00472.fsescrn +++|    TMP2=XCURSOR+OFFSET;
00488  M01S00473.fsescrn +++|    IF TMP2 GQ FENCE THEN RETURN;
00489  M01S00474.fsescrn +++|    EXTENDC(TEXTLIN,TMP2);
00490  M01S00475.fsescrn +++|    TMP1=XLTXPINT[VTCHAR];
00491  M01S00476.fsescrn +++|    IF ASCII[CURFILE] LQ 1 THEN      # SUPPRESS LOWER CASE #
00492  M01S00477.fsescrn +++|      BEGIN
00493  M01S00478.fsescrn +++|      # NEXT CODE IS DEPENDENT ON PRECISE VALUES OF INTERNAL CHARSET #
00494  M01S00479.fsescrn +++|      CONTROL IFNQ CLEFTCURL,O"133"; DEFERROR; CONTROL FI;
00495  M01S00480.fsescrn +++|      CONTROL IFNQ CVERTICAL,O"134"; DEFERROR; CONTROL FI;
00496  M01S00481.fsescrn +++|      CONTROL IFNQ CRITECURL,O"135"; DEFERROR; CONTROL FI;
00497  M01S00482.fsescrn +++|      CONTROL IFNQ CTILDE,O"136"; DEFERROR; CONTROL FI;
00498  M01S00483.fsescrn +++|      CONTROL IFNQ CGRAVE,O"100"; DEFERROR; CONTROL FI;
00499  M01S00484.fsescrn +++|      CONTROL IFNQ CCOLON,O"000"; DEFERROR; CONTROL FI;
00500  M01S00485.fsescrn +++|      # ISSUE WARNING FOR NON-EXISTENT DISPLAY CODE CHARACTERS #
00501  M01S00486.fsescrn +++|      IF (TMP1 GQ O"133" AND TMP1 LQ O"136")
00502  M01S00487.fsescrn +++|        OR (TMP1 EQ O"100") THEN ROWPAINT[YCURSOR]=TRUE;
00503  M01S00488.fsescrn +++|      IF (B<00,01>MEM[CSMR] EQ 0)
00504  M01S00489.fsescrn +++|        AND (TMP1 EQ O"000") THEN ROWPAINT[YCURSOR]=TRUE;
00505  M01S00490.fsescrn +++|      DSPLCOD(TMP1);                 # SUPPRESS LOWER CASE #
00506  M01S00491.fsescrn +++|      END
00507  M01S00492.fsescrn +++|    SETCHAR(TEXTLINE,TMP2,TMP1);
00508  M01S00493.fsescrn +++|    IF TMP1 EQ TABCHAR THEN
00509  M01S00494.fsescrn +++|      BEGIN
00510  M01S00495.fsescrn +++|      SOFTTAB=TRUE;
00511  M01S00496.fsescrn +++|      ROWPAINT[YCURSOR]=TRUE;
00512  M01S00497.fsescrn +++|      END
00513  M01S00498.fsescrn +++|    END  # MOVETEXT #
00514  M01S00499.fsescrn +++|
00515  M01S00500.fsescrn +++|
00516  M01S00501.fsescrn +++|  PROC INSTEXT(TEXTLIN,OFFSET,FENCE);
00517  M01S00502.fsescrn +++|    BEGIN
00518  M01S00503.fsescrn +++|#
00519  M01S00504.fsescrn +++|**        INSTEXT - OPEN UP SPACE FOR CHARACTER INSERTION.
00520  M01S00505.fsescrn +++|*
00521  M01S00506.fsescrn +++|*         ENTRY  SAME AS MOVETEXT ROUTINE.
00522  M01S00507.fsescrn +++|*
00523  M01S00508.fsescrn +++|*         EXIT   THE CHARACTER SPACE IS OPENED UP.
00524  M01S00509.fsescrn +++|*
00525  M01S00510.fsescrn +++|*         MACROS SETCHAR.
00526  M01S00511.fsescrn +++|*
00527  M01S00512.fsescrn +++|*         CALLS  RSHIFT, LSHIFT.
00528  M01S00513.fsescrn +++|#
00529  M01S00514.fsescrn +++|
00530  M01S00515.fsescrn +++|    ARRAY TEXTLIN[0:99];
00531  M01S00516.fsescrn +++|      BEGIN # ARRAY TEXTLIN #
00532  M01S00517.fsescrn +++|      ITEM TEXTLINE   I;             # LINE BUFFER TO UPDATE #
00533  M01S00518.fsescrn +++|      END # ARRAY TEXTLIN #
00534  M01S00519.fsescrn +++|
00535  M01S00520.fsescrn +++|    ITEM OFFSET     I;               # COLUMN OFFSET #
00536  M01S00521.fsescrn +++|    ITEM FENCE      I;               # RIGHT SIDE BOUNDARY #
00537  M01S00522.fsescrn +++|    ITEM TMP1       I;               # TEMPORARY STORAGE #
00538  M01S00523.fsescrn +++|    ITEM TMP2       I;               # TEMPORARY STORAGE #
00539  M01S00524.fsescrn +++|
00540  M01S00525.fsescrn +++|    TMP1=XCURSOR+OFFSET;
00541  M01S00526.fsescrn +++|    IF TMP1 GQ FENCE THEN RETURN;
00542  M01S00527.fsescrn +++|    RSHIFT(TEXTLIN,TMP1,1);
00543  M01S00528.fsescrn +++|    TMP2=XLTXPINT[VTCHAR];
00544  M01S00529.fsescrn +++|    IF ASCII[CURFILE] LQ 1 THEN      # SUPPRESS LOWER CASE #
00545  M01S00530.fsescrn +++|      BEGIN
00546  M01S00531.fsescrn +++|      # NEXT CODE IS DEPENDENT ON PRECISE VALUES OF INTERNAL CHARSET #
00547  M01S00532.fsescrn +++|      CONTROL IFNQ CLEFTCURL,O"133"; DEFERROR; CONTROL FI;
00548  M01S00533.fsescrn +++|      CONTROL IFNQ CVERTICAL,O"134"; DEFERROR; CONTROL FI;
00549  M01S00534.fsescrn +++|      CONTROL IFNQ CRITECURL,O"135"; DEFERROR; CONTROL FI;
00550  M01S00535.fsescrn +++|      CONTROL IFNQ CTILDE,O"136"; DEFERROR; CONTROL FI;
00551  M01S00536.fsescrn +++|      CONTROL IFNQ CGRAVE,O"100"; DEFERROR; CONTROL FI;
00552  M01S00537.fsescrn +++|      CONTROL IFNQ CCOLON,O"000"; DEFERROR; CONTROL FI;
00553  M01S00538.fsescrn +++|      # ISSUE WARNING FOR NON-EXISTENT DISPLAY CODE CHARACTERS #
00554  M01S00539.fsescrn +++|      IF (TMP2 GQ O"133" AND TMP2 LQ O"136")
00555  M01S00540.fsescrn +++|        OR (TMP2 EQ O"100") THEN ROWPAINT[YCURSOR]=TRUE;
00556  M01S00541.fsescrn +++|      IF (B<00,01>MEM[CSMR] EQ 0)
00557  M01S00542.fsescrn +++|        AND (TMP2 EQ O"000") THEN ROWPAINT[YCURSOR]=TRUE;
00558  M01S00543.fsescrn +++|      DSPLCOD(TMP2);                 # SUPPRESS LOWER CASE #
00559  M01S00544.fsescrn +++|      END
00560  M01S00545.fsescrn +++|    SETCHAR(TEXTLINE,TMP1,TMP2);
00561  M01S00546.fsescrn +++|    IF TMP2 EQ TABCHAR THEN
00562  M01S00547.fsescrn +++|      BEGIN
00563  M01S00548.fsescrn +++|      SOFTTAB=TRUE;
00564  M01S00549.fsescrn +++|      ROWPAINT[YCURSOR]=TRUE;
00565  M01S00550.fsescrn +++|      END
00566  M01S00551.fsescrn +++|    IF FENCE LS BUFCM1 THEN
00567  M01S00552.fsescrn +++|      BEGIN
00568  M01S00553.fsescrn +++|      LSHIFT(TEXTLIN,EDITFIELD+1,1);
00569  M01S00554.fsescrn +++|      END
00570  M01S00555.fsescrn +++|    END  # INSTEXT #
00571  M01S00556.fsescrn +++|
00572  M01S00557.fsescrn +++|
00573  M01S00558.fsescrn +++|  PROC DELTEXT(TEXTLIN,OFFSET,FENCE);
00574  M01S00559.fsescrn +++|    BEGIN
00575  M01S00560.fsescrn +++|#
00576  M01S00561.fsescrn +++|**        DELTEXT - DELETE ONE CHARACTER.
00577  M01S00562.fsescrn +++|*
00578  M01S00563.fsescrn +++|*         ENTRY  SAME AS MOVETEXT.
00579  M01S00564.fsescrn +++|*
00580  M01S00565.fsescrn +++|*         EXIT   TEXT SHIFTED TO CLOSEUP ONE PLACE.
00581  M01S00566.fsescrn +++|*
00582  M01S00567.fsescrn +++|*         MACROS SETCHAR.
00583  M01S00568.fsescrn +++|*
00584  M01S00569.fsescrn +++|*         CALLS  LSHIFT, RSHIFT.
00585  M01S00570.fsescrn +++|#
00586  M01S00571.fsescrn +++|
00587  M01S00572.fsescrn +++|    ARRAY TEXTLIN[0:99];
00588  M01S00573.fsescrn +++|      BEGIN # ARRAY TEXTLIN #
00589  M01S00574.fsescrn +++|      ITEM TEXTLINE   I;             # LINE BUFFER TO UPDATE #
00590  M01S00575.fsescrn +++|      END # ARRAY TEXTLIN #
00591  M01S00576.fsescrn +++|
00592  M01S00577.fsescrn +++|    ITEM OFFSET     I;               # COLUMN OFFSET #
00593  M01S00578.fsescrn +++|    ITEM FENCE      I;               # RIGHT SIDE BOUNDARY #
00594  M01S00579.fsescrn +++|    ITEM TMP1       I;               # TEMPORARY STORAGE #
00595  M01S00580.fsescrn +++|
00596  M01S00581.fsescrn +++|    TMP1=XCURSOR+OFFSET;
00597  M01S00582.fsescrn +++|    IF TMP1 GQ FENCE THEN RETURN;
00598  M01S00583.fsescrn +++|    LSHIFT(TEXTLIN,TMP1+1,1);
00599  M01S00584.fsescrn +++|    IF FENCE LS BUFCM1 THEN
00600  M01S00585.fsescrn +++|      BEGIN
00601  M01S00586.fsescrn +++|      RSHIFT(TEXTLIN,EDITFIELD-1,1);
00602  M01S00587.fsescrn +++|      SETCHAR(TEXTLINE,EDITFIELD-1,CBLANK);
00603  M01S00588.fsescrn +++|      END
00604  M01S00589.fsescrn +++|    END  # DELTEXT #
00605  M01S00590.fsescrn +++|
00606  M01S00591.fsescrn +++|
00607  M01S00592.fsescrn +++|  PROC DSERRJMP(STR);        # DOSCREEN ERROR JUMP         #
00608  M01S00593.fsescrn +++|    IOBEGIN(DSERRJMP)
00609  M01S00594.fsescrn +++|#
00610  M01S00595.fsescrn +++|**        DSERRJMP - ERROR JUMP FROM DOSCREEN.
00611  M01S00596.fsescrn +++|*
00612  M01S00597.fsescrn +++|*         ENTRY  STR - ERROR MESSAGE.
00613  M01S00598.fsescrn +++|*                PROMPTING - NORMAL OR SPECIAL DISPLAY.
00614  M01S00599.fsescrn +++|*                COMMANDROW - SETUP.
00615  M01S00600.fsescrn +++|*
00616  M01S00601.fsescrn +++|*         EXIT   VIA ERRJUMP.
00617  M01S00602.fsescrn +++|*                CMDLIN - NULLED OUT.
00618  M01S00603.fsescrn +++|*                ERRSTRING - CONTAINS MESSAGE.
00619  M01S00604.fsescrn +++|*                TOKENPOS - MINUS ONE FOR ERRJUMP.
00620  M01S00605.fsescrn +++|*                ROWPAINT[COMMANDROW] - TRUE.
00621  M01S00606.fsescrn +++|*                ROWPAINT[ALL] - POSSIBLY TRUE.
00622  M01S00607.fsescrn +++|*
00623  M01S00608.fsescrn +++|*         CALLS  PAINTALL, VDTBEL, VDTDRN, ERRJUMP.
00624  M01S00609.fsescrn +++|*
00625  M01S00610.fsescrn +++|*         NOTE   THIS ROUTINE UNCONDITIONALLY USES ERRJUMP, THUS
00626  M01S00611.fsescrn +++|*                CONTROL WILL NEVER RETURN TO THE CALLER.  DSERRJMP
00627  M01S00612.fsescrn +++|*                IS THE ONLY WAY TO CALL ERRJUMP FROM DOSCREEN OR
00628  M01S00613.fsescrn +++|*                ANY OF ITS INTERNAL ROUTINES.
00629  M01S00614.fsescrn +++|#
00630  M01S00615.fsescrn +++|    ITEM STR C(40);
00631  M01S00616.fsescrn +++|    ERRSTRING=STR;
00632  M01S00617.fsescrn +++|    ROWPAINT[COMMANDROW]=TRUE;
00633  M01S00618.fsescrn +++|    IF PROMPTING THEN PAINTALL;
00634  M01S00619.fsescrn +++|    VDTBEL;
00635  M01S00620.fsescrn +++|    VDTDRN;                 # ASSURE INPUT BUFFER CLEAN   #
00636  M01S00621.fsescrn +++|    TOKENPOS=-1;             # ASSURE OLD CURSOR POSITION  #
00637  M01S00622.fsescrn +++|    CMDLINE[0]=NULLIN;
00638  M01S00623.fsescrn +++|    ERRJUMP(ERRSTRING);      # CONTROL DOES NOT RETURN     #
00639  M01S00624.fsescrn +++|    IOEND                     # OF DSERRJMP       #
00640  M01S00625.fsescrn +++|
00641  M01S00626.fsescrn +++|  PROC SETCMD(CMD);
00642  M01S00627.fsescrn +++|    BEGIN
00643  M01S00628.fsescrn +++|#
00644  M01S00629.fsescrn +++|**        SETCMD - ADD CHARACTER STRING TO COMMAND BUFFER.
00645  M01S00630.fsescrn +++|*
00646  M01S00631.fsescrn +++|*         ENTRY  CMD - STRING TO BE ADDED, 10 CHARS IN DISPLAY CODE.
00647  M01S00632.fsescrn +++|*                CMDLIN - ANY EXISTING COMMAND CONTENT. (INTERNAL CODE)
00648  M01S00633.fsescrn +++|*
00649  M01S00634.fsescrn +++|*         EXIT   CMDLIN - UPDATED.
00650  M01S00635.fsescrn +++|*
00651  M01S00636.fsescrn +++|*         MACROS SETCHAR.
00652  M01S00637.fsescrn +++|*
00653  M01S00638.fsescrn +++|*         CALLS  LENGTH.
00654  M01S00639.fsescrn +++|*
00655  M01S00640.fsescrn +++|*         USES   SCRNPT3, SCRNPT4, SCRNPT5.
00656  M01S00641.fsescrn +++|#
00657  M01S00642.fsescrn +++|    ITEM CMD C(10);
00658  M01S00643.fsescrn +++|    SCRNPT4=LENGTH(CMDLIN);
00659  M01S00644.fsescrn +++|    IF SCRNPT4+10 LS BUFCM1 THEN
00660  M01S00645.fsescrn +++|      BEGIN
00661  M01S00646.fsescrn +++|      SETCHAR(CMDLINE,SCRNPT4,CSEMCOLON);
00662  M01S00647.fsescrn +++|      FOR SCRNPT5=0 STEP 1 UNTIL 9 DO
00663  M01S00648.fsescrn +++|        BEGIN
00664  M01S00649.fsescrn +++|        SCRNPT3=XLTDSPINT[C<SCRNPT5,1>CMD];
00665  M01S00650.fsescrn +++|        SETCHAR(CMDLINE,SCRNPT4+1+SCRNPT5,SCRNPT3);
00666  M01S00651.fsescrn +++|        END
00667  M01S00652.fsescrn +++|      SETCHAR(CMDLINE,SCRNPT4+11,CENDLINE);
00668  M01S00653.fsescrn +++|      END
00669  M01S00654.fsescrn +++|    END                       # OF SETCMD         #
00670  M01S00655.fsescrn +++|
00671  M01S00656.fsescrn +++|
00672  M01S00657.fsescrn +++|  PROC ADDTOCMD;
00673  M01S00658.fsescrn +++|    BEGIN
00674  M01S00659.fsescrn +++|    # ADD TEXT FROM KEYLINE TO CMDLINE #
00675  M01S00660.fsescrn +++|    SCRNPT3=LENGTH(CMDLIN);
00676  M01S00661.fsescrn +++|    SCRNPT2=LENGTH(KEYLIN);
00677  M01S00662.fsescrn +++|    IF SCRNPT3+SCRNPT2 LS BUFCM1 THEN
00678  M01S00663.fsescrn +++|      BEGIN
00679  M01S00664.fsescrn +++|      SETCHAR(CMDLINE,SCRNPT3,CSEMCOLON);
00680  M01S00665.fsescrn +++|      FOR SCRNPT4=0 STEP 1 UNTIL SCRNPT2 DO
00681  M01S00666.fsescrn +++|        BEGIN
00682  M01S00667.fsescrn +++|        GETCHAR(KEYLINE,SCRNPT4,SCRNPT5);
00683  M01S00668.fsescrn +++|        SETCHAR(CMDLINE,SCRNPT3+SCRNPT4+1,SCRNPT5);
00684  M01S00669.fsescrn +++|        IF (SCRNPT5 EQ CAMPER) AND (NOT PROMPTING)
00685  M01S00670.fsescrn +++|          AND (EXPANDAT LS 0) THEN EXPANDAT=SCRNPT3+SCRNPT4+1;
00686  M01S00671.fsescrn +++|        END
00687  M01S00672.fsescrn +++|      END
00688  M01S00673.fsescrn +++|    END  # ADDTOCMD #
00689  M01S00674.fsescrn +++|
00690  M01S00675.fsescrn +++|
00691  M01S00676.fsescrn +++|  PROC INCRCURSOR;
00692  M01S00677.fsescrn +++|# TITLE INCRCURSOR - INCREMENT CURSOR. #
00693  M01S00678.fsescrn +++|
00694  M01S00679.fsescrn +++|    BEGIN  # INCRCURSOR #
00695  M01S00680.fsescrn +++|
00696  M01S00681.fsescrn +++|#
00697  M01S00682.fsescrn +++|**        INCRCURSOR - INCREMENT CURSOR.
00698  M01S00683.fsescrn +++|*
00699  M01S00684.fsescrn +++|*         EXIT   XCURSOR - ZERO.
00700  M01S00685.fsescrn +++|*                YCURSOR - USERS CURSOR OR ONE PLACE BEYOND.
00701  M01S00686.fsescrn +++|*
00702  M01S00687.fsescrn +++|*         CALLS  SETCURSOR.
00703  M01S00688.fsescrn +++|#
00704  M01S00689.fsescrn +++|
00705  M01S00690.fsescrn +++|    SETCURSOR;
00706  M01S00691.fsescrn +++|    XCURSOR=0;
00707  M01S00692.fsescrn +++|    IF ROWTYPE[YCURSOR] EQ ROWST"TEXT" THEN YCURSOR=YCURSOR+1;
00708  M01S00693.fsescrn +++|
00709  M01S00694.fsescrn +++|    END  # INCRCURSOR #
00710  M01S00695.fsescrn +++|PAGE                         # START OF DOSCREEN MAIN CODE #
00711  M01S00696.fsescrn +++|
00712  M01S00697.fsescrn +++|
00713  M01S00698.fsescrn +++|  SCREENLIMIT=0;
00714  M01S00699.fsescrn +++|  COMPUTEDPOS=FALSE;
00715  M01S00700.fsescrn +++|  VDTEOO;                    # ISSUE INPUT CONTROL PROMPT  #
00716  M01S00701.fsescrn +++|  VDTPPI;                    # GET INPUT, VERIFY XPARENT   #
00717  M01S00702.fsescrn +++|  VDTBOO;                    # START NEW OUTPUT CYCLE      #
Line S00703 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc24
Seq #  *Modification Id* Act 
----------------------------+
00718  M02S00703.fsesc24 ---|  IF VTORDN NQ 0 THEN DSERRJMP("PLEASE RE-ENTER INPUT$");
00719  M01S00001.fsesc24 +++|  IF VTORDN NQ 0 THEN
00720  M01S00002.fsesc24 +++|    BEGIN                    # IF SOME INPUT WAS LOST      #
00721  M01S00003.fsesc24 +++|    VDTBEL;
00722  M01S00004.fsesc24 +++|    TOKENPOS=0;
00723  M01S00005.fsesc24 +++|    SETCMD("SS");
00724  M01S00006.fsesc24 +++|    ERRSTRING="PLEASE RE-ENTER INPUT$";
00725  M01S00007.fsesc24 +++|    GOTO DSEOI;              # SIMULATE *ENTER*            #
00726  M01S00008.fsesc24 +++|    END
00727  M01S00704.fsescrn +++|  XCURSOR=0;
00728  M01S00705.fsescrn +++|
00729  M01S00706.fsescrn +++|  FIRSTEVENT=TRUE;
00730  M01S00707.fsescrn +++|  GOTO DSLOOP2;
00731  M01S00708.fsescrn +++|
00732  M01S00709.fsescrn +++|#
00733  M01S00710.fsescrn +++|      SCREEN ROUTINES RETURN BASED UPON WHERE THEY WOULD LIKE
00734  M01S00711.fsescrn +++|      THE CURSOR IF <EOL> WERE ENTERED IMMEDIATELY AFTER THE
00735  M01S00712.fsescrn +++|      ROUTINE.  THE CHOICES ARE
00736  M01S00713.fsescrn +++|
00737  M01S00714.fsescrn +++|         DSLOOP:  LEAVE THE CURSOR WHERE IT IS.
00738  M01S00715.fsescrn +++|         DSX0Y1:  SET X TO ZERO, INCREMENT Y IF IN VALID TEXT.
00739  M01S00716.fsescrn +++|                  LEAVE Y WHERE IT IS IF CANNOT INCREMENT.
00740  M01S00717.fsescrn +++|#
00741  M01S00718.fsescrn +++|
00742  M01S00719.fsescrn +++|DSX0Y1:
00743  M01S00720.fsescrn +++|  INCRCURSOR;
00744  M01S00721.fsescrn +++|DSLOOP:
00745  M01S00722.fsescrn +++|  FIRSTEVENT=FALSE;
00746  M01S00723.fsescrn +++|DSLOOP2:
00747  M01S00724.fsescrn +++|  OLDVTXCURS=VTXCUR;
00748  M01S00725.fsescrn +++|  OLDVTYCURS=VTYCUR;
00749  M01S00726.fsescrn +++|  VDTIINP;
00750  M01S00727.fsescrn +++|DSLOOP3:
00751  M01S00728.fsescrn +++|  IF SCREENLIMIT LS 2 THEN
00752  M01S00729.fsescrn +++|    BEGIN
00753  M01S00730.fsescrn +++|    IF NEEDCURSOR[VTORDN] THEN SETCURSOR;
00754  M01S00731.fsescrn +++|    IF NEEDALIGN[VTORDN] THEN ALIGN;
00755  M01S00732.fsescrn +++|    IF NEEDCLEAN[VTORDN] THEN CLEANLINE;
00756  M01S00733.fsescrn +++|    END
00757  M01S00734.fsescrn +++|  IF NEEDLIMIT[VTORDN] NQ 0 THEN
00758  M01S00735.fsescrn +++|    BEGIN
00759  M01S00736.fsescrn +++|    IF NEEDLIMIT[VTORDN] LS SCREENLIMIT AND SCREENLIMIT NQ 0 THEN
00760  M01S00737.fsescrn +++|      BEGIN
00761  M01S00738.fsescrn +++|      PAINTALL;
00762  M01S00001.fsesc29 +++|      VTINCR = 0;                    # DISABLE CURSOR ADVANCE #
00763  M01S00739.fsescrn +++|      DSERRJMP("RETURN MUST FOLLOW FUNCTION KEY$");
00764  M01S00740.fsescrn +++|      END
00765  M01S00741.fsescrn +++|    SCREENLIMIT=NEEDLIMIT[VTORDN];
00766  M01S00742.fsescrn +++|    END
Line S00743 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc26
Seq #  *Modification Id* Act 
----------------------------+
00767  M02S00743.fsesc26 ---|  IF NEEDUNLOCK[VTORDN] AND YCURSOR NQ COMMANDROW THEN
00768  M01S00001.fsesc26 +++|  IF NEEDUNLOCK[VTORDN] AND ROWTYPE[YCURSOR] EQ ROWST"TEXT" THEN
00769  M01S00744.fsescrn +++|    BEGIN
00770  M01S00745.fsescrn +++|    IF LOCKED[CURFILE] NQ 0 THEN
00771  M01S00746.fsescrn +++|      BEGIN
00772  M01S00747.fsescrn +++|      ROWPAINT[YCURSOR]=TRUE;        # CURRENT LINE IS SPOILED #
00773  M01S00748.fsescrn +++|      IF VTORDN EQ SCREENST"INSL" OR VTORDN EQ SCREENST"DELL" THEN
00774  M01S00749.fsescrn +++|        BEGIN                        # LOWER LINES ARE SPOILED #
00775  M01S00750.fsescrn +++|        PAINTSPLIT;                  # AT LEAST TILL FIELD PROTECT #
00776  M01S00751.fsescrn +++|        IF NOT TABVTPROTM[0] THEN PAINTREST(YCURSOR);
00777  M01S00752.fsescrn +++|        END
00778  M01S00753.fsescrn +++|      DSERRJMP("CANNOT CHANGE READ-ONLY FILE$");
00779  M01S00754.fsescrn +++|      END
00780  M01S00755.fsescrn +++|    END
00781  M01S00756.fsescrn +++|  HARDFN=TRUE;
00782  M01S00757.fsescrn +++|  GOTO SCREENSW[VTORDN];
00783  M01S00758.fsescrn +++|
Line S00759 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00784  M02S00759.ns2641  ---|DSDUMMY:  DSUP:  DSDOWN:  DSLEFT:  DSRIGHT:  DSRET:
Line S00760 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00785  M02S00760.ns2641  ---|DSNOOP:   DSCOORD:  DSPROTECT:  DSRSRV1:  DSRSRV2:
00786  M01S00013.ns2641  +++|DSUP:
00787  M01S00014.ns2641  +++|DSDOWN:
00788  M01S00015.ns2641  +++|DSRET:
00789  M01S00016.ns2641  +++|DSNOOP:
00790  M01S00017.ns2641  +++|DSCOORD:
00791  M01S00018.ns2641  +++|DSPROTECT:
00792  M01S00761.fsescrn +++|  GOTO DSLOOP;
00793  M01S00762.fsescrn +++|
00794  M01S00763.fsescrn +++|
00795  M01S00764.fsescrn +++|DSPOS:
00796  M01S00765.fsescrn +++|DSRESET:
00797  M01S00766.fsescrn +++|  GOTO DSBAD;
00798  M01S00767.fsescrn +++|
00799  M01S00768.fsescrn +++|DSEOI:
00800  M01S00769.fsescrn +++|  # NOTE THAT AN EOI VDT EVENT IS NOT TAGGED FOR EITHER CURSOR  #
00801  M01S00770.fsescrn +++|  # SETTING OR FILE POSITION ALIGNMENT.  THE DSEOI SECTION DOES #
Line S00771 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc27
Seq #  *Modification Id* Act 
----------------------------+
00802  M02S00771.fsesc27 ---|  # THIS MANUALLY SO WE CAN ALIGN THE FILE ON THE BASIS OF THE  #
Line S00772 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc27
Seq #  *Modification Id* Act 
----------------------------+
00803  M02S00772.fsesc27 ---|  # LAST SIGNIFICANT CURSOR ADDRESS BEFORE THE RETURN KEY WAS   #
Line S00773 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc27
Seq #  *Modification Id* Act 
----------------------------+
00804  M02S00773.fsesc27 ---|  # STRUCK, WITHOUT BEING CONFUSED BY THE CURSOR POSITION FOR   #
Line S00774 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc27
Seq #  *Modification Id* Act 
----------------------------+
00805  M02S00774.fsesc27 ---|  # THE RETURN KEY ITSELF.                                      #
00806  M01S00001.fsesc27 +++|  # THIS MANUALLY TO ALLOW FOR REACTION TO VARYING CONDITIONS.  #
00807  M01S00775.fsescrn +++|  CLEANLINE;
00808  M01S00776.fsescrn +++|  IF SCREENLIMIT LS 2 THEN
00809  M01S00777.fsescrn +++|    BEGIN
00810  M01S00002.fsesc27 +++|    IF COMPUTEDPOS THEN SETCURSOR;
00811  M01S00778.fsescrn +++|    ALIGN;
Line S00779 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc27
Seq #  *Modification Id* Act 
----------------------------+
00812  M02S00779.fsesc27 ---|    IF COMPUTEDPOS THEN
Line S00780 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc27
Seq #  *Modification Id* Act 
----------------------------+
00813  M02S00780.fsesc27 ---|      BEGIN
Line S00781 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc27
Seq #  *Modification Id* Act 
----------------------------+
00814  M02S00781.fsesc27 ---|      IF OLDVTXCURS NQ VTXCUR OR OLDVTYCURS NQ VTYCUR THEN
Line S00782 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc27
Seq #  *Modification Id* Act 
----------------------------+
00815  M02S00782.fsesc27 ---|        BEGIN                        # USER MOVED CURSOR BEFORE EOI #
Line S00783 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc27
Seq #  *Modification Id* Act 
----------------------------+
00816  M02S00783.fsesc27 ---|        INCRCURSOR;
Line S00784 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc27
Seq #  *Modification Id* Act 
----------------------------+
00817  M02S00784.fsesc27 ---|        END
Line S00785 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc27
Seq #  *Modification Id* Act 
----------------------------+
00818  M02S00785.fsesc27 ---|      END
Line S00786 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc27
Seq #  *Modification Id* Act 
----------------------------+
00819  M02S00786.fsesc27 ---|    ELSE INCRCURSOR;
00820  M01S00003.fsesc27 +++|    INCRCURSOR;
00821  M01S00787.fsescrn +++|    IF LENGTH(CMDLIN) EQ 0 AND YCURSOR EQ VTYCUR+1 AND
Line S00788 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc25
Seq #  *Modification Id* Act 
----------------------------+
00822  M02S00788.fsesc25 ---|      VTYCUR EQ TITLEROW[CURSPLIT]+NUMROWS[CURSPLIT] THEN
00823  M01S00001.fsesc25 +++|      VTYCUR EQ TITLEROW[CURSPLIT]+NUMROWS[CURSPLIT] AND
00824  M01S00002.fsesc25 +++|      NOT PROMPTING THEN
00825  M01S00789.fsescrn +++|      BEGIN                          # IF AUTO HALF PAGE FORWARD #
00826  M01S00790.fsescrn +++|      TOPS(CURSPLIT)=BOTS(CURSPLIT)-NUMROWS[CURSPLIT]/2;
00827  M01S00791.fsescrn +++|      SETTOPS(CURSPLIT);
00828  M01S00792.fsescrn +++|      XCURSOR=0;
00829  M01S00793.fsescrn +++|      YCURSOR=BOTS(CURSPLIT);
00830  M01S00794.fsescrn +++|      YCURSOR=LTOY(YCURSOR,CURSPLIT);
00831  M01S00795.fsescrn +++|      SETBOTS(CURSPLIT);
00832  M01S00796.fsescrn +++|      PAINTSPLIT;
00833  M01S00797.fsescrn +++|      END
00834  M01S00798.fsescrn +++|    ALIGN;
00835  M01S00799.fsescrn +++|    END
00836  M01S00800.fsescrn +++|  HARDFN = FALSE;                    # CLEAR HARD FUNCTION PRESSED #
00837  M01S00801.fsescrn +++|  VDTDRN;                            # ASSURE CLEAN INPUT BUFFER #
00838  M01S00802.fsescrn +++|  IF FIRSTEVENT THEN CMDLINE[0]=NULLIN;
00839  M01S00803.fsescrn +++|  IF AUTOINDENT THEN
00840  M01S00804.fsescrn +++|    BEGIN                            # IF SET JUMP ENABLED #
00841  M01S00805.fsescrn +++|    IF XCURSOR EQ 0 AND YCURSOR NQ COMMANDROW
00842  M01S00806.fsescrn +++|      AND LENGTH(CMDLIN) EQ 0 THEN
00843  M01S00807.fsescrn +++|      BEGIN                          # IF REASONABLE TO DO #
00844  M01S00808.fsescrn +++|      SCRNPT3 = 0;
00845  M01S00809.fsescrn +++|      SCRNPT4 = 0;
Line S00810 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc21
Seq #  *Modification Id* Act 
----------------------------+
00846  M02S00810.fsesc21 ---|      IF LENGTH(LIN) EQ 0 THEN
00847  M01S00001.fsesc21 +++|      IF NOTEXT THEN
00848  M01S00811.fsescrn +++|        BEGIN                        # IF CURRENT LINE IS EMPTY #
00849  M01S00812.fsescrn +++|        SCRNPT4 = 1;                 # CHECK PREVIOUS LINE #
00850  M01S00813.fsescrn +++|        BAKZ;
00851  M01S00814.fsescrn +++|        END
Line S00815 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc21
Seq #  *Modification Id* Act 
----------------------------+
00852  M02S00815.fsesc21 ---|      GETCHAR(LINE,XSHIFT[CURSPLIT],SCRNPT2);
Line S00816 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc21
Seq #  *Modification Id* Act 
----------------------------+
00853  M02S00816.fsesc21 ---|      WHYLE SCRNPT2 EQ CBLANK DO
Line S00817 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc21
Seq #  *Modification Id* Act 
----------------------------+
00854  M02S00817.fsesc21 ---|        BEGIN                        # COUNT LEADING BLANKS #
Line S00818 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc21
Seq #  *Modification Id* Act 
----------------------------+
00855  M02S00818.fsesc21 ---|        SCRNPT3 = SCRNPT3 + 1;
Line S00819 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc21
Seq #  *Modification Id* Act 
----------------------------+
00856  M02S00819.fsesc21 ---|        GETCHAR(LINE,XSHIFT[CURSPLIT]+SCRNPT3,SCRNPT2);
Line S00820 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc21
Seq #  *Modification Id* Act 
----------------------------+
00857  M02S00820.fsesc21 ---|        END
00858  M01S00002.fsesc21 +++|      IF NOT NOTEXT THEN
00859  M01S00003.fsesc21 +++|        BEGIN                        # IF LINE IS NOT EMPTY #
00860  M01S00004.fsesc21 +++|        GETCHAR(LINE,XSHIFT[CURSPLIT],SCRNPT2);
00861  M01S00005.fsesc21 +++|        WHYLE SCRNPT2 EQ CBLANK DO
00862  M01S00006.fsesc21 +++|          BEGIN                      # IF LEADING BLANK(S) #
00863  M01S00007.fsesc21 +++|          SCRNPT3 = SCRNPT3 + 1;
00864  M01S00008.fsesc21 +++|          GETCHAR(LINE,XSHIFT[CURSPLIT]+SCRNPT3,SCRNPT2);
00865  M01S00009.fsesc21 +++|          END
00866  M01S00010.fsesc21 +++|        END
00867  M01S00821.fsescrn +++|      IF SCRNPT4 EQ 1 THEN FWDZ;     # RESET IF NECESSARY #
00868  M01S00822.fsescrn +++|      XCURSOR = SCRNPT3;
00869  M01S00823.fsescrn +++|      END
00870  M01S00824.fsescrn +++|    END
00871  M01S00825.fsescrn +++|  IORET
00872  M01S00826.fsescrn +++|
00873  M01S00827.fsescrn +++|DSHOME:
00874  M01S00828.fsescrn +++|  XCURSOR=VTOXPOS;
00875  M01S00829.fsescrn +++|  YCURSOR=VTOYPOS;
00876  M01S00830.fsescrn +++|  IF ROWTYPE[YCURSOR] EQ ROWST"TEXT" OR ROWTYPE[YCURSOR]
00877  M01S00831.fsescrn +++|    EQ ROWST"TITLE" THEN CURSPLIT=ROWSPLIT[YCURSOR];
00878  M01S00832.fsescrn +++|  CURCURSOR=XCURSOR+XSHIFT[CURSPLIT];
00879  M01S00833.fsescrn +++|  ALIGN;
00880  M01S00834.fsescrn +++|  GOTO DSLOOP;
00881  M01S00835.fsescrn +++|
00882  M01S00836.fsescrn +++|DSCLREOL:
00883  M01S00837.fsescrn +++|  IF ROWTYPE[YCURSOR] EQ ROWST"COMMAND" THEN
00884  M01S00838.fsescrn +++|    BEGIN
00885  M01S00839.fsescrn +++|    SETCHAR(CMDLINE,XCURSOR,CENDLINE);
00886  M01S00840.fsescrn +++|    IF XCURSOR EQ 0 THEN ROWPAINT[COMMANDROW] = FALSE;
00887  M01S00841.fsescrn +++|    END
00888  M01S00842.fsescrn +++|  ELSE IF ALIGNGOOD THEN
00889  M01S00843.fsescrn +++|    BEGIN
00890  M01S00844.fsescrn +++|    FOR SCRNPT1=XCURSOR+XSHIFT[CURSPLIT] STEP 1
00891  M01S00845.fsescrn +++|      UNTIL EDITFIELD-1 DO SETCHAR(LINE,SCRNPT1,CBLANK);
00892  M01S00846.fsescrn +++|    SETCHAR(LINE,BUFCHAR,CENDLINE);
00893  M01S00847.fsescrn +++|    TRIMPAD;
00894  M01S00848.fsescrn +++|    LINECHANGED=TRUE;
00895  M01S00849.fsescrn +++|    END
00896  M01S00850.fsescrn +++|  ELSE REJECT;
00897  M01S00851.fsescrn +++|  GOTO DSX0Y1;
00898  M01S00852.fsescrn +++|
00899  M01S00853.fsescrn +++|DSCLRPAG:  DSCLRUNP:  DSCLREOP:
00900  M01S00854.fsescrn +++|  PAINTALL;
00901  M01S00855.fsescrn +++|  SETCMD("SETSCR");
00902  M01S00856.fsescrn +++|  GOTO DSLOOP;
00903  M01S00857.fsescrn +++|
00904  M01S00858.fsescrn +++|DSCHAR:
00905  M01S00859.fsescrn +++|  IF YCURSOR EQ COMMANDROW THEN
00906  M01S00860.fsescrn +++|    BEGIN
00907  M01S00861.fsescrn +++|    MOVETEXT(CMDLIN,0,BUFCM1);
00908  M01S00862.fsescrn +++|    ROWPAINT[COMMANDROW] = TRUE;
00909  M01S00863.fsescrn +++|    END
00910  M01S00864.fsescrn +++|  ELSE
00911  M01S00865.fsescrn +++|    BEGIN
00912  M01S00866.fsescrn +++|    EXTEND;
00913  M01S00867.fsescrn +++|    IF ALIGNGOOD THEN
00914  M01S00868.fsescrn +++|      BEGIN
00915  M01S00869.fsescrn +++|      SCRNPT1=LENGTH(LIN);
00916  M01S00870.fsescrn +++|      MOVETEXT(LIN,XSHIFT[CURSPLIT],EDITFIELD);
00917  M01S00871.fsescrn +++|      LINECHANGED=TRUE;
00918  M01S00872.fsescrn +++|      END
00919  M01S00873.fsescrn +++|    ELSE REJECT;
00920  M01S00874.fsescrn +++|    END
00921  M01S00875.fsescrn +++|  GOTO DSX0Y1;
00922  M01S00876.fsescrn +++|
00923  M01S00877.fsescrn +++|DSINSC:
00924  M01S00878.fsescrn +++|  IF YCURSOR EQ COMMANDROW THEN
00925  M01S00879.fsescrn +++|    BEGIN                            # IF COMMANDROW #
00926  M01S00880.fsescrn +++|    ROWPAINT[COMMANDROW] = TRUE;
00927  M01S00881.fsescrn +++|    INSTEXT(CMDLIN,0,BUFCM1);
00928  M01S00882.fsescrn +++|    END
00929  M01S00883.fsescrn +++|  ELSE
00930  M01S00884.fsescrn +++|    BEGIN
00931  M01S00885.fsescrn +++|    EXTEND;
00932  M01S00886.fsescrn +++|    IF ALIGNGOOD THEN
00933  M01S00887.fsescrn +++|      BEGIN
00934  M01S00888.fsescrn +++|      INSTEXT(LIN,XSHIFT[CURSPLIT],EDITFIELD);
Line S00889 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc23
Seq #  *Modification Id* Act 
----------------------------+
00935  M02S00889.fsesc23 ---|      IF CURRENT EQ REGLINE[MARKREG] AND MRKCHAR[0] GR -1 THEN
Line S00890 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc23
Seq #  *Modification Id* Act 
----------------------------+
00936  M02S00890.fsesc23 ---|        BEGIN
Line S00891 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc23
Seq #  *Modification Id* Act 
----------------------------+
00937  M02S00891.fsesc23 ---|        IF VTXCUR LS MRKCHAR[0] THEN
Line S00892 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc23
Seq #  *Modification Id* Act 
----------------------------+
00938  M02S00892.fsesc23 ---|          BEGIN
Line S00893 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc23
Seq #  *Modification Id* Act 
----------------------------+
00939  M02S00893.fsesc23 ---|          MRKCHAR[0] = MRKCHAR[0] + 1;
Line S00894 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc23
Seq #  *Modification Id* Act 
----------------------------+
00940  M02S00894.fsesc23 ---|          END
Line S00895 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc23
Seq #  *Modification Id* Act 
----------------------------+
00941  M02S00895.fsesc23 ---|        IF CURRENT EQ REGLINE[MARKREG+1] AND VTXCUR LQ MRKCHAR[1] THEN
Line S00896 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc23
Seq #  *Modification Id* Act 
----------------------------+
00942  M02S00896.fsesc23 ---|          MRKCHAR[1] = MRKCHAR[1] + 1;
Line S00897 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc23
Seq #  *Modification Id* Act 
----------------------------+
00943  M02S00897.fsesc23 ---|        END
00944  M01S00001.fsesc23 +++|      IF CURRENT EQ REGLINE[MARKREG] AND VTXCUR LS MRKCHAR[0] THEN
00945  M01S00002.fsesc23 +++|        MRKCHAR[0] = MRKCHAR[0] + 1; # IF INSERT BEFORE FIRST MARK #
00946  M01S00003.fsesc23 +++|      IF CURRENT EQ REGLINE[MARKREG+1] AND VTXCUR LQ MRKCHAR[1] THEN
00947  M01S00004.fsesc23 +++|        MRKCHAR[1] = MRKCHAR[1] + 1; # IF INSERT BEFORE LAST MARK #
00948  M01S00898.fsescrn +++|      LINECHANGED=TRUE;
00949  M01S00899.fsescrn +++|      END
00950  M01S00900.fsescrn +++|    ELSE REJECT;
00951  M01S00901.fsescrn +++|    END
00952  M01S00902.fsescrn +++|  GOTO DSX0Y1;
00953  M01S00903.fsescrn +++|
00954  M01S00904.fsescrn +++|DSDELC:
00955  M01S00905.fsescrn +++|  IF YCURSOR EQ COMMANDROW THEN
00956  M01S00906.fsescrn +++|    BEGIN
00957  M01S00907.fsescrn +++|    DELTEXT(CMDLIN,0,BUFCM1);
00958  M01S00908.fsescrn +++|    IF LENGTH(CMDLIN) EQ 0 THEN ROWPAINT[COMMANDROW] = FALSE;
00959  M01S00909.fsescrn +++|    END
00960  M01S00910.fsescrn +++|  ELSE IF ALIGNGOOD THEN
00961  M01S00911.fsescrn +++|    BEGIN
00962  M01S00912.fsescrn +++|    IF HARDFN AND LENGTH(LIN) GR XSHIFT[CURSPLIT]+USRNUMCOL
00963  M01S00913.fsescrn +++|      THEN ROWPAINT[YCURSOR]=TRUE;
00964  M01S00914.fsescrn +++|    DELTEXT(LIN,XSHIFT[CURSPLIT],EDITFIELD);
Line S00915 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc23
Seq #  *Modification Id* Act 
----------------------------+
00965  M02S00915.fsesc23 ---|    IF CURRENT EQ REGLINE[MARKREG] AND MRKCHAR[0] GR -1 THEN
Line S00916 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc23
Seq #  *Modification Id* Act 
----------------------------+
00966  M02S00916.fsesc23 ---|      BEGIN
Line S00917 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc23
Seq #  *Modification Id* Act 
----------------------------+
00967  M02S00917.fsesc23 ---|      IF VTXCUR LS MRKCHAR[0] THEN
Line S00918 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc23
Seq #  *Modification Id* Act 
----------------------------+
00968  M02S00918.fsesc23 ---|        BEGIN
Line S00919 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc23
Seq #  *Modification Id* Act 
----------------------------+
00969  M02S00919.fsesc23 ---|        MRKCHAR[0] = MRKCHAR[0] - 1;
Line S00920 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc23
Seq #  *Modification Id* Act 
----------------------------+
00970  M02S00920.fsesc23 ---|        END
Line S00921 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc23
Seq #  *Modification Id* Act 
----------------------------+
00971  M02S00921.fsesc23 ---|      IF CURRENT EQ REGLINE[MARKREG+1] AND VTXCUR LQ MRKCHAR[1] THEN
Line S00922 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc23
Seq #  *Modification Id* Act 
----------------------------+
00972  M02S00922.fsesc23 ---|        MRKCHAR[1] = MRKCHAR[1] - 1;
00973  M01S00005.fsesc23 +++|    IF CURRENT EQ REGLINE[MARKREG] AND VTXCUR LS MRKCHAR[0] THEN
00974  M01S00006.fsesc23 +++|      MRKCHAR[0] = MRKCHAR[0] - 1;   # IF DELETE BEFORE FIRST MARK #
00975  M01S00007.fsesc23 +++|    IF CURRENT EQ REGLINE[MARKREG+1] AND VTXCUR LQ MRKCHAR[1] THEN
00976  M01S00008.fsesc23 +++|      BEGIN                          # IF DELETE BEFORE LAST MARK #
00977  M01S00009.fsesc23 +++|      MRKCHAR[1] = MRKCHAR[1] - 1;
00978  M01S00010.fsesc23 +++|      IF REGLINE[MARKREG] LS CURRENT THEN
00979  M01S00011.fsesc23 +++|        BEGIN                        # IF MORE THAN ONE MARKED LINE #
00980  M01S00012.fsesc23 +++|        IF MRKCHAR[1] LS 0 THEN
00981  M01S00013.fsesc23 +++|          BEGIN                      # IF NO MARKS LEFT ON LAST LINE #
00982  M01S00014.fsesc23 +++|          REGLINE[MARKREG+1] = CURRENT - 1;
00983  M01S00015.fsesc23 +++|          END
00984  M01S00016.fsesc23 +++|        END
00985  M01S00017.fsesc23 +++|      ELSE
00986  M01S00018.fsesc23 +++|        BEGIN                        # IF ONLY ONE MARKED LINE #
00987  M01S00019.fsesc23 +++|        IF MRKCHAR[1] LS MRKCHAR[0] OR MRKCHAR[1] LS 0 THEN
00988  M01S00020.fsesc23 +++|          KILLMARKS = TRUE;          # IF NO MARKS LEFT #
00989  M01S00021.fsesc23 +++|        END
00990  M01S00923.fsescrn +++|      END
00991  M01S00924.fsescrn +++|    LINECHANGED=TRUE;
00992  M01S00925.fsescrn +++|    END
00993  M01S00926.fsescrn +++|  ELSE REJECT;
00994  M01S00927.fsescrn +++|  GOTO DSX0Y1;
00995  M01S00928.fsescrn +++|
00996  M01S00929.fsescrn +++|DSINSL:
Line S00930 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc31
Seq #  *Modification Id* Act 
----------------------------+
00997  M02S00930.fsesc31 ---|  IF YTOL(YCURSOR,CURSPLIT) EQ BOTF(CURFILE) THEN EXTEND;
Line S00931 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc31
Seq #  *Modification Id* Act 
----------------------------+
00998  M02S00931.fsesc31 ---|  ELSE
00999  M01S00001.fsesc31 +++|  EXTEND;
01000  M01S00002.fsesc31 +++|  IF ALIGNGOOD THEN
01001  M01S00932.fsescrn +++|    BEGIN
Line S00933 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc31
Seq #  *Modification Id* Act 
----------------------------+
01002  M02S00933.fsesc31 ---|    EXTEND;
Line S00934 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc31
Seq #  *Modification Id* Act 
----------------------------+
01003  M02S00934.fsesc31 ---|    IF ALIGNGOOD THEN
Line S00935 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc31
Seq #  *Modification Id* Act 
----------------------------+
01004  M02S00935.fsesc31 ---|      BEGIN
Line S00936 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc31
Seq #  *Modification Id* Act 
----------------------------+
01005  M02S00936.fsesc31 ---|      IF CURRENT NQ TOPS(CURSPLIT) THEN BAKZ;
Line S00937 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc31
Seq #  *Modification Id* Act 
----------------------------+
01006  M02S00937.fsesc31 ---|      LINE[0]=NULLIN;
Line S00938 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc31
Seq #  *Modification Id* Act 
----------------------------+
01007  M02S00938.fsesc31 ---|      INSX;
Line S00939 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc31
Seq #  *Modification Id* Act 
----------------------------+
01008  M02S00939.fsesc31 ---|      END
Line S00940 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc31
Seq #  *Modification Id* Act 
----------------------------+
01009  M02S00940.fsesc31 ---|    ELSE
Line S00941 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc31
Seq #  *Modification Id* Act 
----------------------------+
01010  M02S00941.fsesc31 ---|      BEGIN
Line S00942 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc31
Seq #  *Modification Id* Act 
----------------------------+
01011  M02S00942.fsesc31 ---|      REJECT;
Line S00943 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc31
Seq #  *Modification Id* Act 
----------------------------+
01012  M02S00943.fsesc31 ---|      IF HARDFN THEN PAINTREST(YCURSOR);
Line S00944 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc31
Seq #  *Modification Id* Act 
----------------------------+
01013  M02S00944.fsesc31 ---|      END
01014  M01S00003.fsesc31 +++|    IF CURRENT NQ TOPS(CURSPLIT) THEN BAKZ;
01015  M01S00004.fsesc31 +++|    LINE[0]=NULLIN;
01016  M01S00005.fsesc31 +++|    HARDFN = TRUE;
01017  M01S00006.fsesc31 +++|    INSX;
01018  M01S00007.fsesc31 +++|    END
01019  M01S00008.fsesc31 +++|  ELSE
01020  M01S00009.fsesc31 +++|    BEGIN
01021  M01S00010.fsesc31 +++|    REJECT;
01022  M01S00011.fsesc31 +++|    IF HARDFN AND NOT TABVTPROTM[0] THEN PAINTREST(YCURSOR);
01023  M01S00945.fsescrn +++|    END
01024  M01S00946.fsescrn +++|  GOTO DSX0Y1;
01025  M01S00947.fsescrn +++|
01026  M01S00019.ns2641  +++|DSLEFT:
01027  M01S00020.ns2641  +++|  IF TABVTPROTM[0] THEN
01028  M01S00021.ns2641  +++|    BEGIN
01029  M01S00022.ns2641  +++|    IF ROWTYPE[VTYCUR] EQ ROWST"TITLE"
01030  M01S00023.ns2641  +++|      OR (ROWTYPE[VTYCUR] EQ ROWST"LABEL" AND VTXCUR LS FKEYLEN) THEN
01031  M01S00024.ns2641  +++|      BEGIN                          # IF CURSOR IN PROTECTED AREA #
01032  M01S00025.ns2641  +++|      VDTCOR(VTYCUR-1,VTXMAX);       # CURSOR IS UP ONE LINE #
01033  M01S00026.ns2641  +++|      END
01034  M01S00027.ns2641  +++|    END
01035  M01S00028.ns2641  +++|  GOTO DSLOOP;
01036  M01S00029.ns2641  +++|
01037  M01S00030.ns2641  +++|DSRIGHT:
01038  M01S00031.ns2641  +++|  IF TABVTPROTM[0] THEN
01039  M01S00032.ns2641  +++|    BEGIN
01040  M01S00033.ns2641  +++|    IF ROWTYPE[VTYCUR] EQ ROWST"TITLE" THEN
01041  M01S00034.ns2641  +++|      BEGIN                          # IF ON TITLE LINE #
01042  M01S00035.ns2641  +++|      VDTCOR(VTYCUR+1,0);            # CURSOR ONE LINE DOWN #
01043  M01S00036.ns2641  +++|      END
01044  M01S00037.ns2641  +++|    ELSE IF ROWTYPE[VTYCUR] EQ ROWST"LABEL" AND VTXCUR LS FKEYLEN THEN
01045  M01S00038.ns2641  +++|      BEGIN                          # IF ON FUNCTION KEY LABEL LINE #
01046  M01S00039.ns2641  +++|      VDTCOR(VTYCUR,FKEYLEN);        # CURSOR IS PAST LABELS #
01047  M01S00040.ns2641  +++|      END
01048  M01S00041.ns2641  +++|    END
01049  M01S00042.ns2641  +++|  GOTO DSLOOP;
01050  M01S00043.ns2641  +++|
01051  M01S00044.ns2641  +++|DSCLRALL:
01052  M01S00045.ns2641  +++|  VDTSTS(0);                         # RESTORE COLUMN 1 TAB STOP #
01053  M01S00046.ns2641  +++|  FOR SCRNPT2=1 STEP 1 UNTIL TABWORDS DO
01054  M01S00047.ns2641  +++|    BEGIN                            # MARK ALL OTHER TABS CLEAR #
01055  M01S00048.ns2641  +++|    TABVCTWRD[SCRNPT2] = 0;
01056  M01S00049.ns2641  +++|    END
01057  M01S00050.ns2641  +++|  GOTO DSLOOP;
01058  M01S00051.ns2641  +++|
01059  M01S00052.ns2641  +++|DSCLRTAB:
01060  M01S00053.ns2641  +++|DSSETTAB:
01061  M01S00054.ns2641  +++|  FOR SCRNPT3=1 STEP 1 UNTIL USERTABS DO
01062  M01S00055.ns2641  +++|    BEGIN
01063  M01S00056.ns2641  +++|    SCRNPT2 = TABFN(SCRNPT3);
01064  M01S00057.ns2641  +++|    IF SCRNPT2 GQ VTXCUR OR SCRNPT2 EQ 0 THEN
01065  M01S00058.ns2641  +++|      BEGIN                          # IF FOUND THE SPOT #
01066  M01S00059.ns2641  +++|      IF VTORDN EQ SCREENST"SETTAB" THEN
01067  M01S00060.ns2641  +++|        BEGIN                        # IF SETTING TAB STOP #
01068  M01S00061.ns2641  +++|        IF SCRNPT2 NQ VTXCUR AND VTXCUR GR 0 THEN
01069  M01S00062.ns2641  +++|          BEGIN                      # IF TAB STOP NOT ALREADY SET #
01070  M01S00063.ns2641  +++|          SCRNPT4 = VTXCUR;
01071  M01S00064.ns2641  +++|          FOR SCRNPT3 = SCRNPT3-1 STEP 1
01072  M01S00065.ns2641  +++|            WHILE SCRNPT3 LS USERTABS AND SCRNPT4 GR 0 DO
01073  M01S00066.ns2641  +++|            BEGIN
01074  M01S00067.ns2641  +++|            SCRNPT2 = SCRNPT4;
01075  M01S00068.ns2641  +++|            SCRNPT4 = TABFN(SCRNPT3+1);
01076  M01S00069.ns2641  +++|            SCRNPT5 = SCRNPT3/7;
01077  M01S00070.ns2641  +++|            SCRNPT6 = MOD(SCRNPT3,7);
01078  M01S00071.ns2641  +++|            B<SCRNPT6*8,8>TABVCTWRD[SCRNPT5+1] = SCRNPT2;
01079  M01S00072.ns2641  +++|            END
01080  M01S00073.ns2641  +++|          END
01081  M01S00074.ns2641  +++|        END
01082  M01S00075.ns2641  +++|      ELSE
01083  M01S00076.ns2641  +++|        BEGIN                        # IF CLEARING TAB STOP #
01084  M01S00077.ns2641  +++|        IF VTXCUR GR 0 THEN
01085  M01S00078.ns2641  +++|          BEGIN                      # IF NOT IN COLUMN 1 #
01086  M01S00079.ns2641  +++|          IF SCRNPT2 EQ VTXCUR THEN
01087  M01S00080.ns2641  +++|            BEGIN                    # IF TAB STOP ACTUALLY SET #
01088  M01S00081.ns2641  +++|            FOR SCRNPT3 = SCRNPT3 STEP 1
01089  M01S00082.ns2641  +++|              WHILE SCRNPT3 LS USERTABS AND SCRNPT2 GR 0 DO
01090  M01S00083.ns2641  +++|              BEGIN                  # REMOVE THE TAB STOP #
01091  M01S00084.ns2641  +++|              SCRNPT2 = TABFN(SCRNPT3+1);
01092  M01S00085.ns2641  +++|              SCRNPT5 = (SCRNPT3-1)/7;
01093  M01S00086.ns2641  +++|              SCRNPT6 = MOD(SCRNPT3-1,7);
01094  M01S00087.ns2641  +++|              B<SCRNPT6*8,8>TABVCTWRD[SCRNPT5+1] = SCRNPT2;
01095  M01S00088.ns2641  +++|              END
01096  M01S00089.ns2641  +++|            END
01097  M01S00090.ns2641  +++|          END
01098  M01S00091.ns2641  +++|        ELSE
01099  M01S00092.ns2641  +++|          BEGIN                      # IF COLUMN 1 TAB STOP CLEARED #
01100  M01S00093.ns2641  +++|          VDTSTS(0);                 # RESTORE COLUMN 1 TAB STOP #
01101  M01S00094.ns2641  +++|          END
01102  M01S00095.ns2641  +++|        END
01103  M01S00096.ns2641  +++|      GOTO DSLOOP;
01104  M01S00097.ns2641  +++|      END
01105  M01S00098.ns2641  +++|    END
01106  M01S00099.ns2641  +++|  GOTO DSLOOP;
01107  M01S00100.ns2641  +++|
01108  M01S00948.fsescrn +++|DSFTAB:
Line S00949 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc19
Seq #  *Modification Id* Act 
----------------------------+
01109  M02S00949.fsesc19 ---|  SCRNPT2=TABFN(1);
01110  M01S00001.fsesc19 +++|  SCRNPT4 = TABFN(1);
01111  M01S00950.fsescrn +++|  FOR SCRNPT3=1 STEP 1 UNTIL USERTABS DO
01112  M01S00951.fsescrn +++|    BEGIN
Line S00952 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc19
Seq #  *Modification Id* Act 
----------------------------+
01113  M02S00952.fsesc19 ---|    IF TABFN(SCRNPT3) LS SCRNPT2 THEN
01114  M01S00002.fsesc19 +++|    SCRNPT2 = TABFN(SCRNPT3);
01115  M01S00003.fsesc19 +++|    IF SCRNPT2 LS SCRNPT4 OR SCRNPT2 GR VTXMAX THEN
01116  M01S00953.fsescrn +++|      BEGIN                          # WRAPAROUND #
01117  M01S00954.fsescrn +++|      GOTO DSFTAB2;
01118  M01S00955.fsescrn +++|      END
Line S00956 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc19
Seq #  *Modification Id* Act 
----------------------------+
01119  M02S00956.fsesc19 ---|    SCRNPT2=TABFN(SCRNPT3);
01120  M01S00957.fsescrn +++|    IF SCRNPT2 GR VTXCUR THEN
01121  M01S00958.fsescrn +++|      BEGIN                          # THIS IS IT #
Line S00959 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
01122  M02S00959.ns2641  ---|      VDTCOR(VTYCUR,SCRNPT2);
Line S00960 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
01123  M02S00960.ns2641  ---|      GOTO DSLOOP;
01124  M01S00101.ns2641  +++|      SCRNPT4 = VTYCUR;
01125  M01S00102.ns2641  +++|      GOTO DSFTAB3;
01126  M01S00961.fsescrn +++|      END
01127  M01S00962.fsescrn +++|    END
01128  M01S00963.fsescrn +++|DSFTAB2:
Line S00964 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
01129  M02S00964.ns2641  ---|  IF NOT TABUNDWFLN[0] THEN
Line S00965 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
01130  M02S00965.ns2641  ---|    BEGIN                            # IF FORWARD TABS WRAP LINES #
Line S00966 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
01131  M02S00966.ns2641  ---|    SCRNPT4 = VTYCUR + 1;
Line S00967 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
01132  M02S00967.ns2641  ---|    IF SCRNPT4 GR VTYMAX THEN SCRNPT4 = 0;
Line S00968 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
01133  M02S00968.ns2641  ---|    VDTCOR(SCRNPT4,0);
Line S00969 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
01134  M02S00969.ns2641  ---|    END
01135  M01S00103.ns2641  +++|  IF TABUNDWFLN[0] THEN GOTO DSLOOP; # IF FORWARD TABS DO NOT WRAP #
01136  M01S00104.ns2641  +++|  IF ROWTYPE[VTYCUR] EQ ROWST"LABEL"
01137  M01S00105.ns2641  +++|    AND TABVTPROTM[0]
01138  M01S00106.ns2641  +++|    AND VTXCUR LS FKEYLEN THEN
01139  M01S00107.ns2641  +++|    BEGIN                            # IF WITHIN PROTECTED LABEL LINE #
01140  M01S00108.ns2641  +++|    VDTCOR(VTYCUR,FKEYLEN);
01141  M01S00109.ns2641  +++|    GOTO DSLOOP;
01142  M01S00110.ns2641  +++|    END
01143  M01S00111.ns2641  +++|  SCRNPT2 = 0;
01144  M01S00112.ns2641  +++|  SCRNPT4 = VTYCUR + 1;
01145  M01S00113.ns2641  +++|  IF SCRNPT4 GR VTYMAX THEN SCRNPT4 = 0;
01146  M01S00114.ns2641  +++|DSFTAB3:
01147  M01S00115.ns2641  +++|  IF TABVTPROTM[0] THEN
01148  M01S00116.ns2641  +++|    BEGIN                            # IF EDITOR USES PROTECT #
01149  M01S00117.ns2641  +++|    IF ROWTYPE[SCRNPT4] EQ ROWST"TITLE" THEN
01150  M01S00118.ns2641  +++|      BEGIN                          # IF PROTECTED TITLE LINE #
01151  M01S00119.ns2641  +++|      SCRNPT4 = SCRNPT4 + 1;         # ADVANCE PAST TITLE LINE #
01152  M01S00120.ns2641  +++|      SCRNPT2 = 0;
01153  M01S00121.ns2641  +++|      END
01154  M01S00122.ns2641  +++|    ELSE IF ROWTYPE[SCRNPT4] EQ ROWST"LABEL"
01155  M01S00123.ns2641  +++|      AND SCRNPT2 LS FKEYLEN THEN
01156  M01S00124.ns2641  +++|      BEGIN                          # IF IN PROTECTED LABEL AREA #
01157  M01S00125.ns2641  +++|      SCRNPT2 = FKEYLEN;
01158  M01S00126.ns2641  +++|      END
01159  M01S00127.ns2641  +++|    END
01160  M01S00128.ns2641  +++|  VDTCOR(SCRNPT4,SCRNPT2);
01161  M01S00970.fsescrn +++|  GOTO DSLOOP;
01162  M01S00971.fsescrn +++|
01163  M01S00972.fsescrn +++|DSBTAB:
01164  M01S00973.fsescrn +++|  IF TABUNDWBLN[0] AND VTXCUR EQ 0 THEN GOTO DSLOOP;  # IF NO WRAP #
01165  M01S00974.fsescrn +++|  SCRNPT1=-1;
01166  M01S00975.fsescrn +++|  SCRNPT2=TABFN(TABSTOPS);
01167  M01S00976.fsescrn +++|  FOR SCRNPT3=USERTABS STEP -1 UNTIL 1 DO
01168  M01S00977.fsescrn +++|    BEGIN
Line S00978 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc19
Seq #  *Modification Id* Act 
----------------------------+
01169  M02S00978.fsesc19 ---|    IF TABFN(SCRNPT3) GR SCRNPT2 AND SCRNPT1 LS 0 THEN
Line S00979 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc19
Seq #  *Modification Id* Act 
----------------------------+
01170  M02S00979.fsesc19 ---|      BEGIN                          # ENABLE #
Line S00980 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc19
Seq #  *Modification Id* Act 
----------------------------+
01171  M02S00980.fsesc19 ---|      SCRNPT1=TABFN(SCRNPT3);
Line S00981 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc19
Seq #  *Modification Id* Act 
----------------------------+
01172  M02S00981.fsesc19 ---|      END
Line S00982 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc19
Seq #  *Modification Id* Act 
----------------------------+
01173  M02S00982.fsesc19 ---|    SCRNPT2=TABFN(SCRNPT3);
Line S00983 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc19
Seq #  *Modification Id* Act 
----------------------------+
01174  M02S00983.fsesc19 ---|    IF SCRNPT2 LS VTXCUR AND SCRNPT1 GQ 0 THEN
Line S00984 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc19
Seq #  *Modification Id* Act 
----------------------------+
01175  M02S00984.fsesc19 ---|      BEGIN                          # THIS IS IT #
Line S00985 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc19
Seq #  *Modification Id* Act 
----------------------------+
01176  M02S00985.fsesc19 ---|      VDTCOR(VTYCUR,SCRNPT2);
Line S00986 Modification History
M01 (Added by) fsescrn
M02 (Updated by) fsesc19
Seq #  *Modification Id* Act 
----------------------------+
01177  M02S00986.fsesc19 ---|      GOTO DSLOOP;
01178  M01S00004.fsesc19 +++|    SCRNPT4 = TABFN(SCRNPT3);
01179  M01S00005.fsesc19 +++|    IF SCRNPT1 LS 0 THEN
01180  M01S00006.fsesc19 +++|      BEGIN                          # IF LAST VALID TAB NOT FOUND #
01181  M01S00007.fsesc19 +++|      IF SCRNPT4 LQ SCRNPT2 OR SCRNPT4 GR VTXMAX THEN TEST SCRNPT3;
01182  M01S00008.fsesc19 +++|      SCRNPT1 = SCRNPT4;
01183  M01S00009.fsesc19 +++|      END
01184  M01S00010.fsesc19 +++|    IF SCRNPT4 LS VTXCUR THEN
01185  M01S00011.fsesc19 +++|      BEGIN                          # IF LEFT OF CURRENT POSITION #
01186  M01S00129.ns2641  +++|      IF TABVTPROTM[0] THEN
01187  M01S00130.ns2641  +++|        BEGIN                        # IF EDITOR USES PROTECT #
01188  M01S00131.ns2641  +++|        IF ROWTYPE[VTYCUR] EQ ROWST"TITLE" THEN GOTO DSBTAB2;
01189  M01S00132.ns2641  +++|        IF ROWTYPE[VTYCUR] EQ ROWST"LABEL" THEN
01190  M01S00133.ns2641  +++|          BEGIN                      # IF PROTECTED LABEL LINE #
01191  M01S00134.ns2641  +++|          IF VTXCUR LQ FKEYLEN THEN GOTO DSBTAB2;
01192  M01S00135.ns2641  +++|          SCRNPT4 = MAX(SCRNPT4,FKEYLEN);
01193  M01S00136.ns2641  +++|          END
01194  M01S00137.ns2641  +++|        END
01195  M01S00012.fsesc19 +++|      VDTCOR(VTYCUR,SCRNPT4);
01196  M01S00013.fsesc19 +++|      GOTO DSLOOP;
01197  M01S00987.fsescrn +++|      END
01198  M01S00988.fsescrn +++|    END
Line S00989 Modification History
M01 (Added by) fsescrn
M02 (Updated by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
01199  M02S00989.ns2641  ---|  IF VTXCUR GR 0 THEN
01200  M01S00138.ns2641  +++|  IF VTXCUR GR 0
01201  M01S00139.ns2641  +++|    AND NOT (TABVTPROTM[0] AND ROWTYPE[VTYCUR] EQ ROWST"LABEL") THEN
01202  M01S00990.fsescrn +++|    BEGIN
01203  M01S00991.fsescrn +++|    VDTCOR(VTYCUR,0);
01204  M01S00992.fsescrn +++|    GOTO DSLOOP;
01205  M01S00993.fsescrn +++|    END
01206  M01S00140.ns2641  +++|DSBTAB2:
01207  M01S00994.fsescrn +++|  SCRNPT1=MAX(SCRNPT1,0);
01208  M01S00995.fsescrn +++|  SCRNPT4=VTYCUR-1;
01209  M01S00996.fsescrn +++|  IF SCRNPT4 LS 0 THEN SCRNPT4=VTYMAX;
01210  M01S00141.ns2641  +++|  IF TABVTPROTM[0] THEN
01211  M01S00142.ns2641  +++|    BEGIN                            # IF EDITOR USES PROTECT #
01212  M01S00143.ns2641  +++|    IF ROWTYPE[SCRNPT4] EQ ROWST"TITLE" THEN
01213  M01S00144.ns2641  +++|      BEGIN                          # IF PROTECTED TITLE LINE #
01214  M01S00145.ns2641  +++|      SCRNPT4 = SCRNPT4 - 1;         # BACK UP PAST TITLE LINE #
01215  M01S00146.ns2641  +++|      END
01216  M01S00147.ns2641  +++|    ELSE IF ROWTYPE[SCRNPT4] EQ ROWST"LABEL" THEN
01217  M01S00148.ns2641  +++|      BEGIN                          # IF PROTECTED LABEL LINE #
01218  M01S00149.ns2641  +++|      SCRNPT1 = MAX(SCRNPT1,FKEYLEN);
01219  M01S00150.ns2641  +++|      END
01220  M01S00151.ns2641  +++|    END
01221  M01S00997.fsescrn +++|  VDTCOR(SCRNPT4,SCRNPT1);
01222  M01S00998.fsescrn +++|  GOTO DSLOOP;
01223  M01S00999.fsescrn +++|
01224  M01S01000.fsescrn +++|DSDELL:
01225  M01S01001.fsescrn +++|  IF ALIGNGOOD THEN
01226  M01S01002.fsescrn +++|    BEGIN
01227  M01S01003.fsescrn +++|    IF CURRENT LS BOTS(CURSPLIT) THEN DELX;
01228  M01S01004.fsescrn +++|    END
01229  M01S01005.fsescrn +++|  ELSE
01230  M01S01006.fsescrn +++|    BEGIN
01231  M01S01007.fsescrn +++|    REJECT;
01232  M01S01008.fsescrn +++|    IF HARDFN AND NOT TABVTPROTM[0] THEN PAINTREST(YCURSOR);
01233  M01S00001.fsesc20 +++|    IF ROWTYPE[YCURSOR] EQ ROWST"COMMAND" THEN
01234  M01S00002.fsesc20 +++|      BEGIN                          # IF DELETE ON COMMAND LINE #
01235  M01S00003.fsesc20 +++|      SETCHAR(CMDLINE,0,CENDLINE);
01236  M01S00004.fsesc20 +++|      END
01237  M01S01009.fsescrn +++|    END
01238  M01S01010.fsescrn +++|  LINECHANGED=FALSE;
01239  M01S01011.fsescrn +++|  GOTO DSX0Y1;
01240  M01S01012.fsescrn +++|
01241  M01S01013.fsescrn +++|DSGENERIC:
01242  M01S01014.fsescrn +++|  IF FIRSTEVENT THEN CMDLINE[0]=NULLIN;
01243  M01S01015.fsescrn +++|  IF ABS(VTCHAR) EQ GENERICST"GHELP" THEN SETCMD("HELP");
01244  M01S01016.fsescrn +++|  ELSE IF ABS(VTCHAR) EQ GENERICST"GBACK" THEN SETCMD("BACK");
01245  M01S01017.fsescrn +++|  ELSE IF ABS(VTCHAR) EQ GENERICST"GDATA" THEN SETCMD("DATA");
01246  M01S01018.fsescrn +++|  ELSE IF ABS(VTCHAR) EQ GENERICST"GEDIT" THEN SETCMD("EDIT");
01247  M01S01019.fsescrn +++|  ELSE IF ABS(VTCHAR) EQ GENERICST"GSTOP" THEN
01248  M01S01020.fsescrn +++|    BEGIN
01249  M01S01021.fsescrn +++|    SETCMD("SETSCR");
01250  M01S01022.fsescrn +++|    IF NOT PROMPTING THEN SETCMD("SETLIN");
01251  M01S01023.fsescrn +++|    END
01252  M01S01024.fsescrn +++|  ELSE IF VTCHAR EQ GENERICST"GFWD" THEN SETCMD("VNS");
01253  M01S01025.fsescrn +++|  ELSE IF VTCHAR EQ GENERICST"GBKW" THEN SETCMD("VPS");
01254  M01S01026.fsescrn +++|  ELSE IF -VTCHAR EQ GENERICST"GFWD" THEN SETCMD("VL");
01255  M01S01027.fsescrn +++|  ELSE IF -VTCHAR EQ GENERICST"GBKW" THEN SETCMD("PF");
01256  M01S01028.fsescrn +++|  ELSE IF VTCHAR EQ GENERICST"GUP" THEN SETCMD("VN");
01257  M01S01029.fsescrn +++|  ELSE IF VTCHAR EQ GENERICST"GDOWN" THEN SETCMD("VP");
01258  M01S01030.fsescrn +++|  ELSE IF TABCURADDT[0] EQ 2 AND
01259  M01S01031.fsescrn +++|    TABVTFKLSM[0] NQ 0 AND
01260  M01S01032.fsescrn +++|    VTCHAR EQ GENERICST"GPOS" THEN
01261  M01S01033.fsescrn +++|    ROWPAINT[YCURSOR] = TRUE;        # 721 FULL DUPLEX TOUCH PANEL #
01262  M01S01034.fsescrn +++|  ELSE GOTO DSLOOP;
01263  M01S01035.fsescrn +++|  GOTO DSFKEY2;
01264  M01S01036.fsescrn +++|
01265  M01S01037.fsescrn +++|DSFKEY:
01266  M01S01038.fsescrn +++|  IF FIRSTEVENT THEN CMDLINE[0]=NULLIN;
01267  M01S01039.fsescrn +++|  IF ABS(VTCHAR) GR POSFKEYS OR VTCHAR EQ 0
01268  M01S01040.fsescrn +++|    THEN DSERRJMP("UNSUPPORTED FUNCTION KEY$");
01269  M01S01041.fsescrn +++|  P<KEYLIN>=LOC(FKEYSTRING[VTCHAR]);
01270  M01S01042.fsescrn +++|  SCRNPT2=LENGTH(KEYLIN);
01271  M01S01043.fsescrn +++|  IF SCRNPT2 GQ 15 THEN
01272  M01S01044.fsescrn +++|    BEGIN
01273  M01S01045.fsescrn +++|    PUSH;
01274  M01S01046.fsescrn +++|    POSZ(TOPK(FKEYS)+VTCHAR+POSFKEYS);
01275  M01S01047.fsescrn +++|    P<KEYLIN>=LOC(LIN);
01276  M01S01048.fsescrn +++|    ADDTOCMD;
01277  M01S01049.fsescrn +++|    POP;
01278  M01S01050.fsescrn +++|    END
01279  M01S01051.fsescrn +++|  ELSE ADDTOCMD;
01280  M01S01052.fsescrn +++|DSFKEY2:
01281  M01S01053.fsescrn +++|  HARDFN=FALSE;
01282  M01S01054.fsescrn +++|  IF TABVTFKLSM[0] NQ 0 THEN ROWPAINT[YCURSOR] = TRUE;
01283  M01S01055.fsescrn +++|  IF PROMPTING THEN                  # SIGNAL OVERRIDE OF SECONDARY #
01284  M01S01056.fsescrn +++|    BEGIN
01285  M01S01057.fsescrn +++|    HALT("DIRECTIVE CANCELLED BY FUNCTION KEY$");
01286  M01S01058.fsescrn +++|    ESCAPE=TRUE;
01287  M01S01059.fsescrn +++|    END
01288  M01S01060.fsescrn +++|  GOTO DSLOOP;
01289  M01S01061.fsescrn +++|
01290  M01S01062.fsescrn +++|DSERAC:
01291  M01S01063.fsescrn +++|  VTCHAR=X"20";  # BLANK #
01292  M01S01064.fsescrn +++|  VTORDN=SCREENST"CHAR";
01293  M01S01065.fsescrn +++|  GOTO DSCHAR;
01294  M01S01066.fsescrn +++|
01295  M01S01067.fsescrn +++|DSERAL:
01296  M01S01068.fsescrn +++|  IF ROWTYPE[YCURSOR] EQ ROWST"COMMAND" THEN
01297  M01S01069.fsescrn +++|    BEGIN
01298  M01S01070.fsescrn +++|    SETCHAR(CMDLINE,0,CENDLINE);
01299  M01S01071.fsescrn +++|    ROWPAINT[COMMANDROW] = FALSE;
01300  M01S01072.fsescrn +++|    END
01301  M01S01073.fsescrn +++|  ELSE IF ALIGNGOOD THEN
01302  M01S01074.fsescrn +++|    BEGIN
01303  M01S01075.fsescrn +++|    FOR SCRNPT1=XSHIFT[CURSPLIT] STEP 1
01304  M01S01076.fsescrn +++|      UNTIL EDITFIELD-1 DO SETCHAR(LINE,SCRNPT1,CBLANK);
01305  M01S01077.fsescrn +++|    SETCHAR(LINE,BUFCHAR,CENDLINE);
01306  M01S01078.fsescrn +++|    TRIMPAD;
01307  M01S01079.fsescrn +++|    LINECHANGED=TRUE;
01308  M01S01080.fsescrn +++|    END
01309  M01S01081.fsescrn +++|  ELSE REJECT;
01310  M01S01082.fsescrn +++|  GOTO DSX0Y1;
01311  M01S01083.fsescrn +++|
01312  M01S01084.fsescrn +++|DSFIELD:
01313  M01S01085.fsescrn +++|  IF YCURSOR EQ COMMANDROW THEN
01314  M01S01086.fsescrn +++|    BEGIN
01315  M01S01087.fsescrn +++|    VDTIINP;                         # GET FIRST CHARACTER OF FIELD #
01316  M01S01088.fsescrn +++|    FOR SCRNPT1 = 0 STEP 1 WHILE VTORDN EQ SCREENST"CHAR" DO
01317  M01S01089.fsescrn +++|      BEGIN
01318  M01S01090.fsescrn +++|      MOVETEXT(CMDLIN,SCRNPT1,BUFCM1);
01319  M01S01091.fsescrn +++|      VDTIINP;                       # GET NEXT CHARACTER OF FIELD #
01320  M01S01092.fsescrn +++|      END
01321  M01S01093.fsescrn +++|    SETCHAR(CMDLINE,SCRNPT1,CENDLINE);
01322  M01S01094.fsescrn +++|    ROWPAINT[COMMANDROW] = TRUE;
01323  M01S01095.fsescrn +++|    END
01324  M01S01096.fsescrn +++|  ELSE
01325  M01S01097.fsescrn +++|    BEGIN
01326  M01S01098.fsescrn +++|    EXTEND;
01327  M01S01099.fsescrn +++|    IF ALIGNGOOD THEN
01328  M01S01100.fsescrn +++|      BEGIN                          # IF ALIGN IS O.K. #
01329  M01S01101.fsescrn +++|      SCRNPT2 = LENGTH(LIN);         # SAVE CURRENT LINE LENGTH #
01330  M01S01102.fsescrn +++|      VDTIINP;                       # GET FIRST CHARACTER OF FIELD #
01331  M01S01103.fsescrn +++|      FOR XCURSOR = 0 STEP 1 WHILE VTORDN EQ SCREENST"CHAR" DO
01332  M01S01104.fsescrn +++|        BEGIN
01333  M01S01105.fsescrn +++|        IF XCURSOR + XSHIFT[CURSPLIT] LS EDITFIELD THEN
01334  M01S01106.fsescrn +++|          BEGIN                      # IF WITHIN EDITING WINDOW #
01335  M01S01107.fsescrn +++|          SCRNPT1 = XLTXPINT[VTCHAR];
01336  M01S01108.fsescrn +++|          IF ASCII[CURFILE] LQ 1 THEN
01337  M01S01109.fsescrn +++|            BEGIN                    # IF SUPPRESSING LOWER CASE #
01338  M01S01110.fsescrn +++|            # CODE IS DEPENDENT ON PRECISE VALUES OF INTERNAL CHARSET #
01339  M01S01111.fsescrn +++|            CONTROL IFNQ CLEFTCURL,O"133"; DEFERROR; CONTROL FI;
01340  M01S01112.fsescrn +++|            CONTROL IFNQ CVERTICAL,O"134"; DEFERROR; CONTROL FI;
01341  M01S01113.fsescrn +++|            CONTROL IFNQ CRITECURL,O"135"; DEFERROR; CONTROL FI;
01342  M01S01114.fsescrn +++|            CONTROL IFNQ CTILDE,O"136"; DEFERROR; CONTROL FI;
01343  M01S01115.fsescrn +++|            CONTROL IFNQ CGRAVE,O"100"; DEFERROR; CONTROL FI;
01344  M01S01116.fsescrn +++|            CONTROL IFNQ CCOLON,O"000"; DEFERROR; CONTROL FI;
01345  M01S01117.fsescrn +++|            # REPAINT IF NON-EXISTENT DISPLAY CODE CHARACTER #
01346  M01S01118.fsescrn +++|            IF (SCRNPT1 GQ O"133" AND SCRNPT1 LQ O"136")
01347  M01S01119.fsescrn +++|              OR (SCRNPT1 EQ O"100") THEN ROWPAINT[YCURSOR] = TRUE;
01348  M01S01120.fsescrn +++|            IF (B<00,01>MEM[CSMR] EQ 0)
01349  M01S01121.fsescrn +++|              AND (SCRNPT1 EQ O"000") THEN ROWPAINT[YCURSOR]=TRUE;
01350  M01S01122.fsescrn +++|            DSPLCOD(SCRNPT1);        # SUPRESS LOWER CASE #
01351  M01S01123.fsescrn +++|            END
01352  M01S01124.fsescrn +++|          SETCHAR(LINE,XCURSOR+XSHIFT[CURSPLIT],SCRNPT1);
01353  M01S01125.fsescrn +++|          IF SCRNPT1 EQ TABCHAR THEN
01354  M01S01126.fsescrn +++|            BEGIN                    # IF SOFT TAB #
01355  M01S01127.fsescrn +++|            SOFTTAB = TRUE;
01356  M01S01128.fsescrn +++|            ROWPAINT[YCURSOR] = TRUE;
01357  M01S01129.fsescrn +++|            END
01358  M01S01130.fsescrn +++|          END
01359  M01S01131.fsescrn +++|        VDTIINP;                     # GET NEXT CHARACTER OF FIELD #
01360  M01S01132.fsescrn +++|        END
01361  M01S01133.fsescrn +++|#
01362  M01S01134.fsescrn +++|      PERFORM NECESSARY PADDING AND SET END OF LINE.
01363  M01S01135.fsescrn +++|#
01364  M01S01136.fsescrn +++|      SCRNPT1 = XSHIFT[CURSPLIT] + XCURSOR;
01365  M01S01137.fsescrn +++|      IF SCRNPT1 LS SCRNPT2 THEN
01366  M01S01138.fsescrn +++|        BEGIN                        # IF LINE WAS SHORTENED #
01367  M01S01139.fsescrn +++|        FOR SCRNPT3 = SCRNPT1 STEP 1 UNTIL
01368  M01S01140.fsescrn +++|          MIN(SCRNPT2-1,MIN(EDITFIELD-1,XSHIFT[CURSPLIT]+USRNUMCOL)) DO
01369  M01S01141.fsescrn +++|          BEGIN
01370  M01S01142.fsescrn +++|          SETCHAR(LINE,SCRNPT3,CBLANK);
01371  M01S01143.fsescrn +++|          END
01372  M01S01144.fsescrn +++|        TRIMPAD;
01373  M01S01145.fsescrn +++|        END
01374  M01S01146.fsescrn +++|      ELSE
01375  M01S01147.fsescrn +++|        BEGIN                        # LINE NOT SHORTENED #
01376  M01S01148.fsescrn +++|        IF SCRNPT2 LS XSHIFT[CURSPLIT] THEN
01377  M01S01149.fsescrn +++|          BEGIN                      # IF LINE LENGTHENED #
01378  M01S01150.fsescrn +++|          IF EDITFIELD GQ XSHIFT[CURSPLIT] THEN
01379  M01S01151.fsescrn +++|            BEGIN                    # IF WITHIN EDITING WINDOW #
01380  M01S01152.fsescrn +++|            FOR SCRNPT3 = SCRNPT2 STEP 1 UNTIL XSHIFT[CURSPLIT] - 1 DO
01381  M01S01153.fsescrn +++|              SETCHAR(LINE,SCRNPT3,CBLANK);
01382  M01S01154.fsescrn +++|            SETCHAR(LINE,MIN(SCRNPT1,EDITFIELD),CENDLINE);
01383  M01S01155.fsescrn +++|            END
01384  M01S01156.fsescrn +++|          END
01385  M01S01157.fsescrn +++|        ELSE
01386  M01S01158.fsescrn +++|          BEGIN                      # NO CHANGE IN LINE LENGTH #
01387  M01S01159.fsescrn +++|          SETCHAR(LINE,MIN(SCRNPT1,MAX(SCRNPT2,EDITFIELD)),CENDLINE);
01388  M01S01160.fsescrn +++|          END
01389  M01S01161.fsescrn +++|        END
01390  M01S01162.fsescrn +++|      LINECHANGED = TRUE;            # TEXT OF LINE ALTERED #
01391  M01S01163.fsescrn +++|      END
01392  M01S01164.fsescrn +++|    ELSE
01393  M01S01165.fsescrn +++|      BEGIN                          # ALIGN BAD #
01394  M01S01166.fsescrn +++|      REJECT;                        # REJECT CHANGE #
01395  M01S01167.fsescrn +++|      END
01396  M01S01168.fsescrn +++|    END
01397  M01S01169.fsescrn +++|  GOTO DSLOOP3;                      # CONTINUE WITH INPUT #
01398  M01S01170.fsescrn +++|
01399  M01S01171.fsescrn +++|
01400  M01S01172.fsescrn +++|DSBAD:
01401  M01S01173.fsescrn +++|  ERRSTRING = "UNKNOWN CONTROL KEY, CHECK SCREEN$";
01402  M01S01174.fsescrn +++|  ROWPAINT[VTYCUR] = TRUE;           # SIGNAL REPAINT OF LINE #
01403  M01S01175.fsescrn +++|  GOTO DSLOOP;
01404  M01S01176.fsescrn +++|
01405  M01S01177.fsescrn +++|  IOEND  # DOSCREEN #
01406  M01S01178.fsescrn +++|PAGE                         # SCREEN OUTPUT/CONTROL   #
01407  M01S01179.fsescrn +++|
01408  M01S01180.fsescrn +++|
01409  M01S01181.fsescrn +++|PROC PAINTMARKS(MARKTYPE);
01410  M01S01182.fsescrn +++|  BEGIN
01411  M01S01183.fsescrn +++|#
01412  M01S01184.fsescrn +++|**        PAINTMARKS - SET SCREEN PAINT BITS FOR MARKS.
01413  M01S01185.fsescrn +++|*
01414  M01S01186.fsescrn +++|*         ENTRY  MARKTYPE - 1=FORCE HIGHLIGHTING ON.
01415  M01S01187.fsescrn +++|*                           2=MAINTAIN EXISTING HIGHLIGHTS.
01416  M01S01188.fsescrn +++|*                           3=FORCE HIGHLIGHTING OFF.
01417  M01S01189.fsescrn +++|*                TOPS(BOTH), BOTS(BOTH) - SETUP.
01418  M01S01190.fsescrn +++|*                REGLINE[MARKREG AND MARKREG+1] - ALREADY SET.
01419  M01S01191.fsescrn +++|*                SPLITFILE[2] - WHETHER TWO SPLITS ARE ON SCREEN.
01420  M01S01192.fsescrn +++|*
01421  M01S01193.fsescrn +++|*         EXIT   ROWPMARK[ALL] - FORCED ON OR OFF BY REGIONS.
01422  M01S01194.fsescrn +++|*                ROWPAINT[ANY] - FORCED TRUE AS NEEDED.
01423  M01S01195.fsescrn +++|*
01424  M01S01196.fsescrn +++|*         CALLS  DOMARK (INTERNAL).
01425  M01S01197.fsescrn +++|#
01426  M01S01198.fsescrn +++|  ITEM MARKTYPE;
01427  M01S01199.fsescrn +++|
01428  M01S01200.fsescrn +++|  PROC DOMARK(SPLT);
01429  M01S01201.fsescrn +++|    BEGIN
01430  M01S01202.fsescrn +++|#
01431  M01S01203.fsescrn +++|**        DOMARK - WORKING PORTION OF PAINTMARKS.
01432  M01S01204.fsescrn +++|*
01433  M01S01205.fsescrn +++|*         NOTE   REFER TO PAINTMARKS HEADER.
01434  M01S01206.fsescrn +++|#
01435  M01S01207.fsescrn +++|    ITEM L1, L2, SPLT;
01436  M01S01208.fsescrn +++|    FOR L1=TOPS(SPLT)+1 STEP 1 UNTIL BOTS(SPLT)-1 DO
01437  M01S01209.fsescrn +++|      BEGIN
01438  M01S01210.fsescrn +++|      L2=LTOY(L1,SPLT);
01439  M01S01211.fsescrn +++|      ROWPMARK[L2]=FALSE;
01440  M01S01212.fsescrn +++|      IF L1 GQ REGLINE[MARKREG] AND L1 LQ REGLINE[MARKREG+1] THEN
01441  M01S01213.fsescrn +++|        BEGIN
01442  M01S01214.fsescrn +++|        IF MARKTYPE NQ 2 THEN ROWPAINT[L2]=TRUE;
01443  M01S01215.fsescrn +++|        IF MARKTYPE NQ 3 THEN ROWPMARK[L2]=TRUE;
01444  M01S01216.fsescrn +++|        END
01445  M01S01217.fsescrn +++|        IF TABATTRCHR[0] THEN
01446  M01S01218.fsescrn +++|          BEGIN                      # IF ATTRIBUTE TAKES A POS #
01447  M01S01219.fsescrn +++|          IF L1 EQ REGLINE[MARKREG] AND MARKTYPE EQ 3 THEN
01448  M01S01220.fsescrn +++|            BEGIN                    # IF CLEARING MARKS #
01449  M01S01221.fsescrn +++|            ROWPAINT[L2-1] = TRUE;   # FLAG FOR REPAINT #
01450  M01S01222.fsescrn +++|            END
01451  M01S01223.fsescrn +++|          END
01452  M01S01224.fsescrn +++|      END
01453  M01S01225.fsescrn +++|    END
01454  M01S01226.fsescrn +++|
01455  M01S01227.fsescrn +++|  IF NUMMARKS GR 0 THEN        # SEE IF NEED TO HIGHLIGHT ANY #
01456  M01S01228.fsescrn +++|    BEGIN
01457  M01S01229.fsescrn +++|    DOMARK(1);
01458  M01S01230.fsescrn +++|    IF SPLITFILE[2] NQ 0 THEN DOMARK(2);
01459  M01S01231.fsescrn +++|    END
01460  M01S01232.fsescrn +++|
01461  M01S01233.fsescrn +++|  END                             # OF PAINTMARKS #
01462  M01S01234.fsescrn +++|
01463  M01S01235.fsescrn +++|
01464  M01S01236.fsescrn +++|PROC PAINTSCREEN;
01465  M01S01237.fsescrn +++|  IOBEGIN(PAINTSCREEN)
01466  M01S01238.fsescrn +++|#
01467  M01S01239.fsescrn +++|**        PAINTSCREEN - OUTPUT NORMAL AND SECONDARY DISPLAYS.
01468  M01S01240.fsescrn +++|*
01469  M01S01241.fsescrn +++|*         PAINTSCREEN IS CALLED TO FILL A DISPLAY PAGE.  THE
01470  M01S01242.fsescrn +++|*         PROMPTING FLAG INDICATES WHETHER THIS IS A NORMAL
01471  M01S01243.fsescrn +++|*         (PRIMARY) DISPLAY OR A SECONDARY DISPLAY.  THE ROWPAINT
01472  M01S01244.fsescrn +++|*         BITS INDICATE WHICH PORTIONS OF THE SCREEN ARE ALREADY
01473  M01S01245.fsescrn +++|*         CORRECT AND WHICH REALLY NEED TO BE PAINTED.  THE YCURSOR
01474  M01S01246.fsescrn +++|*         IS FORCED TO POINT TO EITHER TEXT OR THE COMMAND AREA IF
01475  M01S01247.fsescrn +++|*         IT DOES NOT ALREADY.  ANY MESSAGE IN THE ERROR STRING
01476  M01S01248.fsescrn +++|*         BUFFER IS OUTPUT AND CLEARED.  IF AN ERROEOUS COMMAND WAS
01477  M01S01249.fsescrn +++|*         PREVIOUSLY ATTEMPTED, PAINTSCREEN RECOGNIZES THIS AND
01478  M01S01250.fsescrn +++|*         RE-PRINTS THE OLD COMMAND BUFFER WITH THE CURSOR FLASHING
01479  M01S01251.fsescrn +++|*         AT THE ILLEGAL SYNTAX.  FILE POSITIONING IS FORCED TO
01480  M01S01252.fsescrn +++|*         ALIGN WITH THE CURSOR FOR ON-TEXT CURSORS.  TITLE LINES
01481  M01S01253.fsescrn +++|*         ARE VERIFIED FOR CORRECTNESS AND POSSIBLY PAINTED.
01482  M01S01254.fsescrn +++|*
01483  M01S01255.fsescrn +++|*         ENTRY  YCURSOR - COMMAND PROCESSOR'S FAVORITE CURSOR.
01484  M01S01256.fsescrn +++|*                    NEGATIVE=SELECT CURSOR FOR CURRENT LINE.
01485  M01S01257.fsescrn +++|*                    ON TEXT OR COMMAND ROW=USE THAT.
01486  M01S01258.fsescrn +++|*                XCURSOR - ALSO WHERE COMMAND PROCESSOR WANT IT.
01487  M01S01259.fsescrn +++|*                VTXMAX - MAXIMUM COLUMN POSITION.
01488  M01S01260.fsescrn +++|*                ROWTYPE[ALL], ROWSPLIT[ALL] - SETUP.
01489  M01S01261.fsescrn +++|*                SPLITFILE[1-2] - SETUP.
01490  M01S01262.fsescrn +++|*                CURRENT, CURFILE, CURSPLIT - WHERE WE ARE.
01491  M01S01263.fsescrn +++|*                PROMPTING - PRIMARY OR SECONDARY DISPLAY.
01492  M01S01264.fsescrn +++|*                LTPS(1-2), LASTBOTS, LASTSIZE, LASTNAME - MUST
01493  M01S01265.fsescrn +++|*                    BE LEFT OVER FROM PREVIOUS PAINTSCREEN OR -1.
01494  M01S01266.fsescrn +++|*                COMMANDROW - SETUP.
01495  M01S01267.fsescrn +++|*                ROWORIG[ALL] - MUST BE AS LEFT BY LAST CALL HERE
01496  M01S01268.fsescrn +++|*                    EXCEPT AS UPDATED BY DELX AND INSX.
01497  M01S01269.fsescrn +++|*                ROWPAINT[ALL] - WHICH LINES NEED PAINTING.
01498  M01S01270.fsescrn +++|*                TOPS(1-2), BOTS(1-2) - SETUP.
01499  M01S01271.fsescrn +++|*                ROWCOLUM[ALL] - WHERE WANT SCALE PATTERN PAINTED.
01500  M01S01272.fsescrn +++|*                XSHIFT[1-2] - SETUP.
01501  M01S01273.fsescrn +++|*                MRKCHAR[0-1] - SETUP.
01502  M01S01274.fsescrn +++|*                USRNUMCOL, USRNUMLIN - LOGICAL DIMENSIONS.
01503  M01S01275.fsescrn +++|*                ERRSTRING - ERROR MESSAGE BUFFER.
01504  M01S01276.fsescrn +++|*                CMDLIN - RESIDUAL COMMAND BUFFER.
01505  M01S01277.fsescrn +++|*                TOPF(1-2), BOTF(1-2) - SETUP.
01506  M01S01278.fsescrn +++|*                FKEYSHOW - HOW MANY FUNCTION KEYS TO DISPLAY.
01507  M01S00001.ns2700  +++|*                SHIFTFKEY - FLAG TO DISPLAY SHIFTED FUNCTION KEYS.
01508  M01S01279.fsescrn +++|*                ERRCURSOR - IF POSITIVE, XCURSOR FOR SYNTAX ERROR.
01509  M01S01280.fsescrn +++|*
01510  M01S01281.fsescrn +++|*         EXIT   XCURSOR, YCURSOR - POSSIBLY AT NEW LOCATION.
01511  M01S01282.fsescrn +++|*                TOPS(1-2), BOTS(1-2) - POSSIBLY UPDATED.
01512  M01S01283.fsescrn +++|*                CURFILE - UPDATED IF YCURSOR UPDATED.
01513  M01S01284.fsescrn +++|*                CURSPLIT - UPDATED IF YCURSOR UPDATED.
01514  M01S01285.fsescrn +++|*                ERRSTRING - POSSIBLY WIDE LINE WARNING.
01515  M01S01286.fsescrn +++|*                ROWPAINT[ALL] - FALSE EXCEPT POSSIBLY COMMANDROW.
01516  M01S01287.fsescrn +++|*                ROWORIG[ALL] - REDEFINED.
01517  M01S01288.fsescrn +++|*                ROWCOLUM[ALL] - FALSE.
01518  M01S01289.fsescrn +++|*                ROWPMARK[ALL] - FALSE.
01519  M01S01290.fsescrn +++|*                LTPS(1-2), LASTBOTS, LASTSIZE, LASTNAME - REDEFINED.
01520  M01S01291.fsescrn +++|*
01521  M01S01292.fsescrn +++|*         MACROS GETCHAR, SETCHAR, LTOY.
01522  M01S01293.fsescrn +++|*
01523  M01S01294.fsescrn +++|*         CALLS  GENDECIMAL, GENLITERAL, GENNAME, GENTITLE, LENGTH,
01524  M01S01295.fsescrn +++|*                PAINTMARKS, PAINTSPLIT, POSZ, SETTOPBOTS, TRIMPAD,
01525  M01S01296.fsescrn +++|*                TTLCSTR, TTDEC, TTLFN, TTSTR, TTST, VDTCHR, VDTCLL
01526  M01S01297.fsescrn +++|*                VDTPOS, VDTSAM.
01527  M01S01298.fsescrn +++|*
01528  M01S01299.fsescrn +++|*         USES   SPLIT, FILNUM, FKEYNDX, SCRNPT1, SCRNPT2,
01529  M01S01300.fsescrn +++|*                SCRNPT3, SCRNPT4, SCRNPT5, SCRNPT6, LIN.
01530  M01S01301.fsescrn +++|#
01531  M01S01302.fsescrn +++|
01532  M01S01303.fsescrn +++|  SWITCH PAINTSW
01533  M01S01304.fsescrn +++|    PTEMPTY,                         # EMPTY LINE #
01534  M01S01305.fsescrn +++|    PTCMD,                           # COMMAND LINE #
01535  M01S01306.fsescrn +++|    PTTITLE,                         # TITLE LINE #
01536  M01S01307.fsescrn +++|    PTLABEL,                         # FUNCTION KEY LABEL LINE #
01537  M01S01308.fsescrn +++|    PTTEXT,                          # TEXT LINE #
01538  M01S01309.fsescrn +++|    PTRESPONSE;                      # FSE COMMAND RESPONSE LINE #
01539  M01S01310.fsescrn +++|
01540  M01S01311.fsescrn +++|
01541  M01S01312.fsescrn +++|  PROC GENDECIMAL(POS,VALUE);
01542  M01S01313.fsescrn +++|# TITLE GENDECIMAL - GENERATE A DECIMAL NUMBER. #
01543  M01S01314.fsescrn +++|
01544  M01S01315.fsescrn +++|    BEGIN  # GENDECIMAL #
01545  M01S01316.fsescrn +++|
01546  M01S01317.fsescrn +++|#
01547  M01S01318.fsescrn +++|**        GENDECIMAL - GENERATE A DECIMAL NUMBER.
01548  M01S01319.fsescrn +++|*
01549  M01S01320.fsescrn +++|*         CONVERT A DISPLAY CODE VALUE TO DECIMAL AND POSITION
01550  M01S01321.fsescrn +++|*         IT IN THE TTYLINE.
01551  M01S01322.fsescrn +++|*
01552  M01S01323.fsescrn +++|*         PROC GENDECIMAL(POS,VALUE)
01553  M01S01324.fsescrn +++|*
01554  M01S01325.fsescrn +++|*         EXIT   TTYLINE - SETUP.
01555  M01S01326.fsescrn +++|*
01556  M01S01327.fsescrn +++|*         CALLS  SETCHAR.
01557  M01S01328.fsescrn +++|*
01558  M01S01329.fsescrn +++|*         USES   TTYLINE.
01559  M01S01330.fsescrn +++|#
01560  M01S01331.fsescrn +++|
01561  M01S01332.fsescrn +++|    ITEM POS        I;               # POSITION OF NUMBER #
01562  M01S01333.fsescrn +++|    ITEM QUIT       B;               # FINISHED FLAG #
01563  M01S01334.fsescrn +++|    ITEM TMP1       I;               # TEMPORARY STORAGE #
01564  M01S01335.fsescrn +++|    ITEM TMP2       I;               # TEMPORARY STORAGE #
01565  M01S01336.fsescrn +++|    ITEM TMP3       I;               # TEMPORARY STORAGE #
01566  M01S01337.fsescrn +++|    ITEM VALUE      I;               # VALUE TO CONVERT #
01567  M01S01338.fsescrn +++|
01568  M01S01339.fsescrn +++|    TMP1=ABS(VALUE);
01569  M01S01340.fsescrn +++|    TMP2=0;                          # COUNT DIGITS #
01570  M01S01341.fsescrn +++|    QUIT=FALSE;
01571  M01S01342.fsescrn +++|    WHYLE NOT QUIT DO                # NOT DONE YET #
01572  M01S01343.fsescrn +++|      BEGIN
01573  M01S01344.fsescrn +++|      C<TMP2>TMP3=MOD(TMP1,10)+O"33";  # GET A DIGIT #
01574  M01S01345.fsescrn +++|      TMP1=TMP1/10;                  # REDUCE NUMBER #
01575  M01S01346.fsescrn +++|      TMP2=TMP2+1;                   # BUMP POINTER #
01576  M01S01347.fsescrn +++|      IF TMP1 EQ 0 THEN QUIT=TRUE;
01577  M01S01348.fsescrn +++|      END
01578  M01S01349.fsescrn +++|
01579  M01S01350.fsescrn +++|    FOR TMP1=1 STEP 1 UNTIL TMP2 DO
01580  M01S01351.fsescrn +++|      BEGIN
01581  M01S01352.fsescrn +++|      SETCHAR(TTYLINE,POS,XLTDSPINT[C<TMP2-TMP1>TMP3]);
01582  M01S01353.fsescrn +++|      POS=POS+1;
01583  M01S01354.fsescrn +++|      END
01584  M01S01355.fsescrn +++|
01585  M01S01356.fsescrn +++|    END  # GENDECIMAL #
01586  M01S01357.fsescrn +++|
01587  M01S01358.fsescrn +++|
01588  M01S01359.fsescrn +++|  PROC GENLITERAL(POS,STR);
01589  M01S01360.fsescrn +++|# TITLE GENLITERAL - GENERATE A LITERAL STRING. #
01590  M01S01361.fsescrn +++|
01591  M01S01362.fsescrn +++|    BEGIN  # GENLITERAL #
01592  M01S01363.fsescrn +++|
01593  M01S01364.fsescrn +++|#
01594  M01S01365.fsescrn +++|**        GENLITERAL - GENERATE A LITERAL STRING.
01595  M01S01366.fsescrn +++|*
01596  M01S01367.fsescrn +++|*         GENERATE A LITERAL STRING AND POSITION IT IN THE
01597  M01S01368.fsescrn +++|*         TTYLINE.
01598  M01S01369.fsescrn +++|*
01599  M01S01370.fsescrn +++|*         PROC GENLITERAL(POS,STR)
01600  M01S01371.fsescrn +++|*
01601  M01S01372.fsescrn +++|*         EXIT   TTYLINE - SETUP.
01602  M01S01373.fsescrn +++|*
01603  M01S01374.fsescrn +++|*         CALLS  SETCHAR.
01604  M01S01375.fsescrn +++|*
01605  M01S01376.fsescrn +++|*         USES   TTYLINE.
01606  M01S01377.fsescrn +++|#
01607  M01S01378.fsescrn +++|
01608  M01S01379.fsescrn +++|    ITEM BEGINWORD  B;               # BEGINNING WORD #
01609  M01S01380.fsescrn +++|    ITEM POS        I;               # POSITION OF STRING #
01610  M01S01381.fsescrn +++|    ITEM STR        C(40);           # STRING TO CONVERT #
01611  M01S01382.fsescrn +++|    ITEM TMP1       I;               # TEMPORARY STORAGE #
01612  M01S01383.fsescrn +++|    ITEM TMP2       I;               # TEMPORARY STORAGE #
01613  M01S01384.fsescrn +++|
01614  M01S01385.fsescrn +++|    BEGINWORD=TRUE;
01615  M01S01386.fsescrn +++|    TMP1=0;
01616  M01S01387.fsescrn +++|    WHYLE TMP1 LS 40 AND C<TMP1>STR NQ "$" DO
01617  M01S01388.fsescrn +++|      BEGIN
01618  M01S01389.fsescrn +++|      TMP2=C<TMP1>STR;
01619  M01S01390.fsescrn +++|      TMP2=XLTDSPINT[TMP2];
01620  M01S01391.fsescrn +++|      IF TMP2 GQ CLETTERA AND TMP2 LQ CLETTERZ THEN
01621  M01S01392.fsescrn +++|        BEGIN
01622  M01S01393.fsescrn +++|        IF NOT BEGINWORD THEN TMP2=TMP2+CLOWERA-CLETTERA;
01623  M01S01394.fsescrn +++|        BEGINWORD=FALSE;
01624  M01S01395.fsescrn +++|        END
01625  M01S01396.fsescrn +++|      ELSE BEGINWORD=TRUE;
01626  M01S01397.fsescrn +++|      SETCHAR(TTYLINE,POS,TMP2);
01627  M01S01398.fsescrn +++|      POS=POS+1;
01628  M01S01399.fsescrn +++|      TMP1=TMP1+1;
01629  M01S01400.fsescrn +++|      END
01630  M01S01401.fsescrn +++|
01631  M01S01402.fsescrn +++|    END  # GENLITERAL #
01632  M01S01403.fsescrn +++|
01633  M01S01404.fsescrn +++|
01634  M01S01405.fsescrn +++|  PROC GENNAME(POS,NAME);
01635  M01S01406.fsescrn +++|# TITLE GENNAME - GENERATE A NAME. #
01636  M01S01407.fsescrn +++|
01637  M01S01408.fsescrn +++|    BEGIN  # GENNAME #
01638  M01S01409.fsescrn +++|
01639  M01S01410.fsescrn +++|#
01640  M01S01411.fsescrn +++|**        GENNAME - GENERATE A NAME.
01641  M01S01412.fsescrn +++|*
01642  M01S01413.fsescrn +++|*         GENERATE A NAME AND POSITION IT IN THE TTYLINE.
01643  M01S01414.fsescrn +++|*
01644  M01S01415.fsescrn +++|*         PROC GENNAME(POS,NAME)
01645  M01S01416.fsescrn +++|*
01646  M01S01417.fsescrn +++|*         EXIT   TTYLINE - SETUP.
01647  M01S01418.fsescrn +++|*
01648  M01S01419.fsescrn +++|*         CALLS  SETCHAR.
01649  M01S01420.fsescrn +++|*
01650  M01S01421.fsescrn +++|*         USES   TTYLINE.
01651  M01S01422.fsescrn +++|#
01652  M01S01423.fsescrn +++|
01653  M01S01424.fsescrn +++|    ITEM NAME       C(07);           # NAME TO CONVERT #
01654  M01S01425.fsescrn +++|    ITEM POS        I;               # POSITION OF NAME #
01655  M01S01426.fsescrn +++|    ITEM TMP1       I;               # TEMPORARY STORAGE #
01656  M01S01427.fsescrn +++|    ITEM TMP2       I;               # TEMPORARY STORAGE #
01657  M01S01428.fsescrn +++|
01658  M01S01429.fsescrn +++|    FOR TMP1=0 STEP 1 UNTIL 6 DO
01659  M01S01430.fsescrn +++|      BEGIN
01660  M01S01431.fsescrn +++|      TMP2=C<TMP1>NAME;
01661  M01S01432.fsescrn +++|      IF TMP2 NQ 0 AND TMP2 NQ O"55" THEN
01662  M01S01433.fsescrn +++|        BEGIN
01663  M01S01434.fsescrn +++|        TMP2=XLTDSPINT[TMP2];
01664  M01S01435.fsescrn +++|        SETCHAR(TTYLINE,POS,TMP2);
01665  M01S01436.fsescrn +++|        POS=POS+1;
01666  M01S01437.fsescrn +++|        END
01667  M01S01438.fsescrn +++|      END
01668  M01S01439.fsescrn +++|
01669  M01S01440.fsescrn +++|    END  # GENNAME #
01670  M01S01441.fsescrn +++|
01671  M01S01442.fsescrn +++|
01672  M01S01443.fsescrn +++|  PROC GENTITLE(SPLIT);
01673  M01S01444.fsescrn +++|# TITLE GENTITLE - GENERATE TITLE LINE TEXT. #
01674  M01S01445.fsescrn +++|
01675  M01S01446.fsescrn +++|    BEGIN  # GENTITLE #
01676  M01S01447.fsescrn +++|
01677  M01S01448.fsescrn +++|#
01678  M01S01449.fsescrn +++|**        GENTITLE - GENERATE TITLE LINE TEXT.
01679  M01S01450.fsescrn +++|*
01680  M01S01451.fsescrn +++|*         GIVEN A SPLIT, GENERATE THE TITLE LINE.
01681  M01S01452.fsescrn +++|*
01682  M01S01453.fsescrn +++|*         PROC GENTITLE(SPLIT)
01683  M01S01454.fsescrn +++|*
01684  M01S01455.fsescrn +++|*         ENTRY  SPLIT - WHICH SPLIT TO GENERATE TITLE FOR.
01685  M01S01456.fsescrn +++|*
01686  M01S01457.fsescrn +++|*         EXIT   TTYLIN - TEXT FOR TITLE LINE.
01687  M01S01458.fsescrn +++|*
01688  M01S01459.fsescrn +++|*         CALLS  GENDECIMAL, GENLITERAL, GENNAME, SETCHAR.
01689  M01S01460.fsescrn +++|*
01690  M01S01461.fsescrn +++|          USES   TTYLIN.
01691  M01S01462.fsescrn +++|#
01692  M01S01463.fsescrn +++|
01693  M01S01464.fsescrn +++|    ITEM FILE       I;               # FILE SPLIT #
01694  M01S01465.fsescrn +++|    ITEM POS        I;               # POSITION OF TEXT #
01695  M01S01466.fsescrn +++|    ITEM SPLIT      I;               # TITLE SPLIT #
01696  M01S01467.fsescrn +++|
01697  M01S01468.fsescrn +++|    POS=0;
01698  M01S01469.fsescrn +++|    IF TABATTRCHR[0] THEN GENLITERAL(POS," $");
01699  M01S01470.fsescrn +++|    FILE=SPLITFILE[SPLIT];
01700  M01S01471.fsescrn +++|    IF ASCII[FILE] LQ 1 THEN GENLITERAL(POS,"UPPER CASE $");
01701  M01S01472.fsescrn +++|    GENLITERAL(POS,"FILE $");
01702  M01S01473.fsescrn +++|    GENNAME(POS,FILENAM[FILE]);
01703  M01S01474.fsescrn +++|    GENLITERAL(POS,"  $");
01704  M01S01475.fsescrn +++|    IF NOT SHORTTITLE THEN
01705  M01S01476.fsescrn +++|      BEGIN
01706  M01S01477.fsescrn +++|      IF TOPF(FILE)+1 EQ BOTF(FILE) THEN GENLITERAL(POS," EMPTY$");
01707  M01S01478.fsescrn +++|      ELSE
01708  M01S01479.fsescrn +++|        BEGIN
01709  M01S01480.fsescrn +++|        IF TOPS(SPLIT)+1 NQ BOTS(SPLIT) THEN
01710  M01S01481.fsescrn +++|          BEGIN
01711  M01S01482.fsescrn +++|          GENLITERAL(POS,"LINES $");
01712  M01S01483.fsescrn +++|          GENDECIMAL(POS,TOPS(SPLIT)+1-TOPF(FILNUM));
Proceed to Part 1
cdc/nos2.source/opl.opl871/deck/fsescrn.txt ยท Last modified: by 127.0.0.1