User Tools

Site Tools


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

Deck FSESCRN

Library Member Format: MODIFY

Listing Sections

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M00S00001.fsescrn +++|PROC FSESCRN;
00002  M00S00002.fsescrn +++|  BEGIN
00003  M00S00003.fsescrn +++|#
00004  M00S00004.fsescrn +++|***       FSESCRN - SCREEN EDITING MODULE.
00005  M00S00005.fsescrn +++|*
Line S00006 Modification History
M01 (Removed by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00006  M01S00006.281l803 ---|*         COPYRIGHT CONTROL DATA CORPORATION, 1983.
Line S00001 Modification History
M01 (Added by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00007  M01S00001.281l803 +++|*         COPYRIGHT CONTROL DATA SYSTEMS INC.  1992.
00008  M00S00007.fsescrn +++|#
00009  M00S00008.fsescrn +++|
00010  M00S00009.fsescrn +++|  DEF LISTCON #0#;
00011  M00S00010.fsescrn +++|
00012  M00S00011.fsescrn +++|*IFCALL SINGLE,COMFSGL
00013  M00S00012.fsescrn +++|*IFCALL ONLY,COMFONL
00014  M00S00013.fsescrn +++|*IFCALL MULTI,COMFMLT
00015  M00S00014.fsescrn +++|*CALL COMFFSE
00016  M00S00015.fsescrn +++|*CALL COMFDS1
00017  M00S00016.fsescrn +++|*CALL COMFVD2
00018  M00S00017.fsescrn +++|*CALL COMFDS2
00019  M00S00018.fsescrn +++|*CALL COMFTAB
00020  M00S00019.fsescrn +++|
00021  M00S00020.fsescrn +++|*CALL COMFVDT
00022  M00S00021.fsescrn +++|
00023  M00S00022.fsescrn +++|CONTROL IFEQ MULTI,1;
00024  M00S00023.fsescrn +++|  XREF ARRAY RENTSTK [1:MAXREENT];     # SUBROUTINE STACK  #
00025  M00S00024.fsescrn +++|    BEGIN
00026  M00S00025.fsescrn +++|    ITEM RSTK;
00027  M00S00026.fsescrn +++|    END
00028  M00S00027.fsescrn +++|  XREF ITEM RSTKPTR;
00029  M00S00028.fsescrn +++|CONTROL FI;
00030  M00S00029.fsescrn +++|
00031  M00S00030.fsescrn +++|
00032  M00S00031.fsescrn +++|XDEF
00033  M00S00032.fsescrn +++|  BEGIN
00034  M00S00033.fsescrn +++|*CALL COMFXSC
00035  M00S00034.fsescrn +++|  END
00036  M00S00035.fsescrn +++|
00037  M00S00036.fsescrn +++|XREF
00038  M00S00037.fsescrn +++|  BEGIN
00039  M00S00038.fsescrn +++|*CALL COMFXVT
00040  M00S00039.fsescrn +++|*CALL COMFXTI
00041  M00S00040.fsescrn +++|*CALL COMFXFO
00042  M00S00041.fsescrn +++|*CALL COMFXSB
00043  M00S00042.fsescrn +++|*CALL COMFXED
00044  M00S00043.fsescrn +++|  END
00045  M00S00044.fsescrn +++|
00046  M00S00045.fsescrn +++|XREF FUNC LENGTH;   # COMPASS ROUTINES #
00047  M00S00046.fsescrn +++|XREF PROC MOVEWD;   XREF PROC EXCHWD;
00048  M00S00047.fsescrn +++|#
00049  M00S00048.fsescrn +++|  MASKS FOR SETTING THE VARIOUS ATTRIBUTES IN ATTRIBMASK (COMFVD2)
00050  M00S00049.fsescrn +++|#
00051  M00S00050.fsescrn +++|  DEF MSKLOGICAL #O"4000"#;          # LOGICAL ATTRIBUTE #
00052  M00S00051.fsescrn +++|  DEF MSKPROTECT #O"2000"#;          # PROTECT #
00053  M00S00052.fsescrn +++|  DEF MSKGUARDMD #O"1000"#;          # GUARD MODE #
00054  M00S00053.fsescrn +++|  DEF MSKUNDERLN #O"0010"#;          # UNDERLINE #
00055  M00S00054.fsescrn +++|  DEF MSKALTERIN #O"0004"#;          # ALTERNATE INTENSITY #
00056  M00S00055.fsescrn +++|  DEF MSKINVERSE #O"0002"#;          # INVERSE #
00057  M00S00056.fsescrn +++|  DEF MSKBLINKMD #O"0001"#;          # BLINK MODE #
00058  M00S00057.fsescrn +++|PAGE                         # DOSCREEN - SCREEN MANIPULATIONS       #
00059  M00S00058.fsescrn +++|
00060  M00S00059.fsescrn +++|
00061  M00S00060.fsescrn +++|PROC DOSCREEN;
00062  M00S00061.fsescrn +++|  IOBEGIN(DOSCREEN)
00063  M00S00062.fsescrn +++|#
00064  M00S00063.fsescrn +++|**        DOSCREEN - MIMIC ON-SCREEN MANIPULATIONS IN INPUT.
00065  M00S00064.fsescrn +++|*
00066  M00S00065.fsescrn +++|*         DOSCREEN PROCESSES ALL SCREEN MODE INPUT.  IT PERFORMS
00067  M00S00066.fsescrn +++|*         FILE MANIPULATIONS TO MIMIC SCREEN MANIPULATIONS.  IT
00068  M00S00067.fsescrn +++|*         KEEPS FILE POSITIONING UP TO DATE WITH THE USERS CURSOR
00069  M00S00068.fsescrn +++|*         POSITIONING.  IT COMPUTES NEW DEFAULT CURSOR POSITIONING
00070  M00S00069.fsescrn +++|*         BETWEEN TRANSACTIONS.  IT PROCESS SOME FUNCTION KEYS
00071  M00S00070.fsescrn +++|*         INTERNALLY AND CONVERTS OTHER FUNCTION KEYS INTO COMMAND
00072  M00S00071.fsescrn +++|*         STRINGS.  DOSCREEN SHOULD BE CALLED ALTERNATING WITH THE
00073  M00S00072.fsescrn +++|*         COMMAND SCANNER AND THE SCREEN PAINTER.
00074  M00S00073.fsescrn +++|*
00075  M00S00074.fsescrn +++|*         ENTRY  CMDLIN - REPAIRABLE COMMANDS IF ANY OR NULL.
00076  M00S00075.fsescrn +++|*                OUTPUT CYCLE (PAINTSCREEN) EXECUTED.
00077  M00S00076.fsescrn +++|*                VTXCUR, VTYCUR - CURSOR AS SET BY OUTPUT.
00078  M00S00077.fsescrn +++|*                CURFILE, CURSPLIT, CURRENT - AS SET BY
00079  M00S00078.fsescrn +++|*                    COMMAND PROCESSING.
00080  M00S00079.fsescrn +++|*                FILENAM[1-2], FILEATTR[1-2] - SET UP.
00081  M00S00080.fsescrn +++|*                XSHIFT[1-2], YSHIFT[1-2] - SHIFT FACTORS.
00082  M00S00081.fsescrn +++|*                TOPS(1-2), BOTS(1-2), BOTF(1-2) - SCREEN BOUNDARIES.
00083  M00S00082.fsescrn +++|*                SETUPSCREEN ALREADY CALLED. (TITLEROW[1-2],
00084  M00S00083.fsescrn +++|*                    NUMROWS[1-2], ROWTYPE[1-2], ETC, SETUP)
00085  M00S00084.fsescrn +++|*                ROWPAINT[ALL] - FALSE SINCE PAINTSCREEN CALLED.
00086  M00S00085.fsescrn +++|*                FKEYNAME[ALL,ALL] - SETUP.
00087  M00S00086.fsescrn +++|*                CHARRANGE - INDICATES LINE OR CHARACTER MARKING.
00088  M00S00087.fsescrn +++|*                TABVTPROTM[0] - SETUP.
00089  M00S00088.fsescrn +++|*                COMMANDROW - SETUP.
00090  M00S00089.fsescrn +++|*                PROMPTING - INDICATES NORMAL OR SPECIAL PROMPT.
00091  M00S00090.fsescrn +++|*                EDITFIELD - LOGICAL RIGHT LIMIT ON CHANGES.
00092  M00S00091.fsescrn +++|*
00093  M00S00092.fsescrn +++|*         EXIT   CMDLIN - REPAIRED OR NEWLY ENTERED COMMANDS.
00094  M00S00093.fsescrn +++|*                ROWPAINT[ANY] - POSSIBLY TRUE.
00095  M00S00094.fsescrn +++|*                VTXCUR, VTYCUR - CURSOR AS MOVED BY USER.
00096  M00S00095.fsescrn +++|*                XCURSOR, YCURSOR - SET BY USER THEN POSSIBLY
00097  M00S00096.fsescrn +++|*                    UPDATED TO ADVANCE THRU FILE OR TO STAY
00098  M00S00097.fsescrn +++|*                    WITH DATA UPON AUTO HALF-PAGE ADVANCE.
00099  M00S00098.fsescrn +++|*                XSHIFT[1-2], YSHIFT[1-2] - POSSIBLY UPDATED.
00100  M00S00099.fsescrn +++|*                TOPS(1-2), BOTS(1-2), BOTF(1-2) - UPDATED.
00101  M00S00100.fsescrn +++|*                CURFILE, CURSPLIT, CURRENT - AS SELECTED BY USER.
00102  M00S00101.fsescrn +++|*                CURCURSOR - USERS LAST VTXCUR, SHIFTED.
00103  M00S00102.fsescrn +++|*                HARDFN - FALSE TO ALLOW PROPER COMMAND OPERATION.
00104  M00S00103.fsescrn +++|*                LIN - TEXT CORRESPONDING TO CURRENT, CURFILE.
00105  M00S00104.fsescrn +++|*
00106  M00S00105.fsescrn +++|*         MACROS GETCHAR, SETCHAR, YTOL, LTOY.
00107  M00S00106.fsescrn +++|*
00108  M00S00107.fsescrn +++|*         CALLS  (INTERNAL) - ALIGN, CLEANLINE, DELTEXT, DSERRJMP,
00109  M00S00108.fsescrn +++|*                EXTEND, INCRCURSOR, INSTEXT, MOVETEXT, REJECT,
00110  M00S00109.fsescrn +++|*                SETCMD, SETCURSOR.
00111  M00S00110.fsescrn +++|*                (EXTERNAL) - BAKZ, DELX, INSX, LENGTH, PAINTALL,
00112  M00S00111.fsescrn +++|*                PAINTREST, PAINTSPLIT, SETBOTS, SETMARK, SETTOPS,
00113  M00S00112.fsescrn +++|*                TRIMPAD, VDTBOO, VDTEOO, VDTINP, VDTPPI, VFYLOCK.
00114  M00S00113.fsescrn +++|*
00115  M00S00114.fsescrn +++|*         USES   ALIGNGOOD, COMPUTEDPOS, FKEYNDX, HARDFN, LINECHANGED,
00116  M00S00115.fsescrn +++|*                OLDVTXCUR, OLDVTYCUR, READNAM, SCREENLIMIT, SCRNPT1,
00117  M00S00116.fsescrn +++|*                SCRNPT2, SCRNPT3, SCRNPT4, SCRNPT5, SOFTTAB.
00118  M00S00117.fsescrn +++|*
00119  M00S00118.fsescrn +++|*         NOTE -
00120  M00S00119.fsescrn +++|*
00121  M00S00120.fsescrn +++|*         DOSCREEN MUST PROCESS ALL INPUT CHARACTERS.  THE ONLY UN-
00122  M00S00121.fsescrn +++|*         FINISHED BUSINESS IT MAY LEAVE WOULD BE THE CONTENTS OF THE
00123  M00S00122.fsescrn +++|*         COMMAND BUFFER LINE.  DOSCREEN CAN EXIT ONLY THROUGH THE
00124  M00S00123.fsescrn +++|*         "DSEOI" SECTION OR THRU THE DSERRJMP ROUTINE.  DOSCREEN MUST
00125  M00S00124.fsescrn +++|*         THEREFORE BE FUNCTIONALLY EQUIVALENT IN BOTH SINGLE AND MULTI
00126  M00S00125.fsescrn +++|*         USER VERSIONS.  THE ONLY SINGLE/MULTI COMPILE-TIME DIFFERENCE
00127  M00S00126.fsescrn +++|*         ALLOWABLE WOULD BE MODULE-DEPENDENT OPTIMIZATIONS WHICH CAUSE
00128  M00S00127.fsescrn +++|*         NO TRANSITIONS TO OCCUR.
00129  M00S00128.fsescrn +++|#
00130  M00S00129.fsescrn +++|
00131  M00S00130.fsescrn +++|  # NOTE -- SCREENSW AND VIRTERMATR MUST MATCH SCREENST #
00132  M00S00131.fsescrn +++|
Line S00132 Modification History
M01 (Removed by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00133  M01S00132.ns2641  ---|  SWITCH SCREENSW  DSDUMMY, DSCHAR, DSINSC, DSDELC, DSINSL,
Line S00001 Modification History
M01 (Added by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00134  M01S00001.ns2641  +++|  SWITCH SCREENSW  DSCLRALL, DSCHAR, DSINSC, DSDELC, DSINSL,
00135  M00S00133.fsescrn +++|    DSDELL, DSCLRPAG, DSCLREOP, DSCLRUNP, DSCLREOL, DSPOS,
00136  M00S00134.fsescrn +++|    DSHOME, DSUP, DSDOWN, DSLEFT, DSRIGHT, DSFTAB, DSBTAB,
00137  M00S00135.fsescrn +++|    DSRET, DSERAC, DSERAL, DSEOI, DSRESET, DSFKEY, DSGENERIC,
Line S00136 Modification History
M01 (Removed by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00138  M01S00136.ns2641  ---|    DSBAD, DSNOOP, DSCOORD, DSPROTECT, DSFIELD, DSRSRV1, DSRSRV2;
Line S00002 Modification History
M01 (Added by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00139  M01S00002.ns2641  +++|    DSBAD, DSNOOP, DSCOORD, DSPROTECT, DSFIELD, DSCLRTAB, DSSETTAB;
00140  M00S00137.fsescrn +++|
00141  M00S00138.fsescrn +++|  ARRAY VIRTERMATR [0:31];    # VIRTUAL TERMINAL ATTRIBUTES #
00142  M00S00139.fsescrn +++|    BEGIN                      # INDEXED BY VDT ORDINAL      #
00143  M00S00140.fsescrn +++|    ITEM NEEDALIGN  B(0,0,1)=[
Line S00141 Modification History
M01 (Removed by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00144  M01S00141.ns2641  ---|      FALSE, TRUE,  TRUE,  TRUE,     # DUMMY, CHAR, IC, DC           #
Line S00003 Modification History
M01 (Added by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00145  M01S00003.ns2641  +++|      FALSE, TRUE,  TRUE,  TRUE,     # CLRALL, CHAR, IC, DC          #
00146  M00S00142.fsescrn +++|      TRUE,  TRUE,  TRUE,  TRUE,     # IL, DL, CLRPAG, CLREOP        #
00147  M00S00143.fsescrn +++|      TRUE,  TRUE,  FALSE, FALSE,    # CLRUNP, CLREOL, POS, HOME     #
00148  M00S00144.fsescrn +++|      FALSE, FALSE, FALSE, FALSE,    # UP, DOWN, LEFT, RIGHT         #
00149  M00S00145.fsescrn +++|      FALSE, FALSE, FALSE, TRUE,     # FTAB, BTAB, RET, ERAC         #
00150  M00S00146.fsescrn +++|      TRUE,  FALSE, FALSE, TRUE,     # ERAL, EOI, RESET, FUNCTION    #
00151  M00S00147.fsescrn +++|      TRUE,  FALSE, FALSE, FALSE,    # GENERIC, BAD, NOOP, COORD     #
Line S00148 Modification History
M01 (Removed by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00152  M01S00148.ns2641  ---|      FALSE, TRUE,  FALSE, FALSE     # PROTECT, FIELD, 2 FILLERS     #
Line S00004 Modification History
M01 (Added by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00153  M01S00004.ns2641  +++|      FALSE, TRUE,  FALSE, FALSE     # PROTECT, FIELD, CLRTAB, SETTAB#
00154  M00S00149.fsescrn +++|                              ];
00155  M00S00150.fsescrn +++|    ITEM NEEDCLEAN  B(0,1,1)=[
Line S00151 Modification History
M01 (Removed by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00156  M01S00151.ns2641  ---|      FALSE, FALSE, FALSE, FALSE,    # DUMMY, CHAR, IC, DC           #
Line S00005 Modification History
M01 (Added by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00157  M01S00005.ns2641  +++|      FALSE, FALSE, FALSE, FALSE,    # CLRALL, CHAR, IC, DC          #
00158  M00S00152.fsescrn +++|      TRUE,  TRUE,  FALSE, FALSE,    # IL, DL, CLRPAG, CLREOP        #
00159  M00S00153.fsescrn +++|      FALSE, FALSE, FALSE, FALSE,    # CLRUNP, CLREOL, POS, HOME     #
00160  M00S00154.fsescrn +++|      FALSE, FALSE, FALSE, FALSE,    # UP, DOWN, LEFT, RIGHT         #
00161  M00S00155.fsescrn +++|      FALSE, FALSE, FALSE, FALSE,    # FTAB, BTAB, RET, ERAC         #
00162  M00S00156.fsescrn +++|      FALSE, TRUE,  FALSE, TRUE,     # ERAL, EOI, RESET, FUNCTION    #
00163  M00S00157.fsescrn +++|      TRUE,  FALSE, FALSE, FALSE,    # GENERIC, BAD, NOOP, COORD     #
Line S00158 Modification History
M01 (Removed by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00164  M01S00158.ns2641  ---|      FALSE, TRUE,  FALSE, FALSE     # PROTECT, FIELD, 2 FILLERS     #
Line S00006 Modification History
M01 (Added by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00165  M01S00006.ns2641  +++|      FALSE, TRUE,  FALSE, FALSE     # PROTECT, FIELD, CLRTAB, SETTAB#
00166  M00S00159.fsescrn +++|                              ];
00167  M00S00160.fsescrn +++|    ITEM NEEDUNLOCK B(0,2,1)=[
Line S00161 Modification History
M01 (Removed by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00168  M01S00161.ns2641  ---|      FALSE, TRUE,  TRUE,  TRUE,     # DUMMY, CHAR, IC, DC           #
Line S00007 Modification History
M01 (Added by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00169  M01S00007.ns2641  +++|      FALSE, TRUE,  TRUE,  TRUE,     # CLRALL, CHAR, IC, DC          #
00170  M00S00162.fsescrn +++|      TRUE,  TRUE,  FALSE, FALSE,    # IL, DL, CLRPAG, CLREOP        #
00171  M00S00163.fsescrn +++|      FALSE, TRUE,  FALSE, FALSE,    # CLRUNP, CLREOL, POS, HOME     #
00172  M00S00164.fsescrn +++|      FALSE, FALSE, FALSE, FALSE,    # UP, DOWN, LEFT, RIGHT         #
00173  M00S00165.fsescrn +++|      FALSE, FALSE, FALSE, TRUE,     # FTAB, BTAB, RET, ERAC         #
00174  M00S00166.fsescrn +++|      TRUE,  FALSE, FALSE, FALSE,    # ERAL, EOI, RESET, FUNCTION    #
00175  M00S00167.fsescrn +++|      FALSE, FALSE, FALSE, FALSE,    # GENERIC, BAD, NOOP, COORD     #
Line S00168 Modification History
M01 (Removed by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00176  M01S00168.ns2641  ---|      FALSE, TRUE,  FALSE, FALSE     # PROTECT, FIELD, 2 FILLERS     #
Line S00008 Modification History
M01 (Added by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00177  M01S00008.ns2641  +++|      FALSE, TRUE,  FALSE, FALSE     # PROTECT, FIELD, CLRTAB, SETTAB#
00178  M00S00169.fsescrn +++|                              ];
00179  M00S00170.fsescrn +++|    ITEM NEEDCURSOR B(0,3,1)=[
Line S00171 Modification History
M01 (Removed by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00180  M01S00171.ns2641  ---|      FALSE, TRUE,  TRUE,  TRUE,     # DUMMY, CHAR, IC, DC           #
Line S00009 Modification History
M01 (Added by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00181  M01S00009.ns2641  +++|      FALSE, TRUE,  TRUE,  TRUE,     # CLRALL, CHAR, IC, DC          #
00182  M00S00172.fsescrn +++|      TRUE,  TRUE,  TRUE,  TRUE,     # IL, DL, CLRPAG, CLREOP        #
00183  M00S00173.fsescrn +++|      TRUE,  TRUE,  FALSE, FALSE,    # CLRUNP, CLREOL, POS, HOME     #
00184  M00S00174.fsescrn +++|      FALSE, FALSE, FALSE, FALSE,    # UP, DOWN, LEFT, RIGHT         #
00185  M00S00175.fsescrn +++|      FALSE, FALSE, FALSE, TRUE,     # FTAB, BTAB, RET, ERAC         #
00186  M00S00176.fsescrn +++|      TRUE,  FALSE, FALSE, TRUE,     # ERAL, EOI, RESET, FUNCTION    #
00187  M00S00177.fsescrn +++|      TRUE,  FALSE, FALSE, FALSE,    # GENERIC, BAD, NOOP, COORD     #
Line S00178 Modification History
M01 (Removed by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00188  M01S00178.ns2641  ---|      FALSE, TRUE,  FALSE, FALSE     # PROTECT, FIELD, 2 FILLERS     #
Line S00010 Modification History
M01 (Added by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00189  M01S00010.ns2641  +++|      FALSE, TRUE,  FALSE, FALSE     # PROTECT, FIELD, CLRTAB, SETTAB#
00190  M00S00179.fsescrn +++|                              ];
00191  M00S00180.fsescrn +++|    ITEM NEEDLIMIT  U(0,6,6)=[
Line S00181 Modification History
M01 (Removed by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00192  M01S00181.ns2641  ---|      0,     1,     1,     1,        # DUMMY, CHAR, IC, DC           #
Line S00011 Modification History
M01 (Added by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00193  M01S00011.ns2641  +++|      0,     1,     1,     1,        # CLRALL, CHAR, IC, DC          #
00194  M00S00182.fsescrn +++|      1,     1,     1,     1,        # IL, DL, CLRPAG, CLREOP        #
00195  M00S00183.fsescrn +++|      2,     1,     1,     1,        # CLRUNP, CLREOL, POS, HOME     #
00196  M00S00184.fsescrn +++|      1,     1,     1,     1,        # UP, DOWN, LEFT, RIGHT         #
00197  M00S00185.fsescrn +++|      1,     1,     0,     1,        # FTAB, BTAB, RET, ERAC         #
00198  M00S00186.fsescrn +++|      1,     0,     0,     2,        # ERAL, EOI, RESET, FUNCTION    #
00199  M00S00187.fsescrn +++|      2,     0,     0,     0,        # GENERIC, BAD, NOOP, COORD     #
Line S00188 Modification History
M01 (Removed by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00200  M01S00188.ns2641  ---|      0,     1,     0,     0         # PROTECT, FIELD, 2 FILLERS     #
Line S00012 Modification History
M01 (Added by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00201  M01S00012.ns2641  +++|      0,     1,     0,     0         # PROTECT, FIELD, CLRTAB, SETTAB#
00202  M00S00189.fsescrn +++|                              ];
00203  M00S00190.fsescrn +++|    END
00204  M00S00191.fsescrn +++|
00205  M00S00192.fsescrn +++|  BASED ARRAY KEYLIN[0:99]; ITEM KEYLINE;
00206  M00S00193.fsescrn +++|PAGE                          # SUBROUTINES INTERNAL TO DOSCREEN #
00207  M00S00194.fsescrn +++|
00208  M00S00195.fsescrn +++|
00209  M00S00196.fsescrn +++|  PROC SETCURSOR;
00210  M00S00197.fsescrn +++|    BEGIN
00211  M00S00198.fsescrn +++|#
00212  M00S00199.fsescrn +++|**        SETCURSOR - SET CURSOR CONTROLS.
00213  M00S00200.fsescrn +++|*
00214  M00S00201.fsescrn +++|*         ENTRY  ROWTYPE[ALL], ROWSPLIT[ALL] - SETUP.
00215  M00S00202.fsescrn +++|*
00216  M00S00203.fsescrn +++|*         EXIT   XCURSOR, YCURSOR, COMPUTEDPOS - SETUP.
00217  M00S00204.fsescrn +++|*                CURCURSOR - SET IF YCURSOR ON TEXT ROW.
00218  M00S00205.fsescrn +++|#
00219  M00S00206.fsescrn +++|    XCURSOR=VTXCUR;
00220  M00S00207.fsescrn +++|    YCURSOR=VTYCUR;
00221  M00S00208.fsescrn +++|    COMPUTEDPOS=TRUE;
00222  M00S00209.fsescrn +++|    IF ROWTYPE[YCURSOR] EQ ROWST"TEXT"
00223  M00S00210.fsescrn +++|      OR ROWTYPE[YCURSOR] EQ ROWST"TITLE" THEN
00224  M00S00211.fsescrn +++|      BEGIN
00225  M00S00212.fsescrn +++|      CURCURSOR=XCURSOR+XSHIFT[ROWSPLIT[YCURSOR]];
00226  M00S00213.fsescrn +++|      CURSPLIT=ROWSPLIT[YCURSOR];
00227  M00S00214.fsescrn +++|      END
00228  M00S00215.fsescrn +++|    END                        # OF SETCURSOR    #
00229  M00S00216.fsescrn +++|
00230  M00S00217.fsescrn +++|  PROC ALIGN;
00231  M00S00218.fsescrn +++|    IOBEGIN(ALIGN)
00232  M00S00219.fsescrn +++|#
00233  M00S00220.fsescrn +++|**        ALIGN - ASSURE FILE ALIGNED WITH CURSOR.
00234  M00S00221.fsescrn +++|*
00235  M00S00222.fsescrn +++|*         ENTRY  YCURSOR - WHERE THE CURSOR IS.
00236  M00S00223.fsescrn +++|*                CURRENT - MOST RECENT FILE POSITION.
00237  M00S00224.fsescrn +++|*                ROWTYPE[ALL], ROWSPLIT[ALL] - SETUP.
00238  M00S00225.fsescrn +++|*                TOPS(1-2), BOTF(1-2) - SETUP.
00239  M00S00226.fsescrn +++|*                NUMROWS[1-2], SPLITFILE[1-2] - SETUP.
00240  M00S00227.fsescrn +++|*                PROMPTING - WHETHER NORMAL OR SPECIAL DISPLAY.
00241  M00S00228.fsescrn +++|*
00242  M00S00229.fsescrn +++|*         EXIT   ALIGNGOOD - TRUE IF PROMPTING AND SUCCEEDED
00243  M00S00230.fsescrn +++|*                    IN GETTING TO RIGHT LINE.  FALSE IF CURSOR NOT
00244  M00S00231.fsescrn +++|*                    ON TEXT OR IN AREA BEYOND LAST EXTANT LINE.
00245  M00S00232.fsescrn +++|*                CURRENT, CURFILE, CURSPLIT - WHERE WE ARE.
00246  M00S00233.fsescrn +++|*                CURF(CURFILE) - WHERE WE ARE.
00247  M00S00234.fsescrn +++|*
00248  M00S00235.fsescrn +++|*         MACROS YTOL.
00249  M00S00236.fsescrn +++|*
00250  M00S00237.fsescrn +++|*         CALLS  CLEANLINE, POSZ.
00251  M00S00238.fsescrn +++|*
00252  M00S00239.fsescrn +++|*         USES   SCRNPT1.
00253  M00S00240.fsescrn +++|#
00254  M00S00241.fsescrn +++|    ALIGNGOOD=FALSE;
00255  M00S00242.fsescrn +++|    IF ROWTYPE[YCURSOR] EQ ROWST"TEXT" OR
Line S00243 Modification History
M01 (Removed by) fsesc22
Seq #  *Modification Id* Act 
----------------------------+
00256  M01S00243.fsesc22 ---|       ROWTYPE[YCURSOR] EQ ROWST"TITLE" THEN
Line S00001 Modification History
M01 (Added by) fsesc22
Seq #  *Modification Id* Act 
----------------------------+
00257  M01S00001.fsesc22 +++|      (ROWTYPE[YCURSOR] EQ ROWST"TITLE" AND
00258  M01S00002.fsesc22 +++|       ROWSPLIT[YCURSOR] EQ CURSPLIT) THEN
00259  M00S00244.fsescrn +++|      BEGIN
00260  M00S00245.fsescrn +++|      EXTENDSIZE=0;
00261  M00S00246.fsescrn +++|      CURSPLIT=ROWSPLIT[YCURSOR];
00262  M00S00247.fsescrn +++|      CURSPLIT=MIN(MAX(CURSPLIT,1),2);
00263  M00S00248.fsescrn +++|      SCRNPT1=YTOL(YCURSOR,CURSPLIT);
00264  M00S00249.fsescrn +++|      IF SCRNPT1 LQ MIN(TOPS(CURSPLIT)+NUMROWS[CURSPLIT],
00265  M00S00250.fsescrn +++|        BOTF(SPLITFILE[CURSPLIT])-1) THEN
00266  M00S00251.fsescrn +++|        BEGIN
00267  M00S00252.fsescrn +++|        IF NOT PROMPTING AND ROWTYPE[YCURSOR] EQ
00268  M00S00253.fsescrn +++|          ROWST"TEXT" THEN ALIGNGOOD=TRUE;
00269  M00S00254.fsescrn +++|        IF CURRENT NQ SCRNPT1
00270  M00S00255.fsescrn +++|           OR CURFILE NQ SPLITFILE[CURSPLIT] THEN
00271  M00S00256.fsescrn +++|          BEGIN
00272  M00S00257.fsescrn +++|          CLEANLINE;
00273  M00S00258.fsescrn +++|          CURF(CURFILE)=CURRENT;
00274  M00S00259.fsescrn +++|          POSZ(SCRNPT1);
00275  M00S00260.fsescrn +++|          CURFILE=SPLITFILE[CURSPLIT];
00276  M00S00261.fsescrn +++|          END
00277  M00S00262.fsescrn +++|        END
00278  M00S00263.fsescrn +++|      ELSE
00279  M00S00264.fsescrn +++|        BEGIN
00280  M00S00265.fsescrn +++|        CLEANLINE;
00281  M00S00266.fsescrn +++|        CURFILE=SPLITFILE[CURSPLIT];
00282  M00S00267.fsescrn +++|        POSZ(BOTF(CURFILE)-1);
00283  M00S00268.fsescrn +++|        CURF(CURFILE)=CURRENT;
00284  M00S00269.fsescrn +++|        EXTENDSIZE=SCRNPT1-BOTF(CURFILE)+1;
00285  M00S00270.fsescrn +++|        END
00286  M00S00271.fsescrn +++|      END
00287  M00S00272.fsescrn +++|    IOEND                   # OF ALIGN         #
00288  M00S00273.fsescrn +++|
00289  M00S00274.fsescrn +++|  PROC EXTEND;
00290  M00S00275.fsescrn +++|    IOBEGIN(EXTEND)
00291  M00S00276.fsescrn +++|#
00292  M00S00277.fsescrn +++|**        EXTEND - LENGTHEN FILE TO MATCH CURSOR ALIGNMENT.
00293  M00S00278.fsescrn +++|*
00294  M00S00279.fsescrn +++|*         ENTRY  ALIGN ROUTINE RECENTLY CALLED.
00295  M00S00280.fsescrn +++|*                ALIGNGOOD - RESULT OF ALIGN ROUTINE.
00296  M00S00281.fsescrn +++|*                ROWTYPE[ALL], ROWSPLIT[ALL] - SETUP.
00297  M00S00282.fsescrn +++|*                BOTF(1-2), SPLITFILE[1-2] - SETUP.
00298  M00S00283.fsescrn +++|*                CURRENT - MOST RECENT FILE POSITION.
00299  M00S00284.fsescrn +++|*                PROMPTING - NORMAL OR SPECIAL DISPLAY.
00300  M00S00285.fsescrn +++|*
00301  M00S00286.fsescrn +++|*         EXIT   ALIGNGOOD - ASSURED TRUE UNLESS PROMPTING.
00302  M00S00287.fsescrn +++|*                CURSPLIT, CURRENT, CURFILE - WHERE WE ARE.
00303  M00S00288.fsescrn +++|*                CURF(CURFILE) - WHERE WE WERE BEFORE CHANGING CURFILE.
00304  M00S00289.fsescrn +++|*                HARDFN - FALSE IF WE EXTENDED THE FILE.
00305  M00S00290.fsescrn +++|*                FILE IS POSSIBLY LONGER.
00306  M00S00291.fsescrn +++|*
00307  M00S00292.fsescrn +++|*         MACROS YTOL.
00308  M00S00293.fsescrn +++|*
00309  M00S00294.fsescrn +++|*         CALLS  CLEANLINE, POSZ, INSZ.
00310  M00S00295.fsescrn +++|*
00311  M00S00296.fsescrn +++|*         USES   LIN.
00312  M00S00297.fsescrn +++|*
00313  M00S00298.fsescrn +++|*         NOTE   ALGORITHM ASSUMES CURSOR INDICATES FILE EXTENSION
00314  M00S00299.fsescrn +++|*                ANYTIME IT IS ON A TEXT ROW BUT ALIGNGOOD IS OFF AND
00315  M00S00300.fsescrn +++|*                THE FILE POSITION EXCEEDS BOTF(SPLITFILE[CURSPLIT]).
00316  M00S00301.fsescrn +++|#
00317  M00S00302.fsescrn +++|    IF NOT ALIGNGOOD THEN
00318  M00S00303.fsescrn +++|      BEGIN
00319  M00S00304.fsescrn +++|      IF ROWTYPE[YCURSOR] EQ ROWST"TEXT" THEN
00320  M00S00305.fsescrn +++|        BEGIN
00321  M00S00306.fsescrn +++|        CURSPLIT=ROWSPLIT[YCURSOR];
00322  M00S00307.fsescrn +++|        CURSPLIT=MIN(MAX(CURSPLIT,1),2);
00323  M00S00308.fsescrn +++|        IF YTOL(YCURSOR,CURSPLIT) GQ BOTF(SPLITFILE[CURSPLIT]) THEN
00324  M00S00309.fsescrn +++|          BEGIN
00325  M00S00310.fsescrn +++|          CLEANLINE;
00326  M00S00311.fsescrn +++|          CURF(CURFILE)=CURRENT;
00327  M00S00312.fsescrn +++|          POSZ(BOTF(SPLITFILE[CURSPLIT])-1);
00328  M00S00313.fsescrn +++|          LINE[0]=NULLIN;
00329  M00S00314.fsescrn +++|          HARDFN=FALSE;
00330  M00S00315.fsescrn +++|          FOR SCRNPT4=LTOY(CURRENT,CURSPLIT)+1 STEP 1
00331  M00S00316.fsescrn +++|            UNTIL YCURSOR DO INSZ;
00332  M00S00317.fsescrn +++|          IF NOT PROMPTING THEN ALIGNGOOD=TRUE;
00333  M00S00318.fsescrn +++|          CURFILE=SPLITFILE[CURSPLIT];
00334  M00S00319.fsescrn +++|          END
00335  M00S00320.fsescrn +++|        END
00336  M00S00321.fsescrn +++|      END
00337  M00S00322.fsescrn +++|    IOEND                      # OF EXTEND        #
00338  M00S00323.fsescrn +++|
00339  M00S00324.fsescrn +++|  PROC CLEANLINE;
00340  M00S00325.fsescrn +++|    IOBEGIN(CLEANLINE)
00341  M00S00326.fsescrn +++|#
00342  M00S00327.fsescrn +++|**        CLEANLINE - CLEAN UP LINE BUFFER AND FILE BEFORE MOVING.
00343  M00S00328.fsescrn +++|*
00344  M00S00329.fsescrn +++|*         ENTRY  LINECHANGED - LINE BUFFER RECENTLY ALTERED.
00345  M00S00330.fsescrn +++|*                LIN - THE LINE BUFFER.
00346  M00S00331.fsescrn +++|*                CURRENT - WHERE WE ARE IN THE FILE.
00347  M00S00332.fsescrn +++|*                SOFTTAB - TRUE IF ANY CHANGE WAS SOFT-TAB OVERSTRIKE.
00348  M00S00333.fsescrn +++|*                CURFILE - WHICH FILE BRACKET WE ARE IN.
00349  M00S00334.fsescrn +++|*                CURSPLIT - WHICH SCREEN BRACKET WE ARE IN.
00350  M00S00335.fsescrn +++|*                NUMBERED[CURFILE] - SEQUENCING MODE FOR THIS FILE.
00351  M00S00336.fsescrn +++|*                WIDTH - USERS LINE WIDTH THRESHHOLD.
00352  M00S00337.fsescrn +++|*
00353  M00S00338.fsescrn +++|*         EXIT   ANY CHANGES TO LINE BUFFER ARE IN WORKFILE.
00354  M00S00339.fsescrn +++|*                SEQUENCE NUMBERS ADJUSTED TO NUMWIDTH.
00355  M00S00340.fsescrn +++|*                OUT-OF-SEQUENCE NUMBERS BLANKED OUT.
00356  M00S00341.fsescrn +++|*                LINECHANGED, SOFTTAB - CLEARED.
00357  M00S00342.fsescrn +++|*                ERRSTRING - POSSIBLE WIDE LINE WARNING.
00358  M00S00343.fsescrn +++|*                ROWPAINT[THIS LINE] - POSSIBLY TRUE.
00359  M00S00344.fsescrn +++|*
00360  M00S00345.fsescrn +++|*         MACROS SETCHAR, LTOY.
00361  M00S00346.fsescrn +++|*
00362  M00S00347.fsescrn +++|*         CALLS  COPYLIN, DOTAB, TRIMPAD, REPX, GETLNUM, SETLNUM,
00363  M00S00348.fsescrn +++|*                PUSH, BAKNUM, POP, FWDNUM, LENGTH.
00364  M00S00349.fsescrn +++|*
00365  M00S00350.fsescrn +++|*         USES   WIDTHFOUND, LINENO, SCRNPT2, SCRNPT3.
00366  M00S00351.fsescrn +++|#
00367  M00S00352.fsescrn +++|    IF LINECHANGED THEN
00368  M00S00353.fsescrn +++|      BEGIN
00369  M00S00354.fsescrn +++|      LINECHANGED=FALSE;
00370  M00S00355.fsescrn +++|      IF SOFTTAB THEN
00371  M00S00356.fsescrn +++|        BEGIN
00372  M00S00357.fsescrn +++|        SOFTTAB=FALSE;
00373  M00S00358.fsescrn +++|        COPYLIN(LIN,TTYLIN);
00374  M00S00359.fsescrn +++|        DOTAB(NUMWIDBLK,NUMWIDBLK,NUMWIDBLK);
00375  M00S00360.fsescrn +++|        COPYLIN(TTYLIN,LIN);
00376  M00S00361.fsescrn +++|        END
00377  M00S00362.fsescrn +++|      TRIMPAD;
00378  M00S00363.fsescrn +++|      REPX;
00379  M00S00364.fsescrn +++|      IF NUMBERED[CURFILE] NQ 0 THEN
00380  M00S00365.fsescrn +++|        BEGIN                 # ASSURE ASCENDING NUMBERS    #
00381  M00S00366.fsescrn +++|        GETLNUM;             # SEE IF ANY NUMBER TO FIX    #
00382  M00S00367.fsescrn +++|        IF WIDTHFOUND NQ 0 THEN
00383  M00S00368.fsescrn +++|          BEGIN
00384  M00S00369.fsescrn +++|          IF WIDTHFOUND NQ NUMWIDTH THEN  # NOT STANDARD   #
00385  M00S00370.fsescrn +++|            BEGIN
00386  M00S00371.fsescrn +++|            SETLNUM;
00387  M00S00372.fsescrn +++|            HARDFN=FALSE;
00388  M00S00373.fsescrn +++|            REPX;
00389  M00S00374.fsescrn +++|            END
00390  M00S00375.fsescrn +++|          ELSE                       # DIGITS OK BUT CHECK BLANK #
00391  M00S00376.fsescrn +++|            BEGIN
00392  M00S00377.fsescrn +++|            GETCHAR(LINE,NUMWIDTH,SCRNPT2);
00393  M00S00378.fsescrn +++|            IF BLANKS NQ 0 AND SCRNPT2 NQ CBLANK THEN
00394  M00S00379.fsescrn +++|              BEGIN
00395  M00S00380.fsescrn +++|              RSHIFT(LIN,NUMWIDTH,1);
00396  M00S00381.fsescrn +++|              SETCHAR(LINE,NUMWIDTH,CBLANK);
00397  M00S00382.fsescrn +++|              END
00398  M00S00383.fsescrn +++|            END
00399  M00S00384.fsescrn +++|          SCRNPT2=LINENO;    # VERIFY BOUNDARIES #
00400  M00S00385.fsescrn +++|          PUSH;
00401  M00S00386.fsescrn +++|          BAKNUM;
00402  M00S00387.fsescrn +++|          POP;
00403  M00S00388.fsescrn +++|          SCRNPT3=LINENO;
00404  M00S00389.fsescrn +++|          PUSH;
00405  M00S00390.fsescrn +++|          FWDNUM;
00406  M00S00391.fsescrn +++|          POP;
00407  M00S00392.fsescrn +++|          IF SCRNPT2 LQ SCRNPT3 OR SCRNPT2 GQ LINENO THEN
00408  M00S00393.fsescrn +++|            BEGIN             # NOT ASCEND SO BLANKOUT      #
00409  M00S00394.fsescrn +++|            FOR SCRNPT2=1 STEP 1 UNTIL NUMWIDTH
00410  M00S00395.fsescrn +++|              DO SETCHAR(LINE,SCRNPT2-1,CBLANK);
00411  M00S00396.fsescrn +++|            END
00412  M00S00397.fsescrn +++|          HARDFN=FALSE;
00413  M00S00398.fsescrn +++|          REPX;
00414  M00S00399.fsescrn +++|          END
00415  M00S00400.fsescrn +++|        END
00416  M00S00401.fsescrn +++|      IF LENGTH(LIN) GR WIDTH+NUMWIDBLK AND ERRSTRING EQ " $" THEN
00417  M00S00402.fsescrn +++|        BEGIN
00418  M00S00403.fsescrn +++|        ERRSTRING="WIDE LINE$";
00419  M00S00404.fsescrn +++|        END
00420  M00S00405.fsescrn +++|      END
00421  M00S00406.fsescrn +++|    IOEND                     # OF CLEANLINE      #
00422  M00S00407.fsescrn +++|
00423  M00S00408.fsescrn +++|
00424  M00S00409.fsescrn +++|  PROC REJECT;
00425  M00S00410.fsescrn +++|# TITLE REJECT - REJECT CHANGE. #
00426  M00S00411.fsescrn +++|
00427  M00S00412.fsescrn +++|    BEGIN  # REJECT #
00428  M00S00413.fsescrn +++|
00429  M00S00414.fsescrn +++|#
00430  M00S00415.fsescrn +++|**        REJECT - REJECT CHANGE.
00431  M00S00416.fsescrn +++|*
00432  M00S00417.fsescrn +++|*         A KEYBOARD CHANGE WAS MADE ON A ROW THAT IN NOT ALLOWED.
00433  M00S00418.fsescrn +++|*         FLAG THE ROW FOR REPAINT AND IF ITS A TITLE ROW, INDICATE
00434  M00S00419.fsescrn +++|*         A TOTAL REPAINT.
00435  M00S00420.fsescrn +++|*
00436  M00S00421.fsescrn +++|*         PROC REJECT
00437  M00S00422.fsescrn +++|#
00438  M00S00423.fsescrn +++|
00439  M00S00424.fsescrn +++|    ROWPAINT[YCURSOR]=TRUE;
00440  M00S00425.fsescrn +++|    IF ROWTYPE[YCURSOR] EQ ROWST"TITLE" THEN
00441  M00S00426.fsescrn +++|      BEGIN
00442  M00S00427.fsescrn +++|      IF ROWSPLIT[YCURSOR] EQ 1 THEN TITLE1LINE[0]=NULLIN;
00443  M00S00428.fsescrn +++|      ELSE TITLE2LINE[0]=NULLIN;
00444  M00S00429.fsescrn +++|      END
00445  M00S00430.fsescrn +++|    IF ROWTYPE[YCURSOR] EQ ROWST"TITLE"
00446  M00S00431.fsescrn +++|      OR ROWTYPE[YCURSOR] EQ ROWST"LABEL"
00447  M00S00432.fsescrn +++|      OR ROWTYPE[YCURSOR] EQ ROWST"RESPONSE" THEN
00448  M00S00433.fsescrn +++|      BEGIN
00449  M00S00434.fsescrn +++|      ERRSTRING = "CHANGES OUTSIDE OF TEXT AREA DISCARDED$";
00450  M00S00435.fsescrn +++|      END
00451  M00S00436.fsescrn +++|
00452  M00S00437.fsescrn +++|    END  # REJECT #
00453  M00S00438.fsescrn +++|
00454  M00S00439.fsescrn +++|
00455  M00S00440.fsescrn +++|  PROC MOVETEXT(TEXTLIN,OFFSET,FENCE);
00456  M00S00441.fsescrn +++|    BEGIN
00457  M00S00442.fsescrn +++|#
00458  M00S00443.fsescrn +++|**        MOVETEXT - UPDATE LINE BUFFER WITH OVERSTRIKE.
00459  M00S00444.fsescrn +++|*
00460  M00S00445.fsescrn +++|*         ENTRY  TEXTLIN - WHICH LINE BUFFER TO UPDATE.
00461  M00S00446.fsescrn +++|*                XCURSOR, OFFSET - WHERE TO UPDATE.
00462  M00S00447.fsescrn +++|*                CURSPLIT, YCURSOR - WHERE WE ARE.
00463  M00S00448.fsescrn +++|*                FENCE - RIGHT HAND BOUNDARY FOR CHANGES.
00464  M00S00449.fsescrn +++|*                ASCII[CURFILE] - INDICATES CASE SUPPRESSION.
00465  M00S00450.fsescrn +++|*                TABCHAR - SOFT TAB CHARACTER.
00466  M00S00451.fsescrn +++|*                VTCHAR - THE CHARACTER TO OVERSTRIKE.
00467  M00S00452.fsescrn +++|*
00468  M00S00453.fsescrn +++|*         EXIT   THE CHARACTER IS IN PLACE IF POSSIBLE.
00469  M00S00454.fsescrn +++|*                SOFTTAB - POSSIBLY TRUE.
00470  M00S00455.fsescrn +++|*                ROWPAINT[YCURSOR] - POSSIBLY TRUE.
00471  M00S00456.fsescrn +++|*
00472  M00S00457.fsescrn +++|*         MACROS SETCHAR.
00473  M00S00458.fsescrn +++|*
00474  M00S00459.fsescrn +++|*         CALLS  EXTENDC, DSPLCOD.
00475  M00S00460.fsescrn +++|#
00476  M00S00461.fsescrn +++|
00477  M00S00462.fsescrn +++|    ARRAY TEXTLIN[0:99];
00478  M00S00463.fsescrn +++|      BEGIN # ARRAY TEXTLIN #
00479  M00S00464.fsescrn +++|      ITEM TEXTLINE   I;             # LINE BUFFER TO UPDATE #
00480  M00S00465.fsescrn +++|      END # ARRAY TEXTLIN #
00481  M00S00466.fsescrn +++|
00482  M00S00467.fsescrn +++|    ITEM OFFSET     I;               # COLUMN OFFSET #
00483  M00S00468.fsescrn +++|    ITEM FENCE      I;               # RIGHT SIDE BOUNDARY #
00484  M00S00469.fsescrn +++|    ITEM TMP1       I;               # TEMPORARY STORAGE #
00485  M00S00470.fsescrn +++|    ITEM TMP2       I;               # TEMPORARY STORAGE #
00486  M00S00471.fsescrn +++|
00487  M00S00472.fsescrn +++|    TMP2=XCURSOR+OFFSET;
00488  M00S00473.fsescrn +++|    IF TMP2 GQ FENCE THEN RETURN;
00489  M00S00474.fsescrn +++|    EXTENDC(TEXTLIN,TMP2);
00490  M00S00475.fsescrn +++|    TMP1=XLTXPINT[VTCHAR];
00491  M00S00476.fsescrn +++|    IF ASCII[CURFILE] LQ 1 THEN      # SUPPRESS LOWER CASE #
00492  M00S00477.fsescrn +++|      BEGIN
00493  M00S00478.fsescrn +++|      # NEXT CODE IS DEPENDENT ON PRECISE VALUES OF INTERNAL CHARSET #
00494  M00S00479.fsescrn +++|      CONTROL IFNQ CLEFTCURL,O"133"; DEFERROR; CONTROL FI;
00495  M00S00480.fsescrn +++|      CONTROL IFNQ CVERTICAL,O"134"; DEFERROR; CONTROL FI;
00496  M00S00481.fsescrn +++|      CONTROL IFNQ CRITECURL,O"135"; DEFERROR; CONTROL FI;
00497  M00S00482.fsescrn +++|      CONTROL IFNQ CTILDE,O"136"; DEFERROR; CONTROL FI;
00498  M00S00483.fsescrn +++|      CONTROL IFNQ CGRAVE,O"100"; DEFERROR; CONTROL FI;
00499  M00S00484.fsescrn +++|      CONTROL IFNQ CCOLON,O"000"; DEFERROR; CONTROL FI;
00500  M00S00485.fsescrn +++|      # ISSUE WARNING FOR NON-EXISTENT DISPLAY CODE CHARACTERS #
00501  M00S00486.fsescrn +++|      IF (TMP1 GQ O"133" AND TMP1 LQ O"136")
00502  M00S00487.fsescrn +++|        OR (TMP1 EQ O"100") THEN ROWPAINT[YCURSOR]=TRUE;
00503  M00S00488.fsescrn +++|      IF (B<00,01>MEM[CSMR] EQ 0)
00504  M00S00489.fsescrn +++|        AND (TMP1 EQ O"000") THEN ROWPAINT[YCURSOR]=TRUE;
00505  M00S00490.fsescrn +++|      DSPLCOD(TMP1);                 # SUPPRESS LOWER CASE #
00506  M00S00491.fsescrn +++|      END
00507  M00S00492.fsescrn +++|    SETCHAR(TEXTLINE,TMP2,TMP1);
00508  M00S00493.fsescrn +++|    IF TMP1 EQ TABCHAR THEN
00509  M00S00494.fsescrn +++|      BEGIN
00510  M00S00495.fsescrn +++|      SOFTTAB=TRUE;
00511  M00S00496.fsescrn +++|      ROWPAINT[YCURSOR]=TRUE;
00512  M00S00497.fsescrn +++|      END
00513  M00S00498.fsescrn +++|    END  # MOVETEXT #
00514  M00S00499.fsescrn +++|
00515  M00S00500.fsescrn +++|
00516  M00S00501.fsescrn +++|  PROC INSTEXT(TEXTLIN,OFFSET,FENCE);
00517  M00S00502.fsescrn +++|    BEGIN
00518  M00S00503.fsescrn +++|#
00519  M00S00504.fsescrn +++|**        INSTEXT - OPEN UP SPACE FOR CHARACTER INSERTION.
00520  M00S00505.fsescrn +++|*
00521  M00S00506.fsescrn +++|*         ENTRY  SAME AS MOVETEXT ROUTINE.
00522  M00S00507.fsescrn +++|*
00523  M00S00508.fsescrn +++|*         EXIT   THE CHARACTER SPACE IS OPENED UP.
00524  M00S00509.fsescrn +++|*
00525  M00S00510.fsescrn +++|*         MACROS SETCHAR.
00526  M00S00511.fsescrn +++|*
00527  M00S00512.fsescrn +++|*         CALLS  RSHIFT, LSHIFT.
00528  M00S00513.fsescrn +++|#
00529  M00S00514.fsescrn +++|
00530  M00S00515.fsescrn +++|    ARRAY TEXTLIN[0:99];
00531  M00S00516.fsescrn +++|      BEGIN # ARRAY TEXTLIN #
00532  M00S00517.fsescrn +++|      ITEM TEXTLINE   I;             # LINE BUFFER TO UPDATE #
00533  M00S00518.fsescrn +++|      END # ARRAY TEXTLIN #
00534  M00S00519.fsescrn +++|
00535  M00S00520.fsescrn +++|    ITEM OFFSET     I;               # COLUMN OFFSET #
00536  M00S00521.fsescrn +++|    ITEM FENCE      I;               # RIGHT SIDE BOUNDARY #
00537  M00S00522.fsescrn +++|    ITEM TMP1       I;               # TEMPORARY STORAGE #
00538  M00S00523.fsescrn +++|    ITEM TMP2       I;               # TEMPORARY STORAGE #
00539  M00S00524.fsescrn +++|
00540  M00S00525.fsescrn +++|    TMP1=XCURSOR+OFFSET;
00541  M00S00526.fsescrn +++|    IF TMP1 GQ FENCE THEN RETURN;
00542  M00S00527.fsescrn +++|    RSHIFT(TEXTLIN,TMP1,1);
00543  M00S00528.fsescrn +++|    TMP2=XLTXPINT[VTCHAR];
00544  M00S00529.fsescrn +++|    IF ASCII[CURFILE] LQ 1 THEN      # SUPPRESS LOWER CASE #
00545  M00S00530.fsescrn +++|      BEGIN
00546  M00S00531.fsescrn +++|      # NEXT CODE IS DEPENDENT ON PRECISE VALUES OF INTERNAL CHARSET #
00547  M00S00532.fsescrn +++|      CONTROL IFNQ CLEFTCURL,O"133"; DEFERROR; CONTROL FI;
00548  M00S00533.fsescrn +++|      CONTROL IFNQ CVERTICAL,O"134"; DEFERROR; CONTROL FI;
00549  M00S00534.fsescrn +++|      CONTROL IFNQ CRITECURL,O"135"; DEFERROR; CONTROL FI;
00550  M00S00535.fsescrn +++|      CONTROL IFNQ CTILDE,O"136"; DEFERROR; CONTROL FI;
00551  M00S00536.fsescrn +++|      CONTROL IFNQ CGRAVE,O"100"; DEFERROR; CONTROL FI;
00552  M00S00537.fsescrn +++|      CONTROL IFNQ CCOLON,O"000"; DEFERROR; CONTROL FI;
00553  M00S00538.fsescrn +++|      # ISSUE WARNING FOR NON-EXISTENT DISPLAY CODE CHARACTERS #
00554  M00S00539.fsescrn +++|      IF (TMP2 GQ O"133" AND TMP2 LQ O"136")
00555  M00S00540.fsescrn +++|        OR (TMP2 EQ O"100") THEN ROWPAINT[YCURSOR]=TRUE;
00556  M00S00541.fsescrn +++|      IF (B<00,01>MEM[CSMR] EQ 0)
00557  M00S00542.fsescrn +++|        AND (TMP2 EQ O"000") THEN ROWPAINT[YCURSOR]=TRUE;
00558  M00S00543.fsescrn +++|      DSPLCOD(TMP2);                 # SUPPRESS LOWER CASE #
00559  M00S00544.fsescrn +++|      END
00560  M00S00545.fsescrn +++|    SETCHAR(TEXTLINE,TMP1,TMP2);
00561  M00S00546.fsescrn +++|    IF TMP2 EQ TABCHAR THEN
00562  M00S00547.fsescrn +++|      BEGIN
00563  M00S00548.fsescrn +++|      SOFTTAB=TRUE;
00564  M00S00549.fsescrn +++|      ROWPAINT[YCURSOR]=TRUE;
00565  M00S00550.fsescrn +++|      END
00566  M00S00551.fsescrn +++|    IF FENCE LS BUFCM1 THEN
00567  M00S00552.fsescrn +++|      BEGIN
00568  M00S00553.fsescrn +++|      LSHIFT(TEXTLIN,EDITFIELD+1,1);
00569  M00S00554.fsescrn +++|      END
00570  M00S00555.fsescrn +++|    END  # INSTEXT #
00571  M00S00556.fsescrn +++|
00572  M00S00557.fsescrn +++|
00573  M00S00558.fsescrn +++|  PROC DELTEXT(TEXTLIN,OFFSET,FENCE);
00574  M00S00559.fsescrn +++|    BEGIN
00575  M00S00560.fsescrn +++|#
00576  M00S00561.fsescrn +++|**        DELTEXT - DELETE ONE CHARACTER.
00577  M00S00562.fsescrn +++|*
00578  M00S00563.fsescrn +++|*         ENTRY  SAME AS MOVETEXT.
00579  M00S00564.fsescrn +++|*
00580  M00S00565.fsescrn +++|*         EXIT   TEXT SHIFTED TO CLOSEUP ONE PLACE.
00581  M00S00566.fsescrn +++|*
00582  M00S00567.fsescrn +++|*         MACROS SETCHAR.
00583  M00S00568.fsescrn +++|*
00584  M00S00569.fsescrn +++|*         CALLS  LSHIFT, RSHIFT.
00585  M00S00570.fsescrn +++|#
00586  M00S00571.fsescrn +++|
00587  M00S00572.fsescrn +++|    ARRAY TEXTLIN[0:99];
00588  M00S00573.fsescrn +++|      BEGIN # ARRAY TEXTLIN #
00589  M00S00574.fsescrn +++|      ITEM TEXTLINE   I;             # LINE BUFFER TO UPDATE #
00590  M00S00575.fsescrn +++|      END # ARRAY TEXTLIN #
00591  M00S00576.fsescrn +++|
00592  M00S00577.fsescrn +++|    ITEM OFFSET     I;               # COLUMN OFFSET #
00593  M00S00578.fsescrn +++|    ITEM FENCE      I;               # RIGHT SIDE BOUNDARY #
00594  M00S00579.fsescrn +++|    ITEM TMP1       I;               # TEMPORARY STORAGE #
00595  M00S00580.fsescrn +++|
00596  M00S00581.fsescrn +++|    TMP1=XCURSOR+OFFSET;
00597  M00S00582.fsescrn +++|    IF TMP1 GQ FENCE THEN RETURN;
00598  M00S00583.fsescrn +++|    LSHIFT(TEXTLIN,TMP1+1,1);
00599  M00S00584.fsescrn +++|    IF FENCE LS BUFCM1 THEN
00600  M00S00585.fsescrn +++|      BEGIN
00601  M00S00586.fsescrn +++|      RSHIFT(TEXTLIN,EDITFIELD-1,1);
00602  M00S00587.fsescrn +++|      SETCHAR(TEXTLINE,EDITFIELD-1,CBLANK);
00603  M00S00588.fsescrn +++|      END
00604  M00S00589.fsescrn +++|    END  # DELTEXT #
00605  M00S00590.fsescrn +++|
00606  M00S00591.fsescrn +++|
00607  M00S00592.fsescrn +++|  PROC DSERRJMP(STR);        # DOSCREEN ERROR JUMP         #
00608  M00S00593.fsescrn +++|    IOBEGIN(DSERRJMP)
00609  M00S00594.fsescrn +++|#
00610  M00S00595.fsescrn +++|**        DSERRJMP - ERROR JUMP FROM DOSCREEN.
00611  M00S00596.fsescrn +++|*
00612  M00S00597.fsescrn +++|*         ENTRY  STR - ERROR MESSAGE.
00613  M00S00598.fsescrn +++|*                PROMPTING - NORMAL OR SPECIAL DISPLAY.
00614  M00S00599.fsescrn +++|*                COMMANDROW - SETUP.
00615  M00S00600.fsescrn +++|*
00616  M00S00601.fsescrn +++|*         EXIT   VIA ERRJUMP.
00617  M00S00602.fsescrn +++|*                CMDLIN - NULLED OUT.
00618  M00S00603.fsescrn +++|*                ERRSTRING - CONTAINS MESSAGE.
00619  M00S00604.fsescrn +++|*                TOKENPOS - MINUS ONE FOR ERRJUMP.
00620  M00S00605.fsescrn +++|*                ROWPAINT[COMMANDROW] - TRUE.
00621  M00S00606.fsescrn +++|*                ROWPAINT[ALL] - POSSIBLY TRUE.
00622  M00S00607.fsescrn +++|*
00623  M00S00608.fsescrn +++|*         CALLS  PAINTALL, VDTBEL, VDTDRN, ERRJUMP.
00624  M00S00609.fsescrn +++|*
00625  M00S00610.fsescrn +++|*         NOTE   THIS ROUTINE UNCONDITIONALLY USES ERRJUMP, THUS
00626  M00S00611.fsescrn +++|*                CONTROL WILL NEVER RETURN TO THE CALLER.  DSERRJMP
00627  M00S00612.fsescrn +++|*                IS THE ONLY WAY TO CALL ERRJUMP FROM DOSCREEN OR
00628  M00S00613.fsescrn +++|*                ANY OF ITS INTERNAL ROUTINES.
00629  M00S00614.fsescrn +++|#
00630  M00S00615.fsescrn +++|    ITEM STR C(40);
00631  M00S00616.fsescrn +++|    ERRSTRING=STR;
00632  M00S00617.fsescrn +++|    ROWPAINT[COMMANDROW]=TRUE;
00633  M00S00618.fsescrn +++|    IF PROMPTING THEN PAINTALL;
00634  M00S00619.fsescrn +++|    VDTBEL;
00635  M00S00620.fsescrn +++|    VDTDRN;                 # ASSURE INPUT BUFFER CLEAN   #
00636  M00S00621.fsescrn +++|    TOKENPOS=-1;             # ASSURE OLD CURSOR POSITION  #
00637  M00S00622.fsescrn +++|    CMDLINE[0]=NULLIN;
00638  M00S00623.fsescrn +++|    ERRJUMP(ERRSTRING);      # CONTROL DOES NOT RETURN     #
00639  M00S00624.fsescrn +++|    IOEND                     # OF DSERRJMP       #
00640  M00S00625.fsescrn +++|
00641  M00S00626.fsescrn +++|  PROC SETCMD(CMD);
00642  M00S00627.fsescrn +++|    BEGIN
00643  M00S00628.fsescrn +++|#
00644  M00S00629.fsescrn +++|**        SETCMD - ADD CHARACTER STRING TO COMMAND BUFFER.
00645  M00S00630.fsescrn +++|*
00646  M00S00631.fsescrn +++|*         ENTRY  CMD - STRING TO BE ADDED, 10 CHARS IN DISPLAY CODE.
00647  M00S00632.fsescrn +++|*                CMDLIN - ANY EXISTING COMMAND CONTENT. (INTERNAL CODE)
00648  M00S00633.fsescrn +++|*
00649  M00S00634.fsescrn +++|*         EXIT   CMDLIN - UPDATED.
00650  M00S00635.fsescrn +++|*
00651  M00S00636.fsescrn +++|*         MACROS SETCHAR.
00652  M00S00637.fsescrn +++|*
00653  M00S00638.fsescrn +++|*         CALLS  LENGTH.
00654  M00S00639.fsescrn +++|*
00655  M00S00640.fsescrn +++|*         USES   SCRNPT3, SCRNPT4, SCRNPT5.
00656  M00S00641.fsescrn +++|#
00657  M00S00642.fsescrn +++|    ITEM CMD C(10);
00658  M00S00643.fsescrn +++|    SCRNPT4=LENGTH(CMDLIN);
00659  M00S00644.fsescrn +++|    IF SCRNPT4+10 LS BUFCM1 THEN
00660  M00S00645.fsescrn +++|      BEGIN
00661  M00S00646.fsescrn +++|      SETCHAR(CMDLINE,SCRNPT4,CSEMCOLON);
00662  M00S00647.fsescrn +++|      FOR SCRNPT5=0 STEP 1 UNTIL 9 DO
00663  M00S00648.fsescrn +++|        BEGIN
00664  M00S00649.fsescrn +++|        SCRNPT3=XLTDSPINT[C<SCRNPT5,1>CMD];
00665  M00S00650.fsescrn +++|        SETCHAR(CMDLINE,SCRNPT4+1+SCRNPT5,SCRNPT3);
00666  M00S00651.fsescrn +++|        END
00667  M00S00652.fsescrn +++|      SETCHAR(CMDLINE,SCRNPT4+11,CENDLINE);
00668  M00S00653.fsescrn +++|      END
00669  M00S00654.fsescrn +++|    END                       # OF SETCMD         #
00670  M00S00655.fsescrn +++|
00671  M00S00656.fsescrn +++|
00672  M00S00657.fsescrn +++|  PROC ADDTOCMD;
00673  M00S00658.fsescrn +++|    BEGIN
00674  M00S00659.fsescrn +++|    # ADD TEXT FROM KEYLINE TO CMDLINE #
00675  M00S00660.fsescrn +++|    SCRNPT3=LENGTH(CMDLIN);
00676  M00S00661.fsescrn +++|    SCRNPT2=LENGTH(KEYLIN);
00677  M00S00662.fsescrn +++|    IF SCRNPT3+SCRNPT2 LS BUFCM1 THEN
00678  M00S00663.fsescrn +++|      BEGIN
00679  M00S00664.fsescrn +++|      SETCHAR(CMDLINE,SCRNPT3,CSEMCOLON);
00680  M00S00665.fsescrn +++|      FOR SCRNPT4=0 STEP 1 UNTIL SCRNPT2 DO
00681  M00S00666.fsescrn +++|        BEGIN
00682  M00S00667.fsescrn +++|        GETCHAR(KEYLINE,SCRNPT4,SCRNPT5);
00683  M00S00668.fsescrn +++|        SETCHAR(CMDLINE,SCRNPT3+SCRNPT4+1,SCRNPT5);
00684  M00S00669.fsescrn +++|        IF (SCRNPT5 EQ CAMPER) AND (NOT PROMPTING)
00685  M00S00670.fsescrn +++|          AND (EXPANDAT LS 0) THEN EXPANDAT=SCRNPT3+SCRNPT4+1;
00686  M00S00671.fsescrn +++|        END
00687  M00S00672.fsescrn +++|      END
00688  M00S00673.fsescrn +++|    END  # ADDTOCMD #
00689  M00S00674.fsescrn +++|
00690  M00S00675.fsescrn +++|
00691  M00S00676.fsescrn +++|  PROC INCRCURSOR;
00692  M00S00677.fsescrn +++|# TITLE INCRCURSOR - INCREMENT CURSOR. #
00693  M00S00678.fsescrn +++|
00694  M00S00679.fsescrn +++|    BEGIN  # INCRCURSOR #
00695  M00S00680.fsescrn +++|
00696  M00S00681.fsescrn +++|#
00697  M00S00682.fsescrn +++|**        INCRCURSOR - INCREMENT CURSOR.
00698  M00S00683.fsescrn +++|*
00699  M00S00684.fsescrn +++|*         EXIT   XCURSOR - ZERO.
00700  M00S00685.fsescrn +++|*                YCURSOR - USERS CURSOR OR ONE PLACE BEYOND.
00701  M00S00686.fsescrn +++|*
00702  M00S00687.fsescrn +++|*         CALLS  SETCURSOR.
00703  M00S00688.fsescrn +++|#
00704  M00S00689.fsescrn +++|
00705  M00S00690.fsescrn +++|    SETCURSOR;
00706  M00S00691.fsescrn +++|    XCURSOR=0;
00707  M00S00692.fsescrn +++|    IF ROWTYPE[YCURSOR] EQ ROWST"TEXT" THEN YCURSOR=YCURSOR+1;
00708  M00S00693.fsescrn +++|
00709  M00S00694.fsescrn +++|    END  # INCRCURSOR #
00710  M00S00695.fsescrn +++|PAGE                         # START OF DOSCREEN MAIN CODE #
00711  M00S00696.fsescrn +++|
00712  M00S00697.fsescrn +++|
00713  M00S00698.fsescrn +++|  SCREENLIMIT=0;
00714  M00S00699.fsescrn +++|  COMPUTEDPOS=FALSE;
00715  M00S00700.fsescrn +++|  VDTEOO;                    # ISSUE INPUT CONTROL PROMPT  #
00716  M00S00701.fsescrn +++|  VDTPPI;                    # GET INPUT, VERIFY XPARENT   #
00717  M00S00702.fsescrn +++|  VDTBOO;                    # START NEW OUTPUT CYCLE      #
Line S00703 Modification History
M01 (Removed by) fsesc24
Seq #  *Modification Id* Act 
----------------------------+
00718  M01S00703.fsesc24 ---|  IF VTORDN NQ 0 THEN DSERRJMP("PLEASE RE-ENTER INPUT$");
Line S00001 Modification History
M01 (Added by) fsesc24
Seq #  *Modification Id* Act 
----------------------------+
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  M00S00704.fsescrn +++|  XCURSOR=0;
00728  M00S00705.fsescrn +++|
00729  M00S00706.fsescrn +++|  FIRSTEVENT=TRUE;
00730  M00S00707.fsescrn +++|  GOTO DSLOOP2;
00731  M00S00708.fsescrn +++|
00732  M00S00709.fsescrn +++|#
00733  M00S00710.fsescrn +++|      SCREEN ROUTINES RETURN BASED UPON WHERE THEY WOULD LIKE
00734  M00S00711.fsescrn +++|      THE CURSOR IF <EOL> WERE ENTERED IMMEDIATELY AFTER THE
00735  M00S00712.fsescrn +++|      ROUTINE.  THE CHOICES ARE
00736  M00S00713.fsescrn +++|
00737  M00S00714.fsescrn +++|         DSLOOP:  LEAVE THE CURSOR WHERE IT IS.
00738  M00S00715.fsescrn +++|         DSX0Y1:  SET X TO ZERO, INCREMENT Y IF IN VALID TEXT.
00739  M00S00716.fsescrn +++|                  LEAVE Y WHERE IT IS IF CANNOT INCREMENT.
00740  M00S00717.fsescrn +++|#
00741  M00S00718.fsescrn +++|
00742  M00S00719.fsescrn +++|DSX0Y1:
00743  M00S00720.fsescrn +++|  INCRCURSOR;
00744  M00S00721.fsescrn +++|DSLOOP:
00745  M00S00722.fsescrn +++|  FIRSTEVENT=FALSE;
00746  M00S00723.fsescrn +++|DSLOOP2:
00747  M00S00724.fsescrn +++|  OLDVTXCURS=VTXCUR;
00748  M00S00725.fsescrn +++|  OLDVTYCURS=VTYCUR;
00749  M00S00726.fsescrn +++|  VDTIINP;
00750  M00S00727.fsescrn +++|DSLOOP3:
00751  M00S00728.fsescrn +++|  IF SCREENLIMIT LS 2 THEN
00752  M00S00729.fsescrn +++|    BEGIN
00753  M00S00730.fsescrn +++|    IF NEEDCURSOR[VTORDN] THEN SETCURSOR;
00754  M00S00731.fsescrn +++|    IF NEEDALIGN[VTORDN] THEN ALIGN;
00755  M00S00732.fsescrn +++|    IF NEEDCLEAN[VTORDN] THEN CLEANLINE;
00756  M00S00733.fsescrn +++|    END
00757  M00S00734.fsescrn +++|  IF NEEDLIMIT[VTORDN] NQ 0 THEN
00758  M00S00735.fsescrn +++|    BEGIN
00759  M00S00736.fsescrn +++|    IF NEEDLIMIT[VTORDN] LS SCREENLIMIT AND SCREENLIMIT NQ 0 THEN
00760  M00S00737.fsescrn +++|      BEGIN
00761  M00S00738.fsescrn +++|      PAINTALL;
Line S00001 Modification History
M01 (Added by) fsesc29
Seq #  *Modification Id* Act 
----------------------------+
00762  M01S00001.fsesc29 +++|      VTINCR = 0;                    # DISABLE CURSOR ADVANCE #
00763  M00S00739.fsescrn +++|      DSERRJMP("RETURN MUST FOLLOW FUNCTION KEY$");
00764  M00S00740.fsescrn +++|      END
00765  M00S00741.fsescrn +++|    SCREENLIMIT=NEEDLIMIT[VTORDN];
00766  M00S00742.fsescrn +++|    END
Line S00743 Modification History
M01 (Removed by) fsesc26
Seq #  *Modification Id* Act 
----------------------------+
00767  M01S00743.fsesc26 ---|  IF NEEDUNLOCK[VTORDN] AND YCURSOR NQ COMMANDROW THEN
Line S00001 Modification History
M01 (Added by) fsesc26
Seq #  *Modification Id* Act 
----------------------------+
00768  M01S00001.fsesc26 +++|  IF NEEDUNLOCK[VTORDN] AND ROWTYPE[YCURSOR] EQ ROWST"TEXT" THEN
00769  M00S00744.fsescrn +++|    BEGIN
00770  M00S00745.fsescrn +++|    IF LOCKED[CURFILE] NQ 0 THEN
00771  M00S00746.fsescrn +++|      BEGIN
00772  M00S00747.fsescrn +++|      ROWPAINT[YCURSOR]=TRUE;        # CURRENT LINE IS SPOILED #
00773  M00S00748.fsescrn +++|      IF VTORDN EQ SCREENST"INSL" OR VTORDN EQ SCREENST"DELL" THEN
00774  M00S00749.fsescrn +++|        BEGIN                        # LOWER LINES ARE SPOILED #
00775  M00S00750.fsescrn +++|        PAINTSPLIT;                  # AT LEAST TILL FIELD PROTECT #
00776  M00S00751.fsescrn +++|        IF NOT TABVTPROTM[0] THEN PAINTREST(YCURSOR);
00777  M00S00752.fsescrn +++|        END
00778  M00S00753.fsescrn +++|      DSERRJMP("CANNOT CHANGE READ-ONLY FILE$");
00779  M00S00754.fsescrn +++|      END
00780  M00S00755.fsescrn +++|    END
00781  M00S00756.fsescrn +++|  HARDFN=TRUE;
00782  M00S00757.fsescrn +++|  GOTO SCREENSW[VTORDN];
00783  M00S00758.fsescrn +++|
Line S00759 Modification History
M01 (Removed by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
00784  M01S00759.ns2641  ---|DSDUMMY:  DSUP:  DSDOWN:  DSLEFT:  DSRIGHT:  DSRET:
00785  M01S00760.ns2641  ---|DSNOOP:   DSCOORD:  DSPROTECT:  DSRSRV1:  DSRSRV2:
Line S00013 Modification History
M01 (Added by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
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  M00S00761.fsescrn +++|  GOTO DSLOOP;
00793  M00S00762.fsescrn +++|
00794  M00S00763.fsescrn +++|
00795  M00S00764.fsescrn +++|DSPOS:
00796  M00S00765.fsescrn +++|DSRESET:
00797  M00S00766.fsescrn +++|  GOTO DSBAD;
00798  M00S00767.fsescrn +++|
00799  M00S00768.fsescrn +++|DSEOI:
00800  M00S00769.fsescrn +++|  # NOTE THAT AN EOI VDT EVENT IS NOT TAGGED FOR EITHER CURSOR  #
00801  M00S00770.fsescrn +++|  # SETTING OR FILE POSITION ALIGNMENT.  THE DSEOI SECTION DOES #
Line S00771 Modification History
M01 (Removed by) fsesc27
Seq #  *Modification Id* Act 
----------------------------+
00802  M01S00771.fsesc27 ---|  # THIS MANUALLY SO WE CAN ALIGN THE FILE ON THE BASIS OF THE  #
00803  M01S00772.fsesc27 ---|  # LAST SIGNIFICANT CURSOR ADDRESS BEFORE THE RETURN KEY WAS   #
00804  M01S00773.fsesc27 ---|  # STRUCK, WITHOUT BEING CONFUSED BY THE CURSOR POSITION FOR   #
00805  M01S00774.fsesc27 ---|  # THE RETURN KEY ITSELF.                                      #
Line S00001 Modification History
M01 (Added by) fsesc27
Seq #  *Modification Id* Act 
----------------------------+
00806  M01S00001.fsesc27 +++|  # THIS MANUALLY TO ALLOW FOR REACTION TO VARYING CONDITIONS.  #
00807  M00S00775.fsescrn +++|  CLEANLINE;
00808  M00S00776.fsescrn +++|  IF SCREENLIMIT LS 2 THEN
00809  M00S00777.fsescrn +++|    BEGIN
Line S00002 Modification History
M01 (Added by) fsesc27
Seq #  *Modification Id* Act 
----------------------------+
00810  M01S00002.fsesc27 +++|    IF COMPUTEDPOS THEN SETCURSOR;
00811  M00S00778.fsescrn +++|    ALIGN;
Line S00779 Modification History
M01 (Removed by) fsesc27
Seq #  *Modification Id* Act 
----------------------------+
00812  M01S00779.fsesc27 ---|    IF COMPUTEDPOS THEN
00813  M01S00780.fsesc27 ---|      BEGIN
00814  M01S00781.fsesc27 ---|      IF OLDVTXCURS NQ VTXCUR OR OLDVTYCURS NQ VTYCUR THEN
00815  M01S00782.fsesc27 ---|        BEGIN                        # USER MOVED CURSOR BEFORE EOI #
00816  M01S00783.fsesc27 ---|        INCRCURSOR;
00817  M01S00784.fsesc27 ---|        END
00818  M01S00785.fsesc27 ---|      END
00819  M01S00786.fsesc27 ---|    ELSE INCRCURSOR;
Line S00003 Modification History
M01 (Added by) fsesc27
Seq #  *Modification Id* Act 
----------------------------+
00820  M01S00003.fsesc27 +++|    INCRCURSOR;
00821  M00S00787.fsescrn +++|    IF LENGTH(CMDLIN) EQ 0 AND YCURSOR EQ VTYCUR+1 AND
Line S00788 Modification History
M01 (Removed by) fsesc25
Seq #  *Modification Id* Act 
----------------------------+
00822  M01S00788.fsesc25 ---|      VTYCUR EQ TITLEROW[CURSPLIT]+NUMROWS[CURSPLIT] THEN
Line S00001 Modification History
M01 (Added by) fsesc25
Seq #  *Modification Id* Act 
----------------------------+
00823  M01S00001.fsesc25 +++|      VTYCUR EQ TITLEROW[CURSPLIT]+NUMROWS[CURSPLIT] AND
00824  M01S00002.fsesc25 +++|      NOT PROMPTING THEN
00825  M00S00789.fsescrn +++|      BEGIN                          # IF AUTO HALF PAGE FORWARD #
00826  M00S00790.fsescrn +++|      TOPS(CURSPLIT)=BOTS(CURSPLIT)-NUMROWS[CURSPLIT]/2;
00827  M00S00791.fsescrn +++|      SETTOPS(CURSPLIT);
00828  M00S00792.fsescrn +++|      XCURSOR=0;
00829  M00S00793.fsescrn +++|      YCURSOR=BOTS(CURSPLIT);
00830  M00S00794.fsescrn +++|      YCURSOR=LTOY(YCURSOR,CURSPLIT);
00831  M00S00795.fsescrn +++|      SETBOTS(CURSPLIT);
00832  M00S00796.fsescrn +++|      PAINTSPLIT;
00833  M00S00797.fsescrn +++|      END
00834  M00S00798.fsescrn +++|    ALIGN;
00835  M00S00799.fsescrn +++|    END
00836  M00S00800.fsescrn +++|  HARDFN = FALSE;                    # CLEAR HARD FUNCTION PRESSED #
00837  M00S00801.fsescrn +++|  VDTDRN;                            # ASSURE CLEAN INPUT BUFFER #
00838  M00S00802.fsescrn +++|  IF FIRSTEVENT THEN CMDLINE[0]=NULLIN;
00839  M00S00803.fsescrn +++|  IF AUTOINDENT THEN
00840  M00S00804.fsescrn +++|    BEGIN                            # IF SET JUMP ENABLED #
00841  M00S00805.fsescrn +++|    IF XCURSOR EQ 0 AND YCURSOR NQ COMMANDROW
00842  M00S00806.fsescrn +++|      AND LENGTH(CMDLIN) EQ 0 THEN
00843  M00S00807.fsescrn +++|      BEGIN                          # IF REASONABLE TO DO #
00844  M00S00808.fsescrn +++|      SCRNPT3 = 0;
00845  M00S00809.fsescrn +++|      SCRNPT4 = 0;
Line S00810 Modification History
M01 (Removed by) fsesc21
Seq #  *Modification Id* Act 
----------------------------+
00846  M01S00810.fsesc21 ---|      IF LENGTH(LIN) EQ 0 THEN
Line S00001 Modification History
M01 (Added by) fsesc21
Seq #  *Modification Id* Act 
----------------------------+
00847  M01S00001.fsesc21 +++|      IF NOTEXT THEN
00848  M00S00811.fsescrn +++|        BEGIN                        # IF CURRENT LINE IS EMPTY #
00849  M00S00812.fsescrn +++|        SCRNPT4 = 1;                 # CHECK PREVIOUS LINE #
00850  M00S00813.fsescrn +++|        BAKZ;
00851  M00S00814.fsescrn +++|        END
Line S00815 Modification History
M01 (Removed by) fsesc21
Seq #  *Modification Id* Act 
----------------------------+
00852  M01S00815.fsesc21 ---|      GETCHAR(LINE,XSHIFT[CURSPLIT],SCRNPT2);
00853  M01S00816.fsesc21 ---|      WHYLE SCRNPT2 EQ CBLANK DO
00854  M01S00817.fsesc21 ---|        BEGIN                        # COUNT LEADING BLANKS #
00855  M01S00818.fsesc21 ---|        SCRNPT3 = SCRNPT3 + 1;
00856  M01S00819.fsesc21 ---|        GETCHAR(LINE,XSHIFT[CURSPLIT]+SCRNPT3,SCRNPT2);
00857  M01S00820.fsesc21 ---|        END
Line S00002 Modification History
M01 (Added by) fsesc21
Seq #  *Modification Id* Act 
----------------------------+
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  M00S00821.fsescrn +++|      IF SCRNPT4 EQ 1 THEN FWDZ;     # RESET IF NECESSARY #
00868  M00S00822.fsescrn +++|      XCURSOR = SCRNPT3;
00869  M00S00823.fsescrn +++|      END
00870  M00S00824.fsescrn +++|    END
00871  M00S00825.fsescrn +++|  IORET
00872  M00S00826.fsescrn +++|
00873  M00S00827.fsescrn +++|DSHOME:
00874  M00S00828.fsescrn +++|  XCURSOR=VTOXPOS;
00875  M00S00829.fsescrn +++|  YCURSOR=VTOYPOS;
00876  M00S00830.fsescrn +++|  IF ROWTYPE[YCURSOR] EQ ROWST"TEXT" OR ROWTYPE[YCURSOR]
00877  M00S00831.fsescrn +++|    EQ ROWST"TITLE" THEN CURSPLIT=ROWSPLIT[YCURSOR];
00878  M00S00832.fsescrn +++|  CURCURSOR=XCURSOR+XSHIFT[CURSPLIT];
00879  M00S00833.fsescrn +++|  ALIGN;
00880  M00S00834.fsescrn +++|  GOTO DSLOOP;
00881  M00S00835.fsescrn +++|
00882  M00S00836.fsescrn +++|DSCLREOL:
00883  M00S00837.fsescrn +++|  IF ROWTYPE[YCURSOR] EQ ROWST"COMMAND" THEN
00884  M00S00838.fsescrn +++|    BEGIN
00885  M00S00839.fsescrn +++|    SETCHAR(CMDLINE,XCURSOR,CENDLINE);
00886  M00S00840.fsescrn +++|    IF XCURSOR EQ 0 THEN ROWPAINT[COMMANDROW] = FALSE;
00887  M00S00841.fsescrn +++|    END
00888  M00S00842.fsescrn +++|  ELSE IF ALIGNGOOD THEN
00889  M00S00843.fsescrn +++|    BEGIN
00890  M00S00844.fsescrn +++|    FOR SCRNPT1=XCURSOR+XSHIFT[CURSPLIT] STEP 1
00891  M00S00845.fsescrn +++|      UNTIL EDITFIELD-1 DO SETCHAR(LINE,SCRNPT1,CBLANK);
00892  M00S00846.fsescrn +++|    SETCHAR(LINE,BUFCHAR,CENDLINE);
00893  M00S00847.fsescrn +++|    TRIMPAD;
00894  M00S00848.fsescrn +++|    LINECHANGED=TRUE;
00895  M00S00849.fsescrn +++|    END
00896  M00S00850.fsescrn +++|  ELSE REJECT;
00897  M00S00851.fsescrn +++|  GOTO DSX0Y1;
00898  M00S00852.fsescrn +++|
00899  M00S00853.fsescrn +++|DSCLRPAG:  DSCLRUNP:  DSCLREOP:
00900  M00S00854.fsescrn +++|  PAINTALL;
00901  M00S00855.fsescrn +++|  SETCMD("SETSCR");
00902  M00S00856.fsescrn +++|  GOTO DSLOOP;
00903  M00S00857.fsescrn +++|
00904  M00S00858.fsescrn +++|DSCHAR:
00905  M00S00859.fsescrn +++|  IF YCURSOR EQ COMMANDROW THEN
00906  M00S00860.fsescrn +++|    BEGIN
00907  M00S00861.fsescrn +++|    MOVETEXT(CMDLIN,0,BUFCM1);
00908  M00S00862.fsescrn +++|    ROWPAINT[COMMANDROW] = TRUE;
00909  M00S00863.fsescrn +++|    END
00910  M00S00864.fsescrn +++|  ELSE
00911  M00S00865.fsescrn +++|    BEGIN
00912  M00S00866.fsescrn +++|    EXTEND;
00913  M00S00867.fsescrn +++|    IF ALIGNGOOD THEN
00914  M00S00868.fsescrn +++|      BEGIN
00915  M00S00869.fsescrn +++|      SCRNPT1=LENGTH(LIN);
00916  M00S00870.fsescrn +++|      MOVETEXT(LIN,XSHIFT[CURSPLIT],EDITFIELD);
00917  M00S00871.fsescrn +++|      LINECHANGED=TRUE;
00918  M00S00872.fsescrn +++|      END
00919  M00S00873.fsescrn +++|    ELSE REJECT;
00920  M00S00874.fsescrn +++|    END
00921  M00S00875.fsescrn +++|  GOTO DSX0Y1;
00922  M00S00876.fsescrn +++|
00923  M00S00877.fsescrn +++|DSINSC:
00924  M00S00878.fsescrn +++|  IF YCURSOR EQ COMMANDROW THEN
00925  M00S00879.fsescrn +++|    BEGIN                            # IF COMMANDROW #
00926  M00S00880.fsescrn +++|    ROWPAINT[COMMANDROW] = TRUE;
00927  M00S00881.fsescrn +++|    INSTEXT(CMDLIN,0,BUFCM1);
00928  M00S00882.fsescrn +++|    END
00929  M00S00883.fsescrn +++|  ELSE
00930  M00S00884.fsescrn +++|    BEGIN
00931  M00S00885.fsescrn +++|    EXTEND;
00932  M00S00886.fsescrn +++|    IF ALIGNGOOD THEN
00933  M00S00887.fsescrn +++|      BEGIN
00934  M00S00888.fsescrn +++|      INSTEXT(LIN,XSHIFT[CURSPLIT],EDITFIELD);
Line S00889 Modification History
M01 (Removed by) fsesc23
Seq #  *Modification Id* Act 
----------------------------+
00935  M01S00889.fsesc23 ---|      IF CURRENT EQ REGLINE[MARKREG] AND MRKCHAR[0] GR -1 THEN
00936  M01S00890.fsesc23 ---|        BEGIN
00937  M01S00891.fsesc23 ---|        IF VTXCUR LS MRKCHAR[0] THEN
00938  M01S00892.fsesc23 ---|          BEGIN
00939  M01S00893.fsesc23 ---|          MRKCHAR[0] = MRKCHAR[0] + 1;
00940  M01S00894.fsesc23 ---|          END
00941  M01S00895.fsesc23 ---|        IF CURRENT EQ REGLINE[MARKREG+1] AND VTXCUR LQ MRKCHAR[1] THEN
00942  M01S00896.fsesc23 ---|          MRKCHAR[1] = MRKCHAR[1] + 1;
00943  M01S00897.fsesc23 ---|        END
Line S00001 Modification History
M01 (Added by) fsesc23
Seq #  *Modification Id* Act 
----------------------------+
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  M00S00898.fsescrn +++|      LINECHANGED=TRUE;
00949  M00S00899.fsescrn +++|      END
00950  M00S00900.fsescrn +++|    ELSE REJECT;
00951  M00S00901.fsescrn +++|    END
00952  M00S00902.fsescrn +++|  GOTO DSX0Y1;
00953  M00S00903.fsescrn +++|
00954  M00S00904.fsescrn +++|DSDELC:
00955  M00S00905.fsescrn +++|  IF YCURSOR EQ COMMANDROW THEN
00956  M00S00906.fsescrn +++|    BEGIN
00957  M00S00907.fsescrn +++|    DELTEXT(CMDLIN,0,BUFCM1);
00958  M00S00908.fsescrn +++|    IF LENGTH(CMDLIN) EQ 0 THEN ROWPAINT[COMMANDROW] = FALSE;
00959  M00S00909.fsescrn +++|    END
00960  M00S00910.fsescrn +++|  ELSE IF ALIGNGOOD THEN
00961  M00S00911.fsescrn +++|    BEGIN
00962  M00S00912.fsescrn +++|    IF HARDFN AND LENGTH(LIN) GR XSHIFT[CURSPLIT]+USRNUMCOL
00963  M00S00913.fsescrn +++|      THEN ROWPAINT[YCURSOR]=TRUE;
00964  M00S00914.fsescrn +++|    DELTEXT(LIN,XSHIFT[CURSPLIT],EDITFIELD);
Line S00915 Modification History
M01 (Removed by) fsesc23
Seq #  *Modification Id* Act 
----------------------------+
00965  M01S00915.fsesc23 ---|    IF CURRENT EQ REGLINE[MARKREG] AND MRKCHAR[0] GR -1 THEN
00966  M01S00916.fsesc23 ---|      BEGIN
00967  M01S00917.fsesc23 ---|      IF VTXCUR LS MRKCHAR[0] THEN
00968  M01S00918.fsesc23 ---|        BEGIN
00969  M01S00919.fsesc23 ---|        MRKCHAR[0] = MRKCHAR[0] - 1;
00970  M01S00920.fsesc23 ---|        END
00971  M01S00921.fsesc23 ---|      IF CURRENT EQ REGLINE[MARKREG+1] AND VTXCUR LQ MRKCHAR[1] THEN
00972  M01S00922.fsesc23 ---|        MRKCHAR[1] = MRKCHAR[1] - 1;
Line S00005 Modification History
M01 (Added by) fsesc23
Seq #  *Modification Id* Act 
----------------------------+
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  M00S00923.fsescrn +++|      END
00991  M00S00924.fsescrn +++|    LINECHANGED=TRUE;
00992  M00S00925.fsescrn +++|    END
00993  M00S00926.fsescrn +++|  ELSE REJECT;
00994  M00S00927.fsescrn +++|  GOTO DSX0Y1;
00995  M00S00928.fsescrn +++|
00996  M00S00929.fsescrn +++|DSINSL:
Line S00930 Modification History
M01 (Removed by) fsesc31
Seq #  *Modification Id* Act 
----------------------------+
00997  M01S00930.fsesc31 ---|  IF YTOL(YCURSOR,CURSPLIT) EQ BOTF(CURFILE) THEN EXTEND;
00998  M01S00931.fsesc31 ---|  ELSE
Line S00001 Modification History
M01 (Added by) fsesc31
Seq #  *Modification Id* Act 
----------------------------+
00999  M01S00001.fsesc31 +++|  EXTEND;
01000  M01S00002.fsesc31 +++|  IF ALIGNGOOD THEN
01001  M00S00932.fsescrn +++|    BEGIN
Line S00933 Modification History
M01 (Removed by) fsesc31
Seq #  *Modification Id* Act 
----------------------------+
01002  M01S00933.fsesc31 ---|    EXTEND;
01003  M01S00934.fsesc31 ---|    IF ALIGNGOOD THEN
01004  M01S00935.fsesc31 ---|      BEGIN
01005  M01S00936.fsesc31 ---|      IF CURRENT NQ TOPS(CURSPLIT) THEN BAKZ;
01006  M01S00937.fsesc31 ---|      LINE[0]=NULLIN;
01007  M01S00938.fsesc31 ---|      INSX;
01008  M01S00939.fsesc31 ---|      END
01009  M01S00940.fsesc31 ---|    ELSE
01010  M01S00941.fsesc31 ---|      BEGIN
01011  M01S00942.fsesc31 ---|      REJECT;
01012  M01S00943.fsesc31 ---|      IF HARDFN THEN PAINTREST(YCURSOR);
01013  M01S00944.fsesc31 ---|      END
Line S00003 Modification History
M01 (Added by) fsesc31
Seq #  *Modification Id* Act 
----------------------------+
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  M00S00945.fsescrn +++|    END
01024  M00S00946.fsescrn +++|  GOTO DSX0Y1;
01025  M00S00947.fsescrn +++|
Line S00019 Modification History
M01 (Added by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
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  M00S00948.fsescrn +++|DSFTAB:
Line S00949 Modification History
M01 (Removed by) fsesc19
Seq #  *Modification Id* Act 
----------------------------+
01109  M01S00949.fsesc19 ---|  SCRNPT2=TABFN(1);
Line S00001 Modification History
M01 (Added by) fsesc19
Seq #  *Modification Id* Act 
----------------------------+
01110  M01S00001.fsesc19 +++|  SCRNPT4 = TABFN(1);
01111  M00S00950.fsescrn +++|  FOR SCRNPT3=1 STEP 1 UNTIL USERTABS DO
01112  M00S00951.fsescrn +++|    BEGIN
Line S00952 Modification History
M01 (Removed by) fsesc19
Seq #  *Modification Id* Act 
----------------------------+
01113  M01S00952.fsesc19 ---|    IF TABFN(SCRNPT3) LS SCRNPT2 THEN
Line S00002 Modification History
M01 (Added by) fsesc19
Seq #  *Modification Id* Act 
----------------------------+
01114  M01S00002.fsesc19 +++|    SCRNPT2 = TABFN(SCRNPT3);
01115  M01S00003.fsesc19 +++|    IF SCRNPT2 LS SCRNPT4 OR SCRNPT2 GR VTXMAX THEN
01116  M00S00953.fsescrn +++|      BEGIN                          # WRAPAROUND #
01117  M00S00954.fsescrn +++|      GOTO DSFTAB2;
01118  M00S00955.fsescrn +++|      END
Line S00956 Modification History
M01 (Removed by) fsesc19
Seq #  *Modification Id* Act 
----------------------------+
01119  M01S00956.fsesc19 ---|    SCRNPT2=TABFN(SCRNPT3);
01120  M00S00957.fsescrn +++|    IF SCRNPT2 GR VTXCUR THEN
01121  M00S00958.fsescrn +++|      BEGIN                          # THIS IS IT #
Line S00959 Modification History
M01 (Removed by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
01122  M01S00959.ns2641  ---|      VDTCOR(VTYCUR,SCRNPT2);
01123  M01S00960.ns2641  ---|      GOTO DSLOOP;
Line S00101 Modification History
M01 (Added by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
01124  M01S00101.ns2641  +++|      SCRNPT4 = VTYCUR;
01125  M01S00102.ns2641  +++|      GOTO DSFTAB3;
01126  M00S00961.fsescrn +++|      END
01127  M00S00962.fsescrn +++|    END
01128  M00S00963.fsescrn +++|DSFTAB2:
Line S00964 Modification History
M01 (Removed by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
01129  M01S00964.ns2641  ---|  IF NOT TABUNDWFLN[0] THEN
01130  M01S00965.ns2641  ---|    BEGIN                            # IF FORWARD TABS WRAP LINES #
01131  M01S00966.ns2641  ---|    SCRNPT4 = VTYCUR + 1;
01132  M01S00967.ns2641  ---|    IF SCRNPT4 GR VTYMAX THEN SCRNPT4 = 0;
01133  M01S00968.ns2641  ---|    VDTCOR(SCRNPT4,0);
01134  M01S00969.ns2641  ---|    END
Line S00103 Modification History
M01 (Added by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
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  M00S00970.fsescrn +++|  GOTO DSLOOP;
01162  M00S00971.fsescrn +++|
01163  M00S00972.fsescrn +++|DSBTAB:
01164  M00S00973.fsescrn +++|  IF TABUNDWBLN[0] AND VTXCUR EQ 0 THEN GOTO DSLOOP;  # IF NO WRAP #
01165  M00S00974.fsescrn +++|  SCRNPT1=-1;
01166  M00S00975.fsescrn +++|  SCRNPT2=TABFN(TABSTOPS);
01167  M00S00976.fsescrn +++|  FOR SCRNPT3=USERTABS STEP -1 UNTIL 1 DO
01168  M00S00977.fsescrn +++|    BEGIN
Line S00978 Modification History
M01 (Removed by) fsesc19
Seq #  *Modification Id* Act 
----------------------------+
01169  M01S00978.fsesc19 ---|    IF TABFN(SCRNPT3) GR SCRNPT2 AND SCRNPT1 LS 0 THEN
01170  M01S00979.fsesc19 ---|      BEGIN                          # ENABLE #
01171  M01S00980.fsesc19 ---|      SCRNPT1=TABFN(SCRNPT3);
01172  M01S00981.fsesc19 ---|      END
01173  M01S00982.fsesc19 ---|    SCRNPT2=TABFN(SCRNPT3);
01174  M01S00983.fsesc19 ---|    IF SCRNPT2 LS VTXCUR AND SCRNPT1 GQ 0 THEN
01175  M01S00984.fsesc19 ---|      BEGIN                          # THIS IS IT #
01176  M01S00985.fsesc19 ---|      VDTCOR(VTYCUR,SCRNPT2);
01177  M01S00986.fsesc19 ---|      GOTO DSLOOP;
Line S00004 Modification History
M01 (Added by) fsesc19
Seq #  *Modification Id* Act 
----------------------------+
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 #
Line S00129 Modification History
M01 (Added by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
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
Line S00012 Modification History
M01 (Added by) fsesc19
Seq #  *Modification Id* Act 
----------------------------+
01195  M01S00012.fsesc19 +++|      VDTCOR(VTYCUR,SCRNPT4);
01196  M01S00013.fsesc19 +++|      GOTO DSLOOP;
01197  M00S00987.fsescrn +++|      END
01198  M00S00988.fsescrn +++|    END
Line S00989 Modification History
M01 (Removed by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
01199  M01S00989.ns2641  ---|  IF VTXCUR GR 0 THEN
Line S00138 Modification History
M01 (Added by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
01200  M01S00138.ns2641  +++|  IF VTXCUR GR 0
01201  M01S00139.ns2641  +++|    AND NOT (TABVTPROTM[0] AND ROWTYPE[VTYCUR] EQ ROWST"LABEL") THEN
01202  M00S00990.fsescrn +++|    BEGIN
01203  M00S00991.fsescrn +++|    VDTCOR(VTYCUR,0);
01204  M00S00992.fsescrn +++|    GOTO DSLOOP;
01205  M00S00993.fsescrn +++|    END
Line S00140 Modification History
M01 (Added by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
01206  M01S00140.ns2641  +++|DSBTAB2:
01207  M00S00994.fsescrn +++|  SCRNPT1=MAX(SCRNPT1,0);
01208  M00S00995.fsescrn +++|  SCRNPT4=VTYCUR-1;
01209  M00S00996.fsescrn +++|  IF SCRNPT4 LS 0 THEN SCRNPT4=VTYMAX;
Line S00141 Modification History
M01 (Added by) ns2641
Seq #  *Modification Id* Act 
----------------------------+
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  M00S00997.fsescrn +++|  VDTCOR(SCRNPT4,SCRNPT1);
01222  M00S00998.fsescrn +++|  GOTO DSLOOP;
01223  M00S00999.fsescrn +++|
01224  M00S01000.fsescrn +++|DSDELL:
01225  M00S01001.fsescrn +++|  IF ALIGNGOOD THEN
01226  M00S01002.fsescrn +++|    BEGIN
01227  M00S01003.fsescrn +++|    IF CURRENT LS BOTS(CURSPLIT) THEN DELX;
01228  M00S01004.fsescrn +++|    END
01229  M00S01005.fsescrn +++|  ELSE
01230  M00S01006.fsescrn +++|    BEGIN
01231  M00S01007.fsescrn +++|    REJECT;
01232  M00S01008.fsescrn +++|    IF HARDFN AND NOT TABVTPROTM[0] THEN PAINTREST(YCURSOR);
Line S00001 Modification History
M01 (Added by) fsesc20
Seq #  *Modification Id* Act 
----------------------------+
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  M00S01009.fsescrn +++|    END
01238  M00S01010.fsescrn +++|  LINECHANGED=FALSE;
01239  M00S01011.fsescrn +++|  GOTO DSX0Y1;
01240  M00S01012.fsescrn +++|
01241  M00S01013.fsescrn +++|DSGENERIC:
01242  M00S01014.fsescrn +++|  IF FIRSTEVENT THEN CMDLINE[0]=NULLIN;
01243  M00S01015.fsescrn +++|  IF ABS(VTCHAR) EQ GENERICST"GHELP" THEN SETCMD("HELP");
01244  M00S01016.fsescrn +++|  ELSE IF ABS(VTCHAR) EQ GENERICST"GBACK" THEN SETCMD("BACK");
01245  M00S01017.fsescrn +++|  ELSE IF ABS(VTCHAR) EQ GENERICST"GDATA" THEN SETCMD("DATA");
01246  M00S01018.fsescrn +++|  ELSE IF ABS(VTCHAR) EQ GENERICST"GEDIT" THEN SETCMD("EDIT");
01247  M00S01019.fsescrn +++|  ELSE IF ABS(VTCHAR) EQ GENERICST"GSTOP" THEN
01248  M00S01020.fsescrn +++|    BEGIN
01249  M00S01021.fsescrn +++|    SETCMD("SETSCR");
01250  M00S01022.fsescrn +++|    IF NOT PROMPTING THEN SETCMD("SETLIN");
01251  M00S01023.fsescrn +++|    END
01252  M00S01024.fsescrn +++|  ELSE IF VTCHAR EQ GENERICST"GFWD" THEN SETCMD("VNS");
01253  M00S01025.fsescrn +++|  ELSE IF VTCHAR EQ GENERICST"GBKW" THEN SETCMD("VPS");
01254  M00S01026.fsescrn +++|  ELSE IF -VTCHAR EQ GENERICST"GFWD" THEN SETCMD("VL");
01255  M00S01027.fsescrn +++|  ELSE IF -VTCHAR EQ GENERICST"GBKW" THEN SETCMD("PF");
01256  M00S01028.fsescrn +++|  ELSE IF VTCHAR EQ GENERICST"GUP" THEN SETCMD("VN");
01257  M00S01029.fsescrn +++|  ELSE IF VTCHAR EQ GENERICST"GDOWN" THEN SETCMD("VP");
01258  M00S01030.fsescrn +++|  ELSE IF TABCURADDT[0] EQ 2 AND
01259  M00S01031.fsescrn +++|    TABVTFKLSM[0] NQ 0 AND
01260  M00S01032.fsescrn +++|    VTCHAR EQ GENERICST"GPOS" THEN
01261  M00S01033.fsescrn +++|    ROWPAINT[YCURSOR] = TRUE;        # 721 FULL DUPLEX TOUCH PANEL #
01262  M00S01034.fsescrn +++|  ELSE GOTO DSLOOP;
01263  M00S01035.fsescrn +++|  GOTO DSFKEY2;
01264  M00S01036.fsescrn +++|
01265  M00S01037.fsescrn +++|DSFKEY:
01266  M00S01038.fsescrn +++|  IF FIRSTEVENT THEN CMDLINE[0]=NULLIN;
01267  M00S01039.fsescrn +++|  IF ABS(VTCHAR) GR POSFKEYS OR VTCHAR EQ 0
01268  M00S01040.fsescrn +++|    THEN DSERRJMP("UNSUPPORTED FUNCTION KEY$");
01269  M00S01041.fsescrn +++|  P<KEYLIN>=LOC(FKEYSTRING[VTCHAR]);
01270  M00S01042.fsescrn +++|  SCRNPT2=LENGTH(KEYLIN);
01271  M00S01043.fsescrn +++|  IF SCRNPT2 GQ 15 THEN
01272  M00S01044.fsescrn +++|    BEGIN
01273  M00S01045.fsescrn +++|    PUSH;
01274  M00S01046.fsescrn +++|    POSZ(TOPK(FKEYS)+VTCHAR+POSFKEYS);
01275  M00S01047.fsescrn +++|    P<KEYLIN>=LOC(LIN);
01276  M00S01048.fsescrn +++|    ADDTOCMD;
01277  M00S01049.fsescrn +++|    POP;
01278  M00S01050.fsescrn +++|    END
01279  M00S01051.fsescrn +++|  ELSE ADDTOCMD;
01280  M00S01052.fsescrn +++|DSFKEY2:
01281  M00S01053.fsescrn +++|  HARDFN=FALSE;
01282  M00S01054.fsescrn +++|  IF TABVTFKLSM[0] NQ 0 THEN ROWPAINT[YCURSOR] = TRUE;
01283  M00S01055.fsescrn +++|  IF PROMPTING THEN                  # SIGNAL OVERRIDE OF SECONDARY #
01284  M00S01056.fsescrn +++|    BEGIN
01285  M00S01057.fsescrn +++|    HALT("DIRECTIVE CANCELLED BY FUNCTION KEY$");
01286  M00S01058.fsescrn +++|    ESCAPE=TRUE;
01287  M00S01059.fsescrn +++|    END
01288  M00S01060.fsescrn +++|  GOTO DSLOOP;
01289  M00S01061.fsescrn +++|
01290  M00S01062.fsescrn +++|DSERAC:
01291  M00S01063.fsescrn +++|  VTCHAR=X"20";  # BLANK #
01292  M00S01064.fsescrn +++|  VTORDN=SCREENST"CHAR";
01293  M00S01065.fsescrn +++|  GOTO DSCHAR;
01294  M00S01066.fsescrn +++|
01295  M00S01067.fsescrn +++|DSERAL:
01296  M00S01068.fsescrn +++|  IF ROWTYPE[YCURSOR] EQ ROWST"COMMAND" THEN
01297  M00S01069.fsescrn +++|    BEGIN
01298  M00S01070.fsescrn +++|    SETCHAR(CMDLINE,0,CENDLINE);
01299  M00S01071.fsescrn +++|    ROWPAINT[COMMANDROW] = FALSE;
01300  M00S01072.fsescrn +++|    END
01301  M00S01073.fsescrn +++|  ELSE IF ALIGNGOOD THEN
01302  M00S01074.fsescrn +++|    BEGIN
01303  M00S01075.fsescrn +++|    FOR SCRNPT1=XSHIFT[CURSPLIT] STEP 1
01304  M00S01076.fsescrn +++|      UNTIL EDITFIELD-1 DO SETCHAR(LINE,SCRNPT1,CBLANK);
01305  M00S01077.fsescrn +++|    SETCHAR(LINE,BUFCHAR,CENDLINE);
01306  M00S01078.fsescrn +++|    TRIMPAD;
01307  M00S01079.fsescrn +++|    LINECHANGED=TRUE;
01308  M00S01080.fsescrn +++|    END
01309  M00S01081.fsescrn +++|  ELSE REJECT;
01310  M00S01082.fsescrn +++|  GOTO DSX0Y1;
01311  M00S01083.fsescrn +++|
01312  M00S01084.fsescrn +++|DSFIELD:
01313  M00S01085.fsescrn +++|  IF YCURSOR EQ COMMANDROW THEN
01314  M00S01086.fsescrn +++|    BEGIN
01315  M00S01087.fsescrn +++|    VDTIINP;                         # GET FIRST CHARACTER OF FIELD #
01316  M00S01088.fsescrn +++|    FOR SCRNPT1 = 0 STEP 1 WHILE VTORDN EQ SCREENST"CHAR" DO
01317  M00S01089.fsescrn +++|      BEGIN
01318  M00S01090.fsescrn +++|      MOVETEXT(CMDLIN,SCRNPT1,BUFCM1);
01319  M00S01091.fsescrn +++|      VDTIINP;                       # GET NEXT CHARACTER OF FIELD #
01320  M00S01092.fsescrn +++|      END
01321  M00S01093.fsescrn +++|    SETCHAR(CMDLINE,SCRNPT1,CENDLINE);
01322  M00S01094.fsescrn +++|    ROWPAINT[COMMANDROW] = TRUE;
01323  M00S01095.fsescrn +++|    END
01324  M00S01096.fsescrn +++|  ELSE
01325  M00S01097.fsescrn +++|    BEGIN
01326  M00S01098.fsescrn +++|    EXTEND;
01327  M00S01099.fsescrn +++|    IF ALIGNGOOD THEN
01328  M00S01100.fsescrn +++|      BEGIN                          # IF ALIGN IS O.K. #
01329  M00S01101.fsescrn +++|      SCRNPT2 = LENGTH(LIN);         # SAVE CURRENT LINE LENGTH #
01330  M00S01102.fsescrn +++|      VDTIINP;                       # GET FIRST CHARACTER OF FIELD #
01331  M00S01103.fsescrn +++|      FOR XCURSOR = 0 STEP 1 WHILE VTORDN EQ SCREENST"CHAR" DO
01332  M00S01104.fsescrn +++|        BEGIN
01333  M00S01105.fsescrn +++|        IF XCURSOR + XSHIFT[CURSPLIT] LS EDITFIELD THEN
01334  M00S01106.fsescrn +++|          BEGIN                      # IF WITHIN EDITING WINDOW #
01335  M00S01107.fsescrn +++|          SCRNPT1 = XLTXPINT[VTCHAR];
01336  M00S01108.fsescrn +++|          IF ASCII[CURFILE] LQ 1 THEN
01337  M00S01109.fsescrn +++|            BEGIN                    # IF SUPPRESSING LOWER CASE #
01338  M00S01110.fsescrn +++|            # CODE IS DEPENDENT ON PRECISE VALUES OF INTERNAL CHARSET #
01339  M00S01111.fsescrn +++|            CONTROL IFNQ CLEFTCURL,O"133"; DEFERROR; CONTROL FI;
01340  M00S01112.fsescrn +++|            CONTROL IFNQ CVERTICAL,O"134"; DEFERROR; CONTROL FI;
01341  M00S01113.fsescrn +++|            CONTROL IFNQ CRITECURL,O"135"; DEFERROR; CONTROL FI;
01342  M00S01114.fsescrn +++|            CONTROL IFNQ CTILDE,O"136"; DEFERROR; CONTROL FI;
01343  M00S01115.fsescrn +++|            CONTROL IFNQ CGRAVE,O"100"; DEFERROR; CONTROL FI;
01344  M00S01116.fsescrn +++|            CONTROL IFNQ CCOLON,O"000"; DEFERROR; CONTROL FI;
01345  M00S01117.fsescrn +++|            # REPAINT IF NON-EXISTENT DISPLAY CODE CHARACTER #
01346  M00S01118.fsescrn +++|            IF (SCRNPT1 GQ O"133" AND SCRNPT1 LQ O"136")
01347  M00S01119.fsescrn +++|              OR (SCRNPT1 EQ O"100") THEN ROWPAINT[YCURSOR] = TRUE;
01348  M00S01120.fsescrn +++|            IF (B<00,01>MEM[CSMR] EQ 0)
01349  M00S01121.fsescrn +++|              AND (SCRNPT1 EQ O"000") THEN ROWPAINT[YCURSOR]=TRUE;
01350  M00S01122.fsescrn +++|            DSPLCOD(SCRNPT1);        # SUPRESS LOWER CASE #
01351  M00S01123.fsescrn +++|            END
01352  M00S01124.fsescrn +++|          SETCHAR(LINE,XCURSOR+XSHIFT[CURSPLIT],SCRNPT1);
01353  M00S01125.fsescrn +++|          IF SCRNPT1 EQ TABCHAR THEN
01354  M00S01126.fsescrn +++|            BEGIN                    # IF SOFT TAB #
01355  M00S01127.fsescrn +++|            SOFTTAB = TRUE;
01356  M00S01128.fsescrn +++|            ROWPAINT[YCURSOR] = TRUE;
01357  M00S01129.fsescrn +++|            END
01358  M00S01130.fsescrn +++|          END
01359  M00S01131.fsescrn +++|        VDTIINP;                     # GET NEXT CHARACTER OF FIELD #
01360  M00S01132.fsescrn +++|        END
01361  M00S01133.fsescrn +++|#
01362  M00S01134.fsescrn +++|      PERFORM NECESSARY PADDING AND SET END OF LINE.
01363  M00S01135.fsescrn +++|#
01364  M00S01136.fsescrn +++|      SCRNPT1 = XSHIFT[CURSPLIT] + XCURSOR;
01365  M00S01137.fsescrn +++|      IF SCRNPT1 LS SCRNPT2 THEN
01366  M00S01138.fsescrn +++|        BEGIN                        # IF LINE WAS SHORTENED #
01367  M00S01139.fsescrn +++|        FOR SCRNPT3 = SCRNPT1 STEP 1 UNTIL
01368  M00S01140.fsescrn +++|          MIN(SCRNPT2-1,MIN(EDITFIELD-1,XSHIFT[CURSPLIT]+USRNUMCOL)) DO
01369  M00S01141.fsescrn +++|          BEGIN
01370  M00S01142.fsescrn +++|          SETCHAR(LINE,SCRNPT3,CBLANK);
01371  M00S01143.fsescrn +++|          END
01372  M00S01144.fsescrn +++|        TRIMPAD;
01373  M00S01145.fsescrn +++|        END
01374  M00S01146.fsescrn +++|      ELSE
01375  M00S01147.fsescrn +++|        BEGIN                        # LINE NOT SHORTENED #
01376  M00S01148.fsescrn +++|        IF SCRNPT2 LS XSHIFT[CURSPLIT] THEN
01377  M00S01149.fsescrn +++|          BEGIN                      # IF LINE LENGTHENED #
01378  M00S01150.fsescrn +++|          IF EDITFIELD GQ XSHIFT[CURSPLIT] THEN
01379  M00S01151.fsescrn +++|            BEGIN                    # IF WITHIN EDITING WINDOW #
01380  M00S01152.fsescrn +++|            FOR SCRNPT3 = SCRNPT2 STEP 1 UNTIL XSHIFT[CURSPLIT] - 1 DO
01381  M00S01153.fsescrn +++|              SETCHAR(LINE,SCRNPT3,CBLANK);
01382  M00S01154.fsescrn +++|            SETCHAR(LINE,MIN(SCRNPT1,EDITFIELD),CENDLINE);
01383  M00S01155.fsescrn +++|            END
01384  M00S01156.fsescrn +++|          END
01385  M00S01157.fsescrn +++|        ELSE
01386  M00S01158.fsescrn +++|          BEGIN                      # NO CHANGE IN LINE LENGTH #
01387  M00S01159.fsescrn +++|          SETCHAR(LINE,MIN(SCRNPT1,MAX(SCRNPT2,EDITFIELD)),CENDLINE);
01388  M00S01160.fsescrn +++|          END
01389  M00S01161.fsescrn +++|        END
01390  M00S01162.fsescrn +++|      LINECHANGED = TRUE;            # TEXT OF LINE ALTERED #
01391  M00S01163.fsescrn +++|      END
01392  M00S01164.fsescrn +++|    ELSE
01393  M00S01165.fsescrn +++|      BEGIN                          # ALIGN BAD #
01394  M00S01166.fsescrn +++|      REJECT;                        # REJECT CHANGE #
01395  M00S01167.fsescrn +++|      END
01396  M00S01168.fsescrn +++|    END
01397  M00S01169.fsescrn +++|  GOTO DSLOOP3;                      # CONTINUE WITH INPUT #
01398  M00S01170.fsescrn +++|
01399  M00S01171.fsescrn +++|
01400  M00S01172.fsescrn +++|DSBAD:
01401  M00S01173.fsescrn +++|  ERRSTRING = "UNKNOWN CONTROL KEY, CHECK SCREEN$";
01402  M00S01174.fsescrn +++|  ROWPAINT[VTYCUR] = TRUE;           # SIGNAL REPAINT OF LINE #
01403  M00S01175.fsescrn +++|  GOTO DSLOOP;
01404  M00S01176.fsescrn +++|
01405  M00S01177.fsescrn +++|  IOEND  # DOSCREEN #
01406  M00S01178.fsescrn +++|PAGE                         # SCREEN OUTPUT/CONTROL   #
01407  M00S01179.fsescrn +++|
01408  M00S01180.fsescrn +++|
01409  M00S01181.fsescrn +++|PROC PAINTMARKS(MARKTYPE);
01410  M00S01182.fsescrn +++|  BEGIN
01411  M00S01183.fsescrn +++|#
01412  M00S01184.fsescrn +++|**        PAINTMARKS - SET SCREEN PAINT BITS FOR MARKS.
01413  M00S01185.fsescrn +++|*
01414  M00S01186.fsescrn +++|*         ENTRY  MARKTYPE - 1=FORCE HIGHLIGHTING ON.
01415  M00S01187.fsescrn +++|*                           2=MAINTAIN EXISTING HIGHLIGHTS.
01416  M00S01188.fsescrn +++|*                           3=FORCE HIGHLIGHTING OFF.
01417  M00S01189.fsescrn +++|*                TOPS(BOTH), BOTS(BOTH) - SETUP.
01418  M00S01190.fsescrn +++|*                REGLINE[MARKREG AND MARKREG+1] - ALREADY SET.
01419  M00S01191.fsescrn +++|*                SPLITFILE[2] - WHETHER TWO SPLITS ARE ON SCREEN.
01420  M00S01192.fsescrn +++|*
01421  M00S01193.fsescrn +++|*         EXIT   ROWPMARK[ALL] - FORCED ON OR OFF BY REGIONS.
01422  M00S01194.fsescrn +++|*                ROWPAINT[ANY] - FORCED TRUE AS NEEDED.
01423  M00S01195.fsescrn +++|*
01424  M00S01196.fsescrn +++|*         CALLS  DOMARK (INTERNAL).
01425  M00S01197.fsescrn +++|#
01426  M00S01198.fsescrn +++|  ITEM MARKTYPE;
01427  M00S01199.fsescrn +++|
01428  M00S01200.fsescrn +++|  PROC DOMARK(SPLT);
01429  M00S01201.fsescrn +++|    BEGIN
01430  M00S01202.fsescrn +++|#
01431  M00S01203.fsescrn +++|**        DOMARK - WORKING PORTION OF PAINTMARKS.
01432  M00S01204.fsescrn +++|*
01433  M00S01205.fsescrn +++|*         NOTE   REFER TO PAINTMARKS HEADER.
01434  M00S01206.fsescrn +++|#
01435  M00S01207.fsescrn +++|    ITEM L1, L2, SPLT;
01436  M00S01208.fsescrn +++|    FOR L1=TOPS(SPLT)+1 STEP 1 UNTIL BOTS(SPLT)-1 DO
01437  M00S01209.fsescrn +++|      BEGIN
01438  M00S01210.fsescrn +++|      L2=LTOY(L1,SPLT);
01439  M00S01211.fsescrn +++|      ROWPMARK[L2]=FALSE;
01440  M00S01212.fsescrn +++|      IF L1 GQ REGLINE[MARKREG] AND L1 LQ REGLINE[MARKREG+1] THEN
01441  M00S01213.fsescrn +++|        BEGIN
01442  M00S01214.fsescrn +++|        IF MARKTYPE NQ 2 THEN ROWPAINT[L2]=TRUE;
01443  M00S01215.fsescrn +++|        IF MARKTYPE NQ 3 THEN ROWPMARK[L2]=TRUE;
01444  M00S01216.fsescrn +++|        END
01445  M00S01217.fsescrn +++|        IF TABATTRCHR[0] THEN
01446  M00S01218.fsescrn +++|          BEGIN                      # IF ATTRIBUTE TAKES A POS #
01447  M00S01219.fsescrn +++|          IF L1 EQ REGLINE[MARKREG] AND MARKTYPE EQ 3 THEN
01448  M00S01220.fsescrn +++|            BEGIN                    # IF CLEARING MARKS #
01449  M00S01221.fsescrn +++|            ROWPAINT[L2-1] = TRUE;   # FLAG FOR REPAINT #
01450  M00S01222.fsescrn +++|            END
01451  M00S01223.fsescrn +++|          END
01452  M00S01224.fsescrn +++|      END
01453  M00S01225.fsescrn +++|    END
01454  M00S01226.fsescrn +++|
01455  M00S01227.fsescrn +++|  IF NUMMARKS GR 0 THEN        # SEE IF NEED TO HIGHLIGHT ANY #
01456  M00S01228.fsescrn +++|    BEGIN
01457  M00S01229.fsescrn +++|    DOMARK(1);
01458  M00S01230.fsescrn +++|    IF SPLITFILE[2] NQ 0 THEN DOMARK(2);
01459  M00S01231.fsescrn +++|    END
01460  M00S01232.fsescrn +++|
01461  M00S01233.fsescrn +++|  END                             # OF PAINTMARKS #
01462  M00S01234.fsescrn +++|
01463  M00S01235.fsescrn +++|
01464  M00S01236.fsescrn +++|PROC PAINTSCREEN;
01465  M00S01237.fsescrn +++|  IOBEGIN(PAINTSCREEN)
01466  M00S01238.fsescrn +++|#
01467  M00S01239.fsescrn +++|**        PAINTSCREEN - OUTPUT NORMAL AND SECONDARY DISPLAYS.
01468  M00S01240.fsescrn +++|*
01469  M00S01241.fsescrn +++|*         PAINTSCREEN IS CALLED TO FILL A DISPLAY PAGE.  THE
01470  M00S01242.fsescrn +++|*         PROMPTING FLAG INDICATES WHETHER THIS IS A NORMAL
01471  M00S01243.fsescrn +++|*         (PRIMARY) DISPLAY OR A SECONDARY DISPLAY.  THE ROWPAINT
01472  M00S01244.fsescrn +++|*         BITS INDICATE WHICH PORTIONS OF THE SCREEN ARE ALREADY
01473  M00S01245.fsescrn +++|*         CORRECT AND WHICH REALLY NEED TO BE PAINTED.  THE YCURSOR
01474  M00S01246.fsescrn +++|*         IS FORCED TO POINT TO EITHER TEXT OR THE COMMAND AREA IF
01475  M00S01247.fsescrn +++|*         IT DOES NOT ALREADY.  ANY MESSAGE IN THE ERROR STRING
01476  M00S01248.fsescrn +++|*         BUFFER IS OUTPUT AND CLEARED.  IF AN ERROEOUS COMMAND WAS
01477  M00S01249.fsescrn +++|*         PREVIOUSLY ATTEMPTED, PAINTSCREEN RECOGNIZES THIS AND
01478  M00S01250.fsescrn +++|*         RE-PRINTS THE OLD COMMAND BUFFER WITH THE CURSOR FLASHING
01479  M00S01251.fsescrn +++|*         AT THE ILLEGAL SYNTAX.  FILE POSITIONING IS FORCED TO
01480  M00S01252.fsescrn +++|*         ALIGN WITH THE CURSOR FOR ON-TEXT CURSORS.  TITLE LINES
01481  M00S01253.fsescrn +++|*         ARE VERIFIED FOR CORRECTNESS AND POSSIBLY PAINTED.
01482  M00S01254.fsescrn +++|*
01483  M00S01255.fsescrn +++|*         ENTRY  YCURSOR - COMMAND PROCESSOR'S FAVORITE CURSOR.
01484  M00S01256.fsescrn +++|*                    NEGATIVE=SELECT CURSOR FOR CURRENT LINE.
01485  M00S01257.fsescrn +++|*                    ON TEXT OR COMMAND ROW=USE THAT.
01486  M00S01258.fsescrn +++|*                XCURSOR - ALSO WHERE COMMAND PROCESSOR WANT IT.
01487  M00S01259.fsescrn +++|*                VTXMAX - MAXIMUM COLUMN POSITION.
01488  M00S01260.fsescrn +++|*                ROWTYPE[ALL], ROWSPLIT[ALL] - SETUP.
01489  M00S01261.fsescrn +++|*                SPLITFILE[1-2] - SETUP.
01490  M00S01262.fsescrn +++|*                CURRENT, CURFILE, CURSPLIT - WHERE WE ARE.
01491  M00S01263.fsescrn +++|*                PROMPTING - PRIMARY OR SECONDARY DISPLAY.
01492  M00S01264.fsescrn +++|*                LTPS(1-2), LASTBOTS, LASTSIZE, LASTNAME - MUST
01493  M00S01265.fsescrn +++|*                    BE LEFT OVER FROM PREVIOUS PAINTSCREEN OR -1.
01494  M00S01266.fsescrn +++|*                COMMANDROW - SETUP.
01495  M00S01267.fsescrn +++|*                ROWORIG[ALL] - MUST BE AS LEFT BY LAST CALL HERE
01496  M00S01268.fsescrn +++|*                    EXCEPT AS UPDATED BY DELX AND INSX.
01497  M00S01269.fsescrn +++|*                ROWPAINT[ALL] - WHICH LINES NEED PAINTING.
01498  M00S01270.fsescrn +++|*                TOPS(1-2), BOTS(1-2) - SETUP.
01499  M00S01271.fsescrn +++|*                ROWCOLUM[ALL] - WHERE WANT SCALE PATTERN PAINTED.
01500  M00S01272.fsescrn +++|*                XSHIFT[1-2] - SETUP.
01501  M00S01273.fsescrn +++|*                MRKCHAR[0-1] - SETUP.
01502  M00S01274.fsescrn +++|*                USRNUMCOL, USRNUMLIN - LOGICAL DIMENSIONS.
01503  M00S01275.fsescrn +++|*                ERRSTRING - ERROR MESSAGE BUFFER.
01504  M00S01276.fsescrn +++|*                CMDLIN - RESIDUAL COMMAND BUFFER.
01505  M00S01277.fsescrn +++|*                TOPF(1-2), BOTF(1-2) - SETUP.
01506  M00S01278.fsescrn +++|*                FKEYSHOW - HOW MANY FUNCTION KEYS TO DISPLAY.
Line S00001 Modification History
M01 (Added by) ns2700
Seq #  *Modification Id* Act 
----------------------------+
01507  M01S00001.ns2700  +++|*                SHIFTFKEY - FLAG TO DISPLAY SHIFTED FUNCTION KEYS.
01508  M00S01279.fsescrn +++|*                ERRCURSOR - IF POSITIVE, XCURSOR FOR SYNTAX ERROR.
01509  M00S01280.fsescrn +++|*
01510  M00S01281.fsescrn +++|*         EXIT   XCURSOR, YCURSOR - POSSIBLY AT NEW LOCATION.
01511  M00S01282.fsescrn +++|*                TOPS(1-2), BOTS(1-2) - POSSIBLY UPDATED.
01512  M00S01283.fsescrn +++|*                CURFILE - UPDATED IF YCURSOR UPDATED.
01513  M00S01284.fsescrn +++|*                CURSPLIT - UPDATED IF YCURSOR UPDATED.
01514  M00S01285.fsescrn +++|*                ERRSTRING - POSSIBLY WIDE LINE WARNING.
01515  M00S01286.fsescrn +++|*                ROWPAINT[ALL] - FALSE EXCEPT POSSIBLY COMMANDROW.
01516  M00S01287.fsescrn +++|*                ROWORIG[ALL] - REDEFINED.
01517  M00S01288.fsescrn +++|*                ROWCOLUM[ALL] - FALSE.
01518  M00S01289.fsescrn +++|*                ROWPMARK[ALL] - FALSE.
01519  M00S01290.fsescrn +++|*                LTPS(1-2), LASTBOTS, LASTSIZE, LASTNAME - REDEFINED.
01520  M00S01291.fsescrn +++|*
01521  M00S01292.fsescrn +++|*         MACROS GETCHAR, SETCHAR, LTOY.
01522  M00S01293.fsescrn +++|*
01523  M00S01294.fsescrn +++|*         CALLS  GENDECIMAL, GENLITERAL, GENNAME, GENTITLE, LENGTH,
01524  M00S01295.fsescrn +++|*                PAINTMARKS, PAINTSPLIT, POSZ, SETTOPBOTS, TRIMPAD,
01525  M00S01296.fsescrn +++|*                TTLCSTR, TTDEC, TTLFN, TTSTR, TTST, VDTCHR, VDTCLL
01526  M00S01297.fsescrn +++|*                VDTPOS, VDTSAM.
01527  M00S01298.fsescrn +++|*
01528  M00S01299.fsescrn +++|*         USES   SPLIT, FILNUM, FKEYNDX, SCRNPT1, SCRNPT2,
01529  M00S01300.fsescrn +++|*                SCRNPT3, SCRNPT4, SCRNPT5, SCRNPT6, LIN.
01530  M00S01301.fsescrn +++|#
01531  M00S01302.fsescrn +++|
01532  M00S01303.fsescrn +++|  SWITCH PAINTSW
01533  M00S01304.fsescrn +++|    PTEMPTY,                         # EMPTY LINE #
01534  M00S01305.fsescrn +++|    PTCMD,                           # COMMAND LINE #
01535  M00S01306.fsescrn +++|    PTTITLE,                         # TITLE LINE #
01536  M00S01307.fsescrn +++|    PTLABEL,                         # FUNCTION KEY LABEL LINE #
01537  M00S01308.fsescrn +++|    PTTEXT,                          # TEXT LINE #
01538  M00S01309.fsescrn +++|    PTRESPONSE;                      # FSE COMMAND RESPONSE LINE #
01539  M00S01310.fsescrn +++|
01540  M00S01311.fsescrn +++|
01541  M00S01312.fsescrn +++|  PROC GENDECIMAL(POS,VALUE);
01542  M00S01313.fsescrn +++|# TITLE GENDECIMAL - GENERATE A DECIMAL NUMBER. #
01543  M00S01314.fsescrn +++|
01544  M00S01315.fsescrn +++|    BEGIN  # GENDECIMAL #
01545  M00S01316.fsescrn +++|
01546  M00S01317.fsescrn +++|#
01547  M00S01318.fsescrn +++|**        GENDECIMAL - GENERATE A DECIMAL NUMBER.
01548  M00S01319.fsescrn +++|*
01549  M00S01320.fsescrn +++|*         CONVERT A DISPLAY CODE VALUE TO DECIMAL AND POSITION
01550  M00S01321.fsescrn +++|*         IT IN THE TTYLINE.
01551  M00S01322.fsescrn +++|*
01552  M00S01323.fsescrn +++|*         PROC GENDECIMAL(POS,VALUE)
01553  M00S01324.fsescrn +++|*
01554  M00S01325.fsescrn +++|*         EXIT   TTYLINE - SETUP.
01555  M00S01326.fsescrn +++|*
01556  M00S01327.fsescrn +++|*         CALLS  SETCHAR.
01557  M00S01328.fsescrn +++|*
01558  M00S01329.fsescrn +++|*         USES   TTYLINE.
01559  M00S01330.fsescrn +++|#
01560  M00S01331.fsescrn +++|
01561  M00S01332.fsescrn +++|    ITEM POS        I;               # POSITION OF NUMBER #
01562  M00S01333.fsescrn +++|    ITEM QUIT       B;               # FINISHED FLAG #
01563  M00S01334.fsescrn +++|    ITEM TMP1       I;               # TEMPORARY STORAGE #
01564  M00S01335.fsescrn +++|    ITEM TMP2       I;               # TEMPORARY STORAGE #
01565  M00S01336.fsescrn +++|    ITEM TMP3       I;               # TEMPORARY STORAGE #
01566  M00S01337.fsescrn +++|    ITEM VALUE      I;               # VALUE TO CONVERT #
01567  M00S01338.fsescrn +++|
01568  M00S01339.fsescrn +++|    TMP1=ABS(VALUE);
01569  M00S01340.fsescrn +++|    TMP2=0;                          # COUNT DIGITS #
01570  M00S01341.fsescrn +++|    QUIT=FALSE;
01571  M00S01342.fsescrn +++|    WHYLE NOT QUIT DO                # NOT DONE YET #
01572  M00S01343.fsescrn +++|      BEGIN
01573  M00S01344.fsescrn +++|      C<TMP2>TMP3=MOD(TMP1,10)+O"33";  # GET A DIGIT #
01574  M00S01345.fsescrn +++|      TMP1=TMP1/10;                  # REDUCE NUMBER #
01575  M00S01346.fsescrn +++|      TMP2=TMP2+1;                   # BUMP POINTER #
01576  M00S01347.fsescrn +++|      IF TMP1 EQ 0 THEN QUIT=TRUE;
01577  M00S01348.fsescrn +++|      END
01578  M00S01349.fsescrn +++|
01579  M00S01350.fsescrn +++|    FOR TMP1=1 STEP 1 UNTIL TMP2 DO
01580  M00S01351.fsescrn +++|      BEGIN
01581  M00S01352.fsescrn +++|      SETCHAR(TTYLINE,POS,XLTDSPINT[C<TMP2-TMP1>TMP3]);
01582  M00S01353.fsescrn +++|      POS=POS+1;
01583  M00S01354.fsescrn +++|      END
01584  M00S01355.fsescrn +++|
01585  M00S01356.fsescrn +++|    END  # GENDECIMAL #
01586  M00S01357.fsescrn +++|
01587  M00S01358.fsescrn +++|
01588  M00S01359.fsescrn +++|  PROC GENLITERAL(POS,STR);
01589  M00S01360.fsescrn +++|# TITLE GENLITERAL - GENERATE A LITERAL STRING. #
01590  M00S01361.fsescrn +++|
01591  M00S01362.fsescrn +++|    BEGIN  # GENLITERAL #
01592  M00S01363.fsescrn +++|
01593  M00S01364.fsescrn +++|#
01594  M00S01365.fsescrn +++|**        GENLITERAL - GENERATE A LITERAL STRING.
01595  M00S01366.fsescrn +++|*
01596  M00S01367.fsescrn +++|*         GENERATE A LITERAL STRING AND POSITION IT IN THE
01597  M00S01368.fsescrn +++|*         TTYLINE.
01598  M00S01369.fsescrn +++|*
01599  M00S01370.fsescrn +++|*         PROC GENLITERAL(POS,STR)
01600  M00S01371.fsescrn +++|*
01601  M00S01372.fsescrn +++|*         EXIT   TTYLINE - SETUP.
01602  M00S01373.fsescrn +++|*
01603  M00S01374.fsescrn +++|*         CALLS  SETCHAR.
01604  M00S01375.fsescrn +++|*
01605  M00S01376.fsescrn +++|*         USES   TTYLINE.
01606  M00S01377.fsescrn +++|#
01607  M00S01378.fsescrn +++|
01608  M00S01379.fsescrn +++|    ITEM BEGINWORD  B;               # BEGINNING WORD #
01609  M00S01380.fsescrn +++|    ITEM POS        I;               # POSITION OF STRING #
01610  M00S01381.fsescrn +++|    ITEM STR        C(40);           # STRING TO CONVERT #
01611  M00S01382.fsescrn +++|    ITEM TMP1       I;               # TEMPORARY STORAGE #
01612  M00S01383.fsescrn +++|    ITEM TMP2       I;               # TEMPORARY STORAGE #
01613  M00S01384.fsescrn +++|
01614  M00S01385.fsescrn +++|    BEGINWORD=TRUE;
01615  M00S01386.fsescrn +++|    TMP1=0;
01616  M00S01387.fsescrn +++|    WHYLE TMP1 LS 40 AND C<TMP1>STR NQ "$" DO
01617  M00S01388.fsescrn +++|      BEGIN
01618  M00S01389.fsescrn +++|      TMP2=C<TMP1>STR;
01619  M00S01390.fsescrn +++|      TMP2=XLTDSPINT[TMP2];
01620  M00S01391.fsescrn +++|      IF TMP2 GQ CLETTERA AND TMP2 LQ CLETTERZ THEN
01621  M00S01392.fsescrn +++|        BEGIN
01622  M00S01393.fsescrn +++|        IF NOT BEGINWORD THEN TMP2=TMP2+CLOWERA-CLETTERA;
01623  M00S01394.fsescrn +++|        BEGINWORD=FALSE;
01624  M00S01395.fsescrn +++|        END
01625  M00S01396.fsescrn +++|      ELSE BEGINWORD=TRUE;
01626  M00S01397.fsescrn +++|      SETCHAR(TTYLINE,POS,TMP2);
01627  M00S01398.fsescrn +++|      POS=POS+1;
01628  M00S01399.fsescrn +++|      TMP1=TMP1+1;
01629  M00S01400.fsescrn +++|      END
01630  M00S01401.fsescrn +++|
01631  M00S01402.fsescrn +++|    END  # GENLITERAL #
01632  M00S01403.fsescrn +++|
01633  M00S01404.fsescrn +++|
01634  M00S01405.fsescrn +++|  PROC GENNAME(POS,NAME);
01635  M00S01406.fsescrn +++|# TITLE GENNAME - GENERATE A NAME. #
01636  M00S01407.fsescrn +++|
01637  M00S01408.fsescrn +++|    BEGIN  # GENNAME #
01638  M00S01409.fsescrn +++|
01639  M00S01410.fsescrn +++|#
01640  M00S01411.fsescrn +++|**        GENNAME - GENERATE A NAME.
01641  M00S01412.fsescrn +++|*
01642  M00S01413.fsescrn +++|*         GENERATE A NAME AND POSITION IT IN THE TTYLINE.
01643  M00S01414.fsescrn +++|*
01644  M00S01415.fsescrn +++|*         PROC GENNAME(POS,NAME)
01645  M00S01416.fsescrn +++|*
01646  M00S01417.fsescrn +++|*         EXIT   TTYLINE - SETUP.
01647  M00S01418.fsescrn +++|*
01648  M00S01419.fsescrn +++|*         CALLS  SETCHAR.
01649  M00S01420.fsescrn +++|*
01650  M00S01421.fsescrn +++|*         USES   TTYLINE.
01651  M00S01422.fsescrn +++|#
01652  M00S01423.fsescrn +++|
01653  M00S01424.fsescrn +++|    ITEM NAME       C(07);           # NAME TO CONVERT #
01654  M00S01425.fsescrn +++|    ITEM POS        I;               # POSITION OF NAME #
01655  M00S01426.fsescrn +++|    ITEM TMP1       I;               # TEMPORARY STORAGE #
01656  M00S01427.fsescrn +++|    ITEM TMP2       I;               # TEMPORARY STORAGE #
01657  M00S01428.fsescrn +++|
01658  M00S01429.fsescrn +++|    FOR TMP1=0 STEP 1 UNTIL 6 DO
01659  M00S01430.fsescrn +++|      BEGIN
01660  M00S01431.fsescrn +++|      TMP2=C<TMP1>NAME;
01661  M00S01432.fsescrn +++|      IF TMP2 NQ 0 AND TMP2 NQ O"55" THEN
01662  M00S01433.fsescrn +++|        BEGIN
01663  M00S01434.fsescrn +++|        TMP2=XLTDSPINT[TMP2];
01664  M00S01435.fsescrn +++|        SETCHAR(TTYLINE,POS,TMP2);
01665  M00S01436.fsescrn +++|        POS=POS+1;
01666  M00S01437.fsescrn +++|        END
01667  M00S01438.fsescrn +++|      END
01668  M00S01439.fsescrn +++|
01669  M00S01440.fsescrn +++|    END  # GENNAME #
01670  M00S01441.fsescrn +++|
01671  M00S01442.fsescrn +++|
01672  M00S01443.fsescrn +++|  PROC GENTITLE(SPLIT);
01673  M00S01444.fsescrn +++|# TITLE GENTITLE - GENERATE TITLE LINE TEXT. #
01674  M00S01445.fsescrn +++|
01675  M00S01446.fsescrn +++|    BEGIN  # GENTITLE #
01676  M00S01447.fsescrn +++|
01677  M00S01448.fsescrn +++|#
01678  M00S01449.fsescrn +++|**        GENTITLE - GENERATE TITLE LINE TEXT.
01679  M00S01450.fsescrn +++|*
01680  M00S01451.fsescrn +++|*         GIVEN A SPLIT, GENERATE THE TITLE LINE.
01681  M00S01452.fsescrn +++|*
01682  M00S01453.fsescrn +++|*         PROC GENTITLE(SPLIT)
01683  M00S01454.fsescrn +++|*
01684  M00S01455.fsescrn +++|*         ENTRY  SPLIT - WHICH SPLIT TO GENERATE TITLE FOR.
01685  M00S01456.fsescrn +++|*
01686  M00S01457.fsescrn +++|*         EXIT   TTYLIN - TEXT FOR TITLE LINE.
01687  M00S01458.fsescrn +++|*
01688  M00S01459.fsescrn +++|*         CALLS  GENDECIMAL, GENLITERAL, GENNAME, SETCHAR.
01689  M00S01460.fsescrn +++|*
01690  M00S01461.fsescrn +++|          USES   TTYLIN.
01691  M00S01462.fsescrn +++|#
01692  M00S01463.fsescrn +++|
01693  M00S01464.fsescrn +++|    ITEM FILE       I;               # FILE SPLIT #
01694  M00S01465.fsescrn +++|    ITEM POS        I;               # POSITION OF TEXT #
01695  M00S01466.fsescrn +++|    ITEM SPLIT      I;               # TITLE SPLIT #
01696  M00S01467.fsescrn +++|
01697  M00S01468.fsescrn +++|    POS=0;
01698  M00S01469.fsescrn +++|    IF TABATTRCHR[0] THEN GENLITERAL(POS," $");
01699  M00S01470.fsescrn +++|    FILE=SPLITFILE[SPLIT];
01700  M00S01471.fsescrn +++|    IF ASCII[FILE] LQ 1 THEN GENLITERAL(POS,"UPPER CASE $");
01701  M00S01472.fsescrn +++|    GENLITERAL(POS,"FILE $");
01702  M00S01473.fsescrn +++|    GENNAME(POS,FILENAM[FILE]);
01703  M00S01474.fsescrn +++|    GENLITERAL(POS,"  $");
01704  M00S01475.fsescrn +++|    IF NOT SHORTTITLE THEN
01705  M00S01476.fsescrn +++|      BEGIN
01706  M00S01477.fsescrn +++|      IF TOPF(FILE)+1 EQ BOTF(FILE) THEN GENLITERAL(POS," EMPTY$");
01707  M00S01478.fsescrn +++|      ELSE
01708  M00S01479.fsescrn +++|        BEGIN
01709  M00S01480.fsescrn +++|        IF TOPS(SPLIT)+1 NQ BOTS(SPLIT) THEN
01710  M00S01481.fsescrn +++|          BEGIN
01711  M00S01482.fsescrn +++|          GENLITERAL(POS,"LINES $");
01712  M00S01483.fsescrn +++|          GENDECIMAL(POS,TOPS(SPLIT)+1-TOPF(FILNUM));
01713  M00S01484.fsescrn +++|          GENLITERAL(POS," - $");
01714  M00S01485.fsescrn +++|          GENDECIMAL(POS,BOTS(SPLIT)-1-TOPF(FILNUM));
01715  M00S01486.fsescrn +++|          END
01716  M00S01487.fsescrn +++|        GENLITERAL(POS," SIZE $");
01717  M00S01488.fsescrn +++|        GENDECIMAL(POS,BOTF(FILE)-1-TOPF(FILE));
01718  M00S01489.fsescrn +++|        END
01719  M00S01490.fsescrn +++|      IF XSHIFT[SPLIT] NQ 0 THEN
01720  M00S01491.fsescrn +++|        BEGIN                        # IF SET VIEW OFFSET ENABLED #
01721  M00S01492.fsescrn +++|        GENLITERAL(POS,"  OFFSET $");
01722  M00S01493.fsescrn +++|        GENDECIMAL(POS,XSHIFT[SPLIT]+1);
01723  M00S01494.fsescrn +++|        END
01724  M00S01495.fsescrn +++|      IF FILENAM[1] EQ FILENAM[2] THEN
01725  M00S01496.fsescrn +++|        BEGIN                        # IF SAME FILE IN BOTH SPLITS #
01726  M00S01497.fsescrn +++|        CHANGED[1] = CHANGED[1] LOR CHANGED[2];
01727  M00S01498.fsescrn +++|        CHANGED[2] = CHANGED[1];
01728  M00S01499.fsescrn +++|        END
01729  M00S01500.fsescrn +++|      IF CHANGED[SPLIT] NQ 0 THEN
01730  M00S01501.fsescrn +++|        BEGIN                        # IF FILE HAS BEEN CHANGED #
01731  M00S01502.fsescrn +++|        GENLITERAL(POS," (CHANGED)$");
01732  M00S01503.fsescrn +++|        END
01733  M00S01504.fsescrn +++|      ELSE
01734  M00S01505.fsescrn +++|        BEGIN                        # NO CHANGE #
01735  M00S01506.fsescrn +++|        IF LOCKED[SPLIT] NQ 0 THEN
01736  M00S01507.fsescrn +++|          BEGIN                      # IF FILE IS LOCKED #
01737  M00S01508.fsescrn +++|          GENLITERAL(POS," (READ-ONLY)$");
01738  M00S01509.fsescrn +++|          END
01739  M00S01510.fsescrn +++|        ELSE
01740  M00S01511.fsescrn +++|          BEGIN                      # NO LOCK #
01741  M00S01512.fsescrn +++|          GENLITERAL(POS," (NO CHANGES)$");
01742  M00S01513.fsescrn +++|          END
01743  M00S01514.fsescrn +++|        END
Line S00001 Modification History
M01 (Added by) fsesc28
Seq #  *Modification Id* Act 
----------------------------+
01744  M01S00001.fsesc28 +++|      IF NUMMARKS GR 0 AND MRKFILE[0] EQ FDLF(FILE) THEN
01745  M01S00002.fsesc28 +++|        BEGIN
01746  M01S00003.fsesc28 +++|        IF NUMMARKS EQ 1 THEN
01747  M01S00004.fsesc28 +++|          GENLITERAL(POS," <MARK ACTIVE>$");
01748  M01S00005.fsesc28 +++|        ELSE
01749  M01S00006.fsesc28 +++|          GENLITERAL(POS," <MARKS ACTIVE>$");
01750  M01S00007.fsesc28 +++|        END
01751  M00S01515.fsescrn +++|      END
01752  M00S01516.fsescrn +++|    FOR POS = POS STEP 1 UNTIL(VTXMAX - ATTCOUNT) DO
01753  M00S01517.fsescrn +++|      BEGIN                          # UNTIL END OF LINE #
01754  M00S01518.fsescrn +++|      SETCHAR(TTYLINE,POS,CBLANK);
01755  M00S01519.fsescrn +++|      END
01756  M00S01520.fsescrn +++|    SETCHAR(TTYLINE,POS,CENDLINE);
01757  M00S01521.fsescrn +++|
01758  M00S01522.fsescrn +++|    END  # GENTITLE #
01759  M00S01523.fsescrn +++|
01760  M00S01524.fsescrn +++|
01761  M00S01525.fsescrn +++|
01762  M00S01526.fsescrn +++|
01763  M00S01527.fsescrn +++|  # MAIN PAINTSCREEN CODE STARTS HERE #
01764  M00S01528.fsescrn +++|
01765  M00S01529.fsescrn +++|  IF NOT PROMPTING THEN
01766  M00S01530.fsescrn +++|    BEGIN
01767  M00S01531.fsescrn +++|
01768  M00S01532.fsescrn +++|    IF FORCEAUTOP[0] THEN
01769  M00S01533.fsescrn +++|      BEGIN                          # IF AUTO HALF PAGE #
01770  M00S01534.fsescrn +++|      TOPS(CURSPLIT) = BOTS(CURSPLIT) - NUMROWS[CURSPLIT] / 2;
01771  M00S01535.fsescrn +++|      SETTOPS(CURSPLIT);
01772  M00S01536.fsescrn +++|      XCURSOR = 0;
01773  M00S01537.fsescrn +++|      YCURSOR = BOTS(CURSPLIT);
01774  M00S01538.fsescrn +++|      YCURSOR = LTOY(YCURSOR,CURSPLIT);
01775  M00S01539.fsescrn +++|      SETBOTS(CURSPLIT);
01776  M00S01540.fsescrn +++|      PAINTSPLIT;
01777  M00S01541.fsescrn +++|      END
01778  M00S01542.fsescrn +++|    FORCEAUTOP[0] = FALSE;
01779  M00S01543.fsescrn +++|
01780  M00S01544.fsescrn +++|    # DETERMINE WHETHER RESIDUAL CURSOR IS OUT OF TEXT AREAS #
01781  M00S01545.fsescrn +++|
01782  M00S01546.fsescrn +++|    SCRNPT2=0;
01783  M00S01547.fsescrn +++|    IF YCURSOR LS 0 OR YCURSOR GR VTYMAX THEN SCRNPT2=1;
01784  M00S01548.fsescrn +++|    IF SCRNPT2 EQ 0 THEN
01785  M00S01549.fsescrn +++|      BEGIN
01786  M00S01550.fsescrn +++|      IF ROWTYPE[YCURSOR] NQ ROWST"TEXT"
01787  M00S01551.fsescrn +++|        AND ROWTYPE[YCURSOR] NQ ROWST"COMMAND" THEN SCRNPT2=1;
01788  M00S01552.fsescrn +++|      END
01789  M00S01553.fsescrn +++|
01790  M00S01554.fsescrn +++|    # VERIFY VALIDITY OF SCREEN BOUNDS, MAKE GOOD CURSOR POSITION #
01791  M00S01555.fsescrn +++|
01792  M00S01556.fsescrn +++|    IF SCRNPT2 EQ 0 THEN
01793  M00S01557.fsescrn +++|      BEGIN                          # SIMPLY VERIFY SCREEN BOUNDS #
01794  M00S01558.fsescrn +++|      SETTOPBOTS(1);
01795  M00S01559.fsescrn +++|      IF SPLITFILE[2] NQ 0 THEN SETTOPBOTS(2);
01796  M00S01560.fsescrn +++|      END
01797  M00S01561.fsescrn +++|    ELSE
01798  M00S01562.fsescrn +++|      BEGIN                          # RECOMPUTE CURSOR WHEN OFF TEXT #
01799  M00S01563.fsescrn +++|      IF SPLITFILE[2] EQ 0 THEN CURFILE=SPLITFILE[1];
01800  M00S01564.fsescrn +++|      CURSPLIT=MIN(MAX(CURSPLIT,1),2);
01801  M00S01565.fsescrn +++|      IF SPLITFILE[CURSPLIT] NQ CURFILE
01802  M00S01566.fsescrn +++|        THEN CURSPLIT=CURSPLIT LXR 3;
01803  M00S01567.fsescrn +++|      IF SPLITFILE[2] NQ 0
01804  M00S01568.fsescrn +++|        AND FDLF(SPLITFILE[1]) EQ FDLF(SPLITFILE[2]) THEN
01805  M00S01569.fsescrn +++|        BEGIN
01806  M00S01570.fsescrn +++|        SETTOPBOTS(CURSPLIT);
01807  M00S01571.fsescrn +++|        YCURSOR=CURF(CURFILE);
01808  M00S01572.fsescrn +++|        YCURSOR=LTOY(YCURSOR,CURSPLIT);
01809  M00S01573.fsescrn +++|        IF ROWTYPE[YCURSOR] EQ ROWST"TITLE" AND NUMROWS[CURSPLIT]
01810  M00S01574.fsescrn +++|          GR 0 THEN YCURSOR=YCURSOR+1;
01811  M00S01575.fsescrn +++|        END
01812  M00S01576.fsescrn +++|      ELSE
01813  M00S01577.fsescrn +++|        BEGIN
01814  M00S01578.fsescrn +++|        FOR SCRNPT1=1 STEP 1 UNTIL 2 DO
01815  M00S01579.fsescrn +++|          BEGIN
01816  M00S01580.fsescrn +++|          IF SPLITFILE[SCRNPT1] NQ 0 THEN
01817  M00S01581.fsescrn +++|            BEGIN
01818  M00S01582.fsescrn +++|            SETTOPBOTS(SCRNPT1);
01819  M00S01583.fsescrn +++|            IF SPLITFILE[SCRNPT1] EQ CURFILE THEN
01820  M00S01584.fsescrn +++|              BEGIN
01821  M00S01585.fsescrn +++|              YCURSOR=CURF(CURFILE);
01822  M00S01586.fsescrn +++|              YCURSOR=LTOY(YCURSOR,SCRNPT1);
01823  M00S01587.fsescrn +++|              IF ROWTYPE[YCURSOR] EQ ROWST"TITLE" AND
01824  M00S01588.fsescrn +++|                NUMROWS[SCRNPT1] GR 0 THEN YCURSOR=YCURSOR+1;
01825  M00S01589.fsescrn +++|              CURSPLIT=SCRNPT1;
01826  M00S01590.fsescrn +++|              END
01827  M00S01591.fsescrn +++|            END
01828  M00S01592.fsescrn +++|          END
01829  M00S01593.fsescrn +++|        END
01830  M00S01594.fsescrn +++|      END
01831  M00S01595.fsescrn +++|    IF FORCEAUTOR[0] THEN
01832  M00S01596.fsescrn +++|      BEGIN                          # IF FORCED TO NEXT LINE #
01833  M00S01597.fsescrn +++|      XCURSOR = 0;
01834  M00S01598.fsescrn +++|      YCURSOR = YCURSOR + 1;
01835  M00S01599.fsescrn +++|      FORCEAUTOR[0] = FALSE;
01836  M00S01600.fsescrn +++|      END
01837  M00S01601.fsescrn +++|    IF YCURSOR LS 0 OR YCURSOR GR VTYMAX THEN YCURSOR=COMMANDROW;
01838  M00S01602.fsescrn +++|
01839  M00S01603.fsescrn +++|    # SEE IF LAST TITLE NOW OBSOLETE #
01840  M00S01604.fsescrn +++|
01841  M00S01605.fsescrn +++|    GENTITLE(1);
01842  M00S01606.fsescrn +++|    SCRNPT4=MAX(LENGTH(TITLE1LIN),LENGTH(TTYLIN));
01843  M00S01607.fsescrn +++|    FOR SCRNPT1=0 STEP 1 UNTIL SCRNPT4 DO
01844  M00S01608.fsescrn +++|      BEGIN
01845  M00S01609.fsescrn +++|      GETCHAR(TITLE1LINE,SCRNPT1,SCRNPT2);
01846  M00S01610.fsescrn +++|      GETCHAR(TTYLINE,SCRNPT1,SCRNPT3);
01847  M00S01611.fsescrn +++|      IF SCRNPT2 NQ SCRNPT3 THEN ROWPAINT[TITLEROW[1]]=TRUE;
01848  M00S01612.fsescrn +++|      END
01849  M00S01613.fsescrn +++|    IF SPLITFILE[2] NQ 0 THEN
01850  M00S01614.fsescrn +++|      BEGIN
01851  M00S01615.fsescrn +++|      GENTITLE(2);
01852  M00S01616.fsescrn +++|      SCRNPT4=MAX(LENGTH(TITLE2LIN),LENGTH(TTYLIN));
01853  M00S01617.fsescrn +++|      FOR SCRNPT1=0 STEP 1 UNTIL SCRNPT4 DO
01854  M00S01618.fsescrn +++|        BEGIN
01855  M00S01619.fsescrn +++|        GETCHAR(TITLE2LINE,SCRNPT1,SCRNPT2);
01856  M00S01620.fsescrn +++|        GETCHAR(TTYLINE,SCRNPT1,SCRNPT3);
01857  M00S01621.fsescrn +++|        IF SCRNPT2 NQ SCRNPT3 THEN ROWPAINT[TITLEROW[2]]=TRUE;
01858  M00S01622.fsescrn +++|        END
01859  M00S01623.fsescrn +++|      END
01860  M00S01624.fsescrn +++|    FOR SPLIT=1 STEP 1 UNTIL 2 DO
Proceed to Part 1
cdc/nos2.source/opl.opl871/deck/fsescrn.txt ยท Last modified: (external edit)