cdc:nos2.source:opl.opl871:deck:fsedata
Deck FSEDATA
0 Modifications
Listing Sections
- Deck FSEDATA Start
- Deck FSEDATA Part 1 (Line 2000)
- Deck FSEDATA Part 2 (Line 3169)
- Deck FSEDATA Part 3 (Line 4546)
- Deck FSEDATA Part 4 (Line 6398)
- Deck FSEDATA Part 5 (Line 8108)
Source
Seq # *Modification Id* Act ----------------------------+ 00001 M01S00001.fsedata +++|PROC FSEDATA; 00002 M01S00002.fsedata +++|BEGIN 00003 M01S00003.fsedata +++| 00004 M01S00004.fsedata +++| 00005 M01S00005.fsedata +++|# 00006 M01S00006.fsedata +++|*** FSEDATA -- COMPILE COMMON BLOCK *COMFDAT*. 00007 M01S00007.fsedata +++|* 00008 M01S00008.fsedata +++|* FSEDATA IS THE ONLY COMPILATION IN SINGLE THAT USES 00009 M01S00009.fsedata +++|* CONTROL PRESET WITH THE COMFDAT COMMON BLOCK. IN MULTI-USER 00010 M01S00010.fsedata +++|* VERSION, THE SMFEX MONITOR WILL INITIALIZE COMFDAT. 00011 M01S00011.fsedata +++|# 00012 M01S00012.fsedata +++| 00013 M01S00013.fsedata +++| DEF LISTCON #1#; 00014 M01S00014.fsedata +++| 00015 M01S00015.fsedata +++|CONTROL PRESET; # UNIVERSAL DECLARES # 00016 M01S00016.fsedata +++| 00017 M01S00017.fsedata +++|*IFCALL SINGLE,COMFSGL 00018 M01S00018.fsedata +++|*IFCALL ONLY,COMFONL 00019 M01S00019.fsedata +++|*IFCALL MULTI,COMFMLT 00020 M01S00020.fsedata +++| 00021 M01S00021.fsedata +++|*CALL COMFFSE 00022 M01S00022.fsedata +++| 00023 M01S00023.fsedata +++|*CALL COMFVDT 00024 M01S00024.fsedata +++| 00025 M01S00025.fsedata +++|*CALL COMFDS1 00026 M01S00026.fsedata +++|*CALL COMFVD2 00027 M01S00027.fsedata +++|*CALL COMFDS2 00028 M01S00028.fsedata +++| 00029 M01S00029.fsedata +++|END TERM 00030 M01S00014.fsedata +++|FSEEDIT 00031 M01S79709.@047167 +++|NS2208 00032 M01S78149.@051455 +++|FSEED20 00033 M01S79711.@047039 +++|NS2411 00034 M01S132940.@006306 ---|NS2503 00035 M01S78149.@018398 ---|281L803 00036 M01S00003.fsedata +++| 00037 M01S00004.fsedata +++|# 00038 M01S00005.fsedata +++|*** FSEEDIT - FULL SCREEN EDITOR AND SCREEN MGT FACILITY. 00039 M01S00006.fsedata +++|*
Line S00007 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000084 |
Seq # *Modification Id* Act ----------------------------+ 00040 M02S00007.@000084 ---|* COPYRIGHT CONTROL DATA CORPORATION, 1983. 00041 M01S00001.@000084 +++|* COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. 00042 M01S00008.fsedata +++|# 00043 M01S00009.fsedata +++| 00044 M01S00010.fsedata +++| DEF LISTCON #0#; 00045 M01S00011.fsedata +++| 00046 M01S00012.fsedata +++|CONTROL EJECT; # UNIVERSAL DEFINITIONS # 00047 M01S00013.fsedata +++| 00048 M01S00014.fsedata +++|*IFCALL SINGLE,COMFSGL 00049 M01S00015.fsedata +++|*IFCALL ONLY,COMFONL 00050 M01S00016.fsedata +++|*IFCALL MULTI,COMFMLT 00051 M01S00017.fsedata +++|*CALL COMFFSE 00052 M01S00018.fsedata +++| 00053 M01S00019.fsedata +++| # EXTERNAL REF'S AND DEF'S # 00054 M01S00020.fsedata +++| 00055 M01S00021.fsedata +++| 00056 M01S00022.fsedata +++|CONTROL IFEQ MULTI,1; 00057 M01S00023.fsedata +++| XREF ARRAY RENTSTK [1:MAXREENT]; # SUBROUTINE STACK # 00058 M01S00024.fsedata +++| BEGIN 00059 M01S00025.fsedata +++| ITEM RSTK; 00060 M01S00026.fsedata +++| END 00061 M01S00027.fsedata +++| XREF ITEM RSTKPTR; 00062 M01S00028.fsedata +++|CONTROL FI; 00063 M01S00029.fsedata +++| 00064 M01S00030.fsedata +++| 00065 M01S00031.fsedata +++|CONTROL IFEQ MULTI,1; 00066 M01S00032.fsedata +++| XREF PROC VOLUNTEER; # OFFER TO SURRENDER SUBTASK # 00067 M01S00033.fsedata +++| XREF PROC CLEARINT; # PROCLAIM WE SAW USRBRK # 00068 M01S00034.fsedata +++| XREF PROC FATALTRAP; # MONITOR PROCESSING FOR EDITOR TROUBLE # 00069 M01S00035.fsedata +++| XREF PROC CLEARQUE; # MONITOR NO LONGER NEEDS TASKREQUE BIT # 00070 M01S00036.fsedata +++| CONTROL IFEQ METERING,1; 00071 M01S00037.fsedata +++| XREF PROC BGNMETER; # ISSUE START-OF-SESSION STATS # 00072 M01S00038.fsedata +++| CONTROL FI; 00073 M01S00039.fsedata +++|CONTROL FI; 00074 M01S00040.fsedata +++| 00075 M01S00041.fsedata +++|XDEF 00076 M01S00042.fsedata +++| BEGIN 00077 M01S00043.fsedata +++|*CALL COMFXED 00078 M01S00044.fsedata +++| END 00079 M01S00045.fsedata +++| 00080 M01S00046.fsedata +++|XREF 00081 M01S00047.fsedata +++| BEGIN 00082 M01S00048.fsedata +++|*CALL COMFXSB 00083 M01S00049.fsedata +++|*CALL COMFXTI 00084 M01S00050.fsedata +++|*CALL COMFXFO 00085 M01S00051.fsedata +++|*CALL COMFXSC 00086 M01S00052.fsedata +++|*CALL COMFXWK 00087 M01S00053.fsedata +++|*CALL COMFXVT 00088 M01S00054.fsedata +++| END 00089 M01S00055.fsedata +++| 00090 M01S00056.fsedata +++|CONTROL IFEQ SINGLE,1; 00091 M01S00057.fsedata +++| XREF 00092 M01S00058.fsedata +++| BEGIN 00093 M01S00059.fsedata +++|*CALL COMFXCM 00094 M01S00060.fsedata +++| END 00095 M01S00061.fsedata +++|CONTROL FI; 00096 M01S00062.fsedata +++| 00097 M01S00063.fsedata +++|XREF 00098 M01S00064.fsedata +++| BEGIN 00099 M01S00065.fsedata +++| CONTROL IFEQ SINGLE,1; 00100 M01S00066.fsedata +++|*CALL COMFXFL 00101 M01S00067.fsedata +++| CONTROL FI; 00102 M01S00068.fsedata +++| END 00103 M01S00069.fsedata +++| 00104 M01S00070.fsedata +++|XREF # XTRNL CIO PROCS # 00105 M01S00071.fsedata +++| BEGIN 00106 M01S00072.fsedata +++| PROC READ; # ALL SAME AS # 00107 M01S00073.fsedata +++| PROC READC; # CORRESPONDING MACROS # 00108 M01S00074.fsedata +++| PROC WRITE; 00109 M01S00075.fsedata +++| PROC WRITEF; 00110 M01S00076.fsedata +++| PROC WRITER; 00111 M01S00077.fsedata +++| PROC WRITEC; 00112 M01S00078.fsedata +++| CONTROL IFEQ SINGLE,1; 00113 M01S00079.fsedata +++| PROC EVICT; 00114 M01S00080.fsedata +++| PROC RETERN; 00115 M01S00081.fsedata +++| PROC REWIND; 00116 M01S00082.fsedata +++| PROC RECALL; 00117 M01S00083.fsedata +++| CONTROL FI; 00118 M01S00084.fsedata +++| END 00119 M01S00085.fsedata +++| 00120 M01S00086.fsedata +++|XREF # XTRNL MISCELLANEOUS # 00121 M01S00087.fsedata +++| BEGIN 00122 M01S00001.@000016 +++| PROC DISSJ; # DISABLE/ENABLE SSJ= # 00123 M01S00088.fsedata +++| PROC VDTGTN; 00124 M01S00089.fsedata +++| PROC VDTGTO; 00125 M01S00090.fsedata +++| PROC EXCHWD; 00126 M01S00091.fsedata +++| PROC MOVEWD; 00127 M01S00092.fsedata +++| PROC ZEROWD; 00128 M01S00093.fsedata +++| FUNC FASTFND B; # OPTIMIZED STRING SEARCH # 00129 M01S00001.@000074 +++| FUNC FASTLNB; # FIND LAST NON-BLANK # 00130 M01S00094.fsedata +++| FUNC LENGTH; # LENGTH OF INTERNAL LINE # 00131 M01S00095.fsedata +++| FUNC LINESZ; 00132 M01S00096.fsedata +++| FUNC FIXCTL B; # FIX UNWANTED CONTROL BYTES # 00133 M01S00097.fsedata +++| CONTROL IFEQ SINGLE,1; 00134 M01S00098.fsedata +++| PROC MESSAGE; # MESSAGE MACRO # 00135 M01S00099.fsedata +++| PROC DISTCON; # DISABLE TERMINAL CONTROL # 00136 M01S00100.fsedata +++| PROC ABORT; # ABORT MACRO # 00137 M01S00101.fsedata +++| PROC SYSREQ; 00138 M01S00102.fsedata +++| PROC ROLLTE; 00139 M01S00103.fsedata +++| PROC TSTATUS; 00140 M01S00104.fsedata +++| CONTROL FI; 00141 M01S00105.fsedata +++| END 00142 M01S00106.fsedata +++| 00143 M01S00107.fsedata +++| # COMMON DATA AREAS # 00144 M01S00108.fsedata +++| 00145 M01S00109.fsedata +++|*CALL COMFDS1 00146 M01S00110.fsedata +++|*CALL COMFVD2 00147 M01S00111.fsedata +++|*CALL COMFDS2 00148 M01S00112.fsedata +++| 00149 M01S00113.fsedata +++| # EDITOR SYNTAX TABLES # 00150 M01S00114.fsedata +++| 00151 M01S00115.fsedata +++|*CALL COMFTAB 00152 M01S00116.fsedata +++|PAGE # VARIOUS USEFUL LITTLE ROUTINES # 00153 M01S00117.fsedata +++| 00154 M01S00118.fsedata +++| 00155 M01S00119.fsedata +++|PROC DSPLCOD(WORD); 00156 M01S00120.fsedata +++| BEGIN 00157 M01S00121.fsedata +++|# 00158 M01S00122.fsedata +++|** DSPLCOD - CONVERT ONE CHARACTER TO LOWER CASE OR DISPLAY. 00159 M01S00123.fsedata +++|* 00160 M01S00124.fsedata +++|* DSPLCOD SUPPRESSES CASE OF INTERNAL CHARACTERS. IT IS 00161 M01S00125.fsedata +++|* ALSO DEFINED TO CONVERT FROM INTERNAL CHARACTER SET TO 00162 M01S00126.fsedata +++|* DISPLAY. THUS THE FIRST 64 CHARACTERS OF INTERNAL MUST 00163 M01S00127.fsedata +++|* EQUAL DISPLAY CODE. WE ENFORCE THIS WITH COMPILE-TIME 00164 M01S00128.fsedata +++|* CHECKS FOR "A", "Z", AND SEMICOLON. 00165 M01S00129.fsedata +++|* 00166 M01S00130.fsedata +++|* ENTRY WORD - INTERNAL CHARSET VALUE TO CONVERT. 00167 M01S00131.fsedata +++|* 00168 M01S00132.fsedata +++|* EXIT WORD - CONVERTED. 00169 M01S00133.fsedata +++|# 00170 M01S00134.fsedata +++| CONTROL IFNQ CLETTERA,1; ERROR; CONTROL FI; 00171 M01S00135.fsedata +++| CONTROL IFNQ CLETTERZ,26; ERROR; CONTROL FI; 00172 M01S00136.fsedata +++| CONTROL IFNQ CSEMCOLON,O"77"; ERROR; CONTROL FI; 00173 M01S00137.fsedata +++| ITEM WORD; 00174 M01S00138.fsedata +++| WORD=XLTINTDSP[WORD]; 00175 M01S00139.fsedata +++| END # OF DSPLCOD # 00176 M01S00140.fsedata +++| 00177 M01S00141.fsedata +++| 00178 M01S00142.fsedata +++|PROC SQUELCH(TEXTLIN); 00179 M01S00143.fsedata +++| BEGIN 00180 M01S00144.fsedata +++|# 00181 M01S00145.fsedata +++|** SQUELCH - SUPPRESS LOWER-CASE FOR LINE IMAGE. 00182 M01S00146.fsedata +++|* 00183 M01S00147.fsedata +++|* ENTRY TEXTLIN - INTERNAL CHARSET LINE IMAGE. 00184 M01S00148.fsedata +++|* 00185 M01S00149.fsedata +++|* EXIT TEXTLIN - ALL ALPHABETICS ARE UPPER CASE. 00186 M01S00150.fsedata +++|* 00187 M01S00151.fsedata +++|* MACROS GETCHAR, SETCHAR. 00188 M01S00152.fsedata +++|* 00189 M01S00153.fsedata +++|* CALLS DSPLCOD, LENGTH. 00190 M01S00154.fsedata +++|# 00191 M01S00155.fsedata +++| ARRAY TEXTLIN[0:99]; ITEM TEXTLINE; 00192 M01S00156.fsedata +++| ITEM TMP1, TMP2; 00193 M01S00157.fsedata +++| FOR TMP1=0 STEP 1 UNTIL LENGTH(TEXTLIN) DO 00194 M01S00158.fsedata +++| BEGIN 00195 M01S00159.fsedata +++| GETCHAR(TEXTLINE,TMP1,TMP2); 00196 M01S00160.fsedata +++| DSPLCOD(TMP2); 00197 M01S00161.fsedata +++| SETCHAR(TEXTLINE,TMP1,TMP2); 00198 M01S00162.fsedata +++| END 00199 M01S00163.fsedata +++| END # OF SQUELCH # 00200 M01S00164.fsedata +++| 00201 M01S00165.fsedata +++| 00202 M01S00166.fsedata +++|PROC HALT(STR); 00203 M01S00167.fsedata +++| IOBEGIN(HALT) 00204 M01S00168.fsedata +++|# 00205 M01S00169.fsedata +++|** HALT - SET WARNING MESSAGE AND FLAG COMMAND SHUTDOWN. 00206 M01S00170.fsedata +++|* 00207 M01S00171.fsedata +++|* ENTRY STR - ERROR MESSAGE, DISPLAY WITH DOLLAR SIGN. 00208 M01S00172.fsedata +++|* 00209 M01S00173.fsedata +++|* EXIT ERRSTRING - EQUAL TO STR. 00210 M01S00174.fsedata +++|* FOUND - FALSE. 00211 M01S00175.fsedata +++|* LINCTR - INFINITE. 00212 M01S00176.fsedata +++|# 00213 M01S00177.fsedata +++| ITEM STR C(80); 00214 M01S00178.fsedata +++| FOUND=FALSE; 00215 M01S00179.fsedata +++| LINCTR=LARGENUM; 00216 M01S00180.fsedata +++| ERRSTRING=STR; 00217 M01S00181.fsedata +++| IOEND # OF HALT # 00218 M01S00182.fsedata +++| 00219 M01S00183.fsedata +++| 00220 M01S00184.fsedata +++|CONTROL IFEQ MULTI,1; 00221 M01S00185.fsedata +++| 00222 M01S00186.fsedata +++| 00223 M01S00187.fsedata +++| PROC CHKVICTIM; 00224 M01S00188.fsedata +++| IOBEGIN(CHKVICTIM) 00225 M01S00189.fsedata +++|# 00226 M01S00190.fsedata +++|** CHKVICTIM - CHECK FOR SMFEX-IMPOSED SESSION ABORT. 00227 M01S00191.fsedata +++|* 00228 M01S00192.fsedata +++|* CHKVICTIM LOOKS FOR SMFEX-DETECTED CATASTROPHES. THIS 00229 M01S00193.fsedata +++|* CURRENTLY INCLUDES ONLY UNRECOVERABLE ECS PARITY ERRORS. 00230 M01S00194.fsedata +++|* 00231 M01S00195.fsedata +++|* ENTRY SMFVICTIM - FLAG. 00232 M01S00196.fsedata +++|* 00233 M01S00197.fsedata +++|* EXIT VIA FATAL IF NEED TO ABORT. 00234 M01S00198.fsedata +++|* 00235 M01S00199.fsedata +++|* CALLS FATAL. 00236 M01S00200.fsedata +++|# 00237 M01S00201.fsedata +++| IF SMFVICTIM THEN FATAL(ERRSTRING); 00238 M01S00202.fsedata +++| IOEND # OF CHKVICTIM # 00239 M01S00203.fsedata +++| 00240 M01S00204.fsedata +++|CONTROL FI; 00241 M01S00205.fsedata +++| 00242 M01S00206.fsedata +++| 00243 M01S00207.fsedata +++|PROC CONCAT(LIN1,LIN2); 00244 M01S00208.fsedata +++| BEGIN 00245 M01S00209.fsedata +++|# 00246 M01S00210.fsedata +++|** CONCAT - CONCATENATE TWO INTERNAL LINE IMAGES. 00247 M01S00211.fsedata +++|* 00248 M01S00212.fsedata +++|* ENTRY LIN1, LIN2 - THE LINE IMAGES IN INTERNAL CHARSET. 00249 M01S00213.fsedata +++|* 00250 M01S00214.fsedata +++|* EXIT LIN1 - HAS LIN2 APPENDED TO IT. 00251 M01S00215.fsedata +++|* 00252 M01S00216.fsedata +++|* MACROS GETCHAR, SETCHAR. 00253 M01S00217.fsedata +++|* 00254 M01S00218.fsedata +++|* CALLS LENGTH. 00255 M01S00219.fsedata +++|# 00256 M01S00220.fsedata +++| ARRAY LIN1; ITEM LINE1; 00257 M01S00221.fsedata +++| ARRAY LIN2; ITEM LINE2; 00258 M01S00222.fsedata +++| ITEM TMP1, TMP2, TMP3, TMP4; 00259 M01S00223.fsedata +++| TMP1=LENGTH(LIN1); 00260 M01S00224.fsedata +++| TMP2=LENGTH(LIN2); 00261 M01S00225.fsedata +++| FOR TMP3=0 STEP 1 WHILE TMP3 LQ TMP2 AND TMP1+TMP3 LQ BUFCM1 DO 00262 M01S00226.fsedata +++| BEGIN 00263 M01S00227.fsedata +++| GETCHAR(LINE2,TMP3,TMP4); 00264 M01S00228.fsedata +++| SETCHAR(LINE1,TMP1+TMP3,TMP4); 00265 M01S00229.fsedata +++| END 00266 M01S00230.fsedata +++| SETCHAR(LINE1,TMP1+TMP3,CENDLINE); 00267 M01S00231.fsedata +++| END # OF CONCAT # 00268 M01S00232.fsedata +++| 00269 M01S00233.fsedata +++| 00270 M01S00234.fsedata +++|PROC NOPOP; # LIKE POP BUT DONT MOVE # 00271 M01S00235.fsedata +++| BEGIN 00272 M01S00236.fsedata +++|# 00273 M01S00237.fsedata +++|** NOPOP - POP POSITION STACK WITHOUT USING IT. 00274 M01S00238.fsedata +++|* 00275 M01S00239.fsedata +++|* NOPOP DIFFERS FROM POP IN THAT WHILE BOTH POP THE LEVEL 00276 M01S00240.fsedata +++|* OF THE POSITIONING STACK, NOPOP DISCARDS THE STACK VALUES 00277 M01S00241.fsedata +++|* WHILE POP REPOSITIONS TO THE SAVED LOCATION IN THE FILE. 00278 M01S00242.fsedata +++|* 00279 M01S00243.fsedata +++|* ENTRY POSITIONING STACK PREVIOUSLY PUSHED. 00280 M01S00244.fsedata +++|* 00281 M01S00245.fsedata +++|* EXIT STACKPTR DECREMENTED. 00282 M01S00246.fsedata +++|* 00283 M01S00247.fsedata +++|* CALLS FATAL. 00284 M01S00248.fsedata +++|# 00285 M01S00249.fsedata +++| IF STACKPTR LS 0 THEN 00286 M01S00250.fsedata +++| BEGIN
Line S00251 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000048 |
Seq # *Modification Id* Act ----------------------------+ 00287 M02S00251.@000048 ---| FATAL(" FILE POSITION STACK UNDERFLOWED (1).$"); 00288 M01S00001.@000048 +++| FATAL(" FILE POSITION STACK UNDERFLOWED (2).$"); 00289 M01S00252.fsedata +++| END 00290 M01S00253.fsedata +++| STACKPTR=STACKPTR-1; 00291 M01S00254.fsedata +++| END # OF NOPOP # 00292 M01S00255.fsedata +++| 00293 M01S00256.fsedata +++| 00294 M01S00257.fsedata +++|PROC WINDOLIN(LINEPARM,FILEPARM); 00295 M01S00258.fsedata +++| BEGIN 00296 M01S00259.fsedata +++|# 00297 M01S00260.fsedata +++|** WINDOLIN - FORCE ADDRESS INTO FILE IMAGE. 00298 M01S00261.fsedata +++|* 00299 M01S00262.fsedata +++|* WINDOLIN FORCES LINEPARM TO BE IN BOUNDS FOR THE FILEPARM. 00300 M01S00263.fsedata +++|* 00301 M01S00264.fsedata +++|* ENTRY LINEPARM - LINE ADDRESS. 00302 M01S00265.fsedata +++|* FILEPARM - BRACKET NUMBER FOR FILE. 00303 M01S00266.fsedata +++|* TOPF(FILEPARM), BOTF(FILEPARM) - BOUNDS. 00304 M01S00267.fsedata +++|* 00305 M01S00268.fsedata +++|* EXIT LINEPARM - IN BOUNDS. 00306 M01S00269.fsedata +++|* FOUND - TRUE OR FALSE FOR VALIDITY OF ORIGINAL VALUE. 00307 M01S00270.fsedata +++|# 00308 M01S00271.fsedata +++| ITEM LINEPARM, FILEPARM; 00309 M01S00272.fsedata +++| FOUND=FALSE; 00310 M01S00273.fsedata +++| IF TOPF(FILEPARM) EQ BOTF(FILEPARM)-1 THEN LINEPARM=TOPF(FILEPARM); 00311 M01S00274.fsedata +++| ELSE IF LINEPARM LQ TOPF(FILEPARM) THEN LINEPARM=TOPF(FILEPARM)+1; 00312 M01S00275.fsedata +++| ELSE IF LINEPARM GQ BOTF(FILEPARM) THEN LINEPARM=BOTF(FILEPARM)-1; 00313 M01S00276.fsedata +++| ELSE FOUND=TRUE; 00314 M01S00277.fsedata +++| END # OF WINDOLIN # 00315 M01S00278.fsedata +++| 00316 M01S00279.fsedata +++| 00317 M01S00280.fsedata +++|PROC WINDOPOS(LINEPARM,FILEPARM); 00318 M01S00281.fsedata +++| BEGIN 00319 M01S00282.fsedata +++|# 00320 M01S00283.fsedata +++|** WINDOPOS - VALIDATE POSITION WITHIN FILE. 00321 M01S00284.fsedata +++|* 00322 M01S00285.fsedata +++|* WINDOPOS IS LIKE WINDOLIN EXCEPT THAT IT ALLOWS THE 00323 M01S00286.fsedata +++|* POSITION TO BE JUST ABOVE THE TOP OF THE FILE. 00324 M01S00287.fsedata +++|* 00325 M01S00288.fsedata +++|* ENTRY LINEPARM - AS WINDOLIN. 00326 M01S00289.fsedata +++|* FILEPARM - AS WINDOLIN. 00327 M01S00290.fsedata +++|* TOPF(), BOTF() - AS WINDOLIN. 00328 M01S00291.fsedata +++|* 00329 M01S00292.fsedata +++|* EXIT LINEPARM - AS WINDOLIN. 00330 M01S00293.fsedata +++|* FOUND - AS WINDOLIN. 00331 M01S00294.fsedata +++|# 00332 M01S00295.fsedata +++| ITEM LINEPARM, FILEPARM; 00333 M01S00296.fsedata +++| FOUND=FALSE; 00334 M01S00297.fsedata +++| IF TOPF(FILEPARM) EQ BOTF(FILEPARM)-1 THEN LINEPARM=TOPF(FILEPARM); 00335 M01S00298.fsedata +++| IF LINEPARM LS TOPF(FILEPARM) THEN LINEPARM=TOPF(FILEPARM); 00336 M01S00299.fsedata +++| ELSE IF LINEPARM GQ BOTF(FILEPARM) THEN LINEPARM=BOTF(FILEPARM)-1; 00337 M01S00300.fsedata +++| ELSE FOUND=TRUE; 00338 M01S00301.fsedata +++| END # OF WINDOPOS # 00339 M01S00302.fsedata +++| 00340 M01S00303.fsedata +++| 00341 M01S00304.fsedata +++|PROC FWDNUM; 00342 M01S00305.fsedata +++| IOBEGIN(FWDNUM) 00343 M01S00306.fsedata +++|# 00344 M01S00307.fsedata +++|** FWDNUM - MOVE FORWARDS UNTIL NUMBERED LINE FOUND. 00345 M01S00308.fsedata +++|* 00346 M01S00309.fsedata +++|* FWDNUM ADVANCES THE CURRENT POSITION IN THE WORKFILE 00347 M01S00310.fsedata +++|* UNTIL A NUMBERED LINE IS FOUND. NOTE THAT WE ASSUME THE 00348 M01S00311.fsedata +++|* CALLER HAS VERIFIED THAT WE EXPECT NUMBERED LINES. 00349 M01S00312.fsedata +++|* 00350 M01S00313.fsedata +++|* ENTRY CURRENT, CURFILE - WHERE WE ARE. 00351 M01S00314.fsedata +++|* BOTF(CURFILE) - BOUNDS. 00352 M01S00315.fsedata +++|* USRBRK - CONTINUOUSLY CHECKED. 00353 M01S00316.fsedata +++|* 00354 M01S00317.fsedata +++|* EXIT CURRENT - UPDATED. 00355 M01S00318.fsedata +++|* 00356 M01S00319.fsedata +++|* MACROS MOD. 00357 M01S00320.fsedata +++|* 00358 M01S00321.fsedata +++|* CALLS FWDZ, GETLNUM, VOLUNTEER(MULTI). 00359 M01S00322.fsedata +++|* 00360 M01S00323.fsedata +++|* USES LINENO, WIDTHFOUND, DORNGCTR. 00361 M01S00324.fsedata +++|# 00362 M01S00325.fsedata +++| LINENO=NINES; 00363 M01S00326.fsedata +++| WIDTHFOUND=0; 00364 M01S00327.fsedata +++| FOR DORNGCTR=1 STEP 1 WHILE WIDTHFOUND EQ 0 AND 00365 M01S00328.fsedata +++| CURRENT LS BOTF(CURFILE)-1 AND USRBRK EQ 0 DO 00366 M01S00329.fsedata +++| BEGIN 00367 M01S00330.fsedata +++| FWDZ; 00368 M01S00331.fsedata +++| GETLNUM; 00369 M01S00332.fsedata +++| IF WIDTHFOUND EQ 0 THEN LINENO=NINES; 00370 M01S00333.fsedata +++| CONTROL IFEQ MULTI,1; 00371 M01S00334.fsedata +++| IF MOD(DORNGCTR,VOLLINES) EQ 0 THEN VOLUNTEER; 00372 M01S00335.fsedata +++| CONTROL FI; 00373 M01S00336.fsedata +++| END 00374 M01S00337.fsedata +++| IOEND # OF FWDNUM # 00375 M01S00338.fsedata +++| 00376 M01S00339.fsedata +++| 00377 M01S00340.fsedata +++|PROC BAKNUM; 00378 M01S00341.fsedata +++| IOBEGIN(BAKNUM) 00379 M01S00342.fsedata +++|# 00380 M01S00343.fsedata +++|** BAKNUM - BACK UP IN FILE UNTIL NUMBERED LINE. 00381 M01S00344.fsedata +++|* 00382 M01S00345.fsedata +++|* BAKNUM IS LIKE FWDNUM EXCEPT OPPOSITE DIRECTION. 00383 M01S00346.fsedata +++|* 00384 M01S00347.fsedata +++|* ENTRY CURRENT, CURFILE - WHERE WE ARE. 00385 M01S00348.fsedata +++|* TOPF(CURFILE) - BOUNDS. 00386 M01S00349.fsedata +++|* USRBRK - CONTINUOUSLY CHECKED. 00387 M01S00350.fsedata +++|* 00388 M01S00351.fsedata +++|* EXIT CURRENT - UPDATED. 00389 M01S00352.fsedata +++|* 00390 M01S00353.fsedata +++|* MACROS MOD. 00391 M01S00354.fsedata +++|* 00392 M01S00355.fsedata +++|* CALLS BAKZ, GETLNUM, VOLUNTEER(MULTI). 00393 M01S00356.fsedata +++|* 00394 M01S00357.fsedata +++|* USES LINENO, WIDTHFOUND, DORNGCTR. 00395 M01S00358.fsedata +++|# 00396 M01S00359.fsedata +++| LINENO=0; 00397 M01S00360.fsedata +++| WIDTHFOUND=0; 00398 M01S00361.fsedata +++| FOR DORNGCTR=1 STEP 1 WHILE WIDTHFOUND EQ 0 AND 00399 M01S00362.fsedata +++| CURRENT GR TOPF(CURFILE)+1 AND USRBRK EQ 0 DO 00400 M01S00363.fsedata +++| BEGIN 00401 M01S00364.fsedata +++| BAKZ; 00402 M01S00365.fsedata +++| GETLNUM; 00403 M01S00366.fsedata +++| CONTROL IFEQ MULTI,1; 00404 M01S00367.fsedata +++| IF MOD(DORNGCTR,VOLLINES) EQ 0 THEN VOLUNTEER; 00405 M01S00368.fsedata +++| CONTROL FI; 00406 M01S00369.fsedata +++| END 00407 M01S00370.fsedata +++| IOEND # OF BAKNUM # 00408 M01S00371.fsedata +++| 00409 M01S00372.fsedata +++| 00410 M01S00373.fsedata +++|PROC POSN; 00411 M01S00374.fsedata +++| IOBEGIN(POSN) 00412 M01S00375.fsedata +++|# 00413 M01S00376.fsedata +++|** POSN - POSITION TO LINE WITH DESIRED SEQUENCE NUMBER. 00414 M01S00377.fsedata +++|* 00415 M01S00378.fsedata +++|* POSN MOVES FORWARDS OR BACKWARDS AS NEEDED TO GET TO 00416 M01S00379.fsedata +++|* THE NEAREST LINE WITH THE RIGHT SEQUENCE NUMBER. WE 00417 M01S00380.fsedata +++|* ASSUME THE CALLER HAS VERIFIED WE EXPECT NUMBERS. 00418 M01S00381.fsedata +++|* 00419 M01S00382.fsedata +++|* ENTRY LINNUM1 - DESIRED SEQUENCE NUMBER. 00420 M01S00383.fsedata +++|* CURFILE, CURF(CURFILE) - STARTING LOCATION. 00421 M01S00384.fsedata +++|* TOPF(CURFILE), BOTF(CURFILE) - BOUNDS. 00422 M01S00385.fsedata +++|* USRBRK - CONTINUOUSLY CHECKED. 00423 M01S00386.fsedata +++|* 00424 M01S00387.fsedata +++|* EXIT CURRENT - UPDATED. 00425 M01S00388.fsedata +++|* 00426 M01S00389.fsedata +++|* MACROS MOD. 00427 M01S00390.fsedata +++|* 00428 M01S00391.fsedata +++|* CALLS POSZ, GETLNUM, BAKZ, VOLUNTEER(MULTI), FWDZ, BAKNUM. 00429 M01S00392.fsedata +++|* 00430 M01S00393.fsedata +++|* USES DORNGCTR, LINENO. 00431 M01S00394.fsedata +++|# 00432 M01S00395.fsedata +++| POSZ(CURF(FILNUM)); 00433 M01S00396.fsedata +++| GETLNUM; 00434 M01S00397.fsedata +++| FOR DORNGCTR=1 STEP 1 WHILE CURRENT GR TOPF(FILNUM) AND 00435 M01S00398.fsedata +++| (LINENO GR LINNUM1 OR WIDTHFOUND EQ 0) AND USRBRK EQ 0 DO 00436 M01S00399.fsedata +++| BEGIN 00437 M01S00400.fsedata +++| BAKZ; 00438 M01S00401.fsedata +++| GETLNUM; 00439 M01S00402.fsedata +++| CONTROL IFEQ MULTI,1; 00440 M01S00403.fsedata +++| IF MOD(DORNGCTR,VOLLINES) EQ 0 THEN VOLUNTEER; 00441 M01S00404.fsedata +++| CONTROL FI; 00442 M01S00405.fsedata +++| END 00443 M01S00406.fsedata +++| FOR DORNGCTR=1 STEP 1 WHILE CURRENT LS BOTF(FILNUM)-1 AND 00444 M01S00407.fsedata +++| (LINENO LS LINNUM1) AND USRBRK EQ 0 DO 00445 M01S00408.fsedata +++| BEGIN 00446 M01S00409.fsedata +++| FWDZ; 00447 M01S00410.fsedata +++| GETLNUM; 00448 M01S00411.fsedata +++| CONTROL IFEQ MULTI,1; 00449 M01S00412.fsedata +++| IF MOD(DORNGCTR,VOLLINES) EQ 0 THEN VOLUNTEER; 00450 M01S00413.fsedata +++| CONTROL FI; 00451 M01S00414.fsedata +++| END 00452 M01S00415.fsedata +++| IF LINENO GR LINNUM1 THEN BAKNUM; 00453 M01S00416.fsedata +++| IOEND # OF POSN # 00454 M01S00417.fsedata +++| 00455 M01S00418.fsedata +++| 00456 M01S00419.fsedata +++|PROC FITNUM; 00457 M01S00420.fsedata +++| IOBEGIN(FITNUM) 00458 M01S00421.fsedata +++|# 00459 M01S00422.fsedata +++|** FITNUM - CHECK SEQUENCING GAP AND SELECT INCREMENT. 00460 M01S00423.fsedata +++|* 00461 M01S00424.fsedata +++|* FITNUM IS USED WITH SEQUENCE NUMBERED FILES TO SEE IF 00462 M01S00425.fsedata +++|* THERE IS AN ADEQUATE GAP IN VALUES OF ADJACENT SEQUENCE 00463 M01S00426.fsedata +++|* NUMBERS TO FIT IN AS MANY LINES AS WE WISH. AN INCREMENT 00464 M01S00427.fsedata +++|* IS CHOSEN FOR NUMBERING OF THE LINES TO BE ADDED. 00465 M01S00428.fsedata +++|* 00466 M01S00429.fsedata +++|* ENTRY CURFILE - WHICH FILE BRACKET. 00467 M01S00430.fsedata +++|* NUMBERED[CURFILE] - WHETHER TO DO ANYTHING. 00468 M01S00431.fsedata +++|* CURRENT - LINE AFTER WHICH TO ADD BLOCK. 00469 M01S00432.fsedata +++|* DINCR - DEFAULT NUMBERING INCREMENT. 00470 M01S00433.fsedata +++|* LINPTR3 - TARGET, SHOULD EQUAL CURRENT. 00471 M01S00434.fsedata +++|* LINPTR1, LINPTR2 - INDICATE SIZE OF BLOCK. 00472 M01S00435.fsedata +++|* LIMIT - ALSO INDICATES SIZE OF BLOCK. 00473 M01S00436.fsedata +++|* LINNUM3 - SEQUENCE VALUE AT TARGET. 00474 M01S00437.fsedata +++|* BOTF(CURFILE) - BOUNDS. 00475 M01S00438.fsedata +++|* 00476 M01S00439.fsedata +++|* EXIT VIA ERRJUMP IF IT CANNOT BE DONE. 00477 M01S00440.fsedata +++|* INCR - NEW SEQUENCING INCREMENT. 00478 M01S00441.fsedata +++|* LINENO - FIRST SEQUENCE MINUS INCR. 00479 M01S00442.fsedata +++|* 00480 M01S00443.fsedata +++|* CALLS GETLNUM, PUSH, FWDNUM, POP, MIN, MAX. 00481 M01S00444.fsedata +++|* 00482 M01S00445.fsedata +++|* USES LINNUM1, LINNUM2, LCOUNT. 00483 M01S00446.fsedata +++|# 00484 M01S00447.fsedata +++| 00485 M01S00448.fsedata +++| IF NUMBERED[CURFILE] NQ 0 THEN 00486 M01S00449.fsedata +++| BEGIN 00487 M01S00450.fsedata +++| GETLNUM; 00488 M01S00451.fsedata +++| IF WIDTHFOUND LQ 0 THEN 00489 M01S00452.fsedata +++| BEGIN 00490 M01S00453.fsedata +++| PUSH; 00491 M01S00454.fsedata +++| BAKNUM; 00492 M01S00455.fsedata +++| POP; 00493 M01S00456.fsedata +++| END 00494 M01S00457.fsedata +++| LINNUM1=MIN(LINNUM3,NINES); 00495 M01S00458.fsedata +++| LINNUM1=MAX(LINNUM1,LINENO); 00496 M01S00459.fsedata +++| IF CURRENT GQ BOTF(CURFILE)-1 THEN LINNUM2=NINES; 00497 M01S00460.fsedata +++| ELSE 00498 M01S00461.fsedata +++| BEGIN 00499 M01S00462.fsedata +++| PUSH; 00500 M01S00463.fsedata +++| FWDNUM; 00501 M01S00464.fsedata +++| LINNUM2=LINENO; 00502 M01S00465.fsedata +++| POP; 00503 M01S00466.fsedata +++| END 00504 M01S00467.fsedata +++| LINNUM2=MAX(LINNUM2,LINNUM1+1); 00505 M01S00468.fsedata +++| LINNUM2=MIN(LINNUM2,NINES+1); 00506 M01S00469.fsedata +++| LCOUNT=MIN(LIMIT,ABS(LINPTR2-LINPTR1)+1); # NEEDED # 00507 M01S00470.fsedata +++| GETLNUM; 00508 M01S00471.fsedata +++| IF LINNUM1 GR LINENO THEN # USER SPECIFIED START # 00509 M01S00472.fsedata +++| BEGIN 00510 M01S00473.fsedata +++| IF LCOUNT GR LINNUM2-LINNUM1 00511 M01S00474.fsedata +++| THEN ERRJUMP("NOT ENOUGH ROOM FOR INSERTION$"); 00512 M01S00475.fsedata +++| INCR=(LINNUM2-LINNUM1)/LCOUNT; 00513 M01S00476.fsedata +++| INCR=MAX(INCR,1); 00514 M01S00477.fsedata +++| INCR=MIN(INCR,DINCR); 00515 M01S00478.fsedata +++| LINENO=LINNUM1-INCR; 00516 M01S00479.fsedata +++| END 00517 M01S00480.fsedata +++| ELSE # COMPUTED START # 00518 M01S00481.fsedata +++| BEGIN 00519 M01S00482.fsedata +++| IF LCOUNT GQ LINNUM2-LINNUM1 00520 M01S00483.fsedata +++| THEN ERRJUMP("NOT ENOUGH ROOM FOR INSERTION$"); 00521 M01S00484.fsedata +++| INCR=(LINNUM2-LINNUM1)/(LCOUNT+1); 00522 M01S00485.fsedata +++| INCR=MAX(INCR,1); 00523 M01S00486.fsedata +++| INCR=MIN(INCR,DINCR); 00524 M01S00487.fsedata +++| LINENO=LINNUM1; 00525 M01S00488.fsedata +++| END 00526 M01S00489.fsedata +++| END 00527 M01S00490.fsedata +++| IOEND # OF FITNUM # 00528 M01S00491.fsedata +++| 00529 M01S00492.fsedata +++| 00530 M01S00493.fsedata +++|PROC SPLICE; 00531 M01S00494.fsedata +++| IOBEGIN(SPLICE) 00532 M01S00495.fsedata +++|# 00533 M01S00496.fsedata +++|** SPLICE - SPLICE PORTIONS OF LINES IN WORKFILE. 00534 M01S00497.fsedata +++|* 00535 M01S00498.fsedata +++|* SPLICE CONCATENATES TWO ADJACENT LINES IN THE FILE. THIS 00536 M01S00499.fsedata +++|* ROUTINE IS DESIGNED TO BE EXECUTED AFTER DORANGE PROCESSING, 00537 M01S00500.fsedata +++|* AS IT NO-OPS FOR ONE-LINE RANGES. IT ALSO DELETES IN THE 00538 M01S00501.fsedata +++|* CASE THAT THE SPLICED LINE PAIR IS OF ZERO LENGTH. 00539 M01S00502.fsedata +++|* 00540 M01S00503.fsedata +++|* ENTRY LIN - LINE IMAGE FOR SECOND LINE. 00541 M01S00504.fsedata +++|* CURFILE, CURRENT - ADDRESS OF SECOND LINE. 00542 M01S00505.fsedata +++|* CHRPTR3 - IGNORED. 00543 M01S00506.fsedata +++|* FIRSTRANGE, LASTRANGE - WHETHER AT BOUNDS OF RANGE. 00544 M01S00507.fsedata +++|* (AS LEFT OVER FROM DORANGE) 00545 M01S00508.fsedata +++|* 00546 M01S00509.fsedata +++|* EXIT CHRPTR3 - UNCHANGED. 00547 M01S00510.fsedata +++|* 00548 M01S00511.fsedata +++|* CALLS BAKZ, PUSHTEMP, POPTEMP, DOJOIN, DELX, LENGTH. 00549 M01S00512.fsedata +++|* 00550 M01S00513.fsedata +++|* USES (WITH RESTORATION) - TEMP, CHRPTR3. 00551 M01S00514.fsedata +++|# 00552 M01S00515.fsedata +++| IF NOT (FIRSTRANGE AND LASTRANGE) THEN 00553 M01S00516.fsedata +++| BEGIN # MULTIPLE STUBS TO MERGE # 00554 M01S00517.fsedata +++| BAKZ; # TO CUT-DOWN FIRST LINE # 00555 M01S00518.fsedata +++| PUSHTEMP; 00556 M01S00519.fsedata +++| TEMP=CHRPTR3; 00557 M01S00520.fsedata +++| CHRPTR3=0; # ASSURE DOJOIN IS SIMPLE #
Line S00521 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000056 |
Seq # *Modification Id* Act ----------------------------+ 00558 M02S00521.@000056 ---| DOJOIN; # ADD ON CUT-DOWN LAST LINE # 00559 M01S00001.@000056 +++| DOJOIN(0); # ADD ON CUT-DOWN LAST LINE # 00560 M01S00522.fsedata +++| CHRPTR3=TEMP; # RESTORE CHRPTR3 # 00561 M01S00523.fsedata +++| POPTEMP; 00562 M01S00524.fsedata +++| END 00563 M01S00525.fsedata +++| # DELETE MERGED LINE-PAIR IFF TOTALLY CUT DOWN # 00564 M01S00526.fsedata +++| IF LENGTH(LIN) EQ 0 THEN 00565 M01S00527.fsedata +++| BEGIN 00566 M01S00528.fsedata +++| DELX; 00567 M01S00529.fsedata +++| IF CURRENT GR TOPF(CURFILE) THEN BAKZ; 00568 M01S00530.fsedata +++| END 00569 M01S00531.fsedata +++| IOEND # OF SPLICE # 00570 M01S00532.fsedata +++| 00571 M01S00533.fsedata +++| 00572 M01S00534.fsedata +++|PROC MAKEPAGE(PAGSIZ,FILEPARM); # COMPUTE PAGE BOUNDARIES # 00573 M01S00535.fsedata +++| BEGIN 00574 M01S00536.fsedata +++|# 00575 M01S00537.fsedata +++|** MAKEPAGE - COMPUTE BOUNDS FOR SECTION OF FILE. 00576 M01S00538.fsedata +++|* 00577 M01S00539.fsedata +++|* MAKEPAGE IS USED BY THE VIEW COMMAND IN LINE MODE TO 00578 M01S00540.fsedata +++|* DETERMINE THE SECTION OF THE FILE TO BE PRINTED, BASED 00579 M01S00541.fsedata +++|* ON RECENT USAGE OF VIEW COMMANDS. THE SCANNER IS CALLED 00580 M01S00542.fsedata +++|* BEFORE MAKEPAGE. 00581 M01S00543.fsedata +++|* 00582 M01S00544.fsedata +++|* ENTRY LINCTR - NOMINAL ADDRESS TO PRINT. 00583 M01S00545.fsedata +++|* PAGSIZ - DESIRED SIZE OF VIEW AREA. 00584 M01S00546.fsedata +++|* FILEPARM - WHICH FILE BRACKET. 00585 M01S00547.fsedata +++|* FORWARD, BACKWARD - FROM SCANNER. 00586 M01S00548.fsedata +++|* PAGELAST - WHETHER LAST COMMAND WAS VIEW ALSO. 00587 M01S00549.fsedata +++|* REGLINE[RNGTOPREG], REGLINE[RNGBOTREG] - LAST RANGE 00588 M01S00550.fsedata +++|* PRINTED IF PAGELAST IS TRUE. 00589 M01S00551.fsedata +++|* 00590 M01S00552.fsedata +++|* EXIT LINPTR1, LINPTR2 - COMPUTED BOUNDARIES. 00591 M01S00553.fsedata +++|* LINCTR - FORCED TO FIT IF NOT ALREADY. 00592 M01S00554.fsedata +++|* 00593 M01S00555.fsedata +++|* CALLS WINDOLIN. 00594 M01S00556.fsedata +++|# 00595 M01S00557.fsedata +++| ITEM PAGSIZ, FILEPARM; 00596 M01S00558.fsedata +++| 00597 M01S00559.fsedata +++| IF FORWARD THEN 00598 M01S00560.fsedata +++| BEGIN 00599 M01S00561.fsedata +++| IF PAGELAST THEN LINPTR1=REGLINE[RNGBOTREG]; 00600 M01S00562.fsedata +++| ELSE LINPTR1=LINCTR; 00601 M01S00563.fsedata +++| END 00602 M01S00564.fsedata +++| ELSE IF BACKWARD THEN 00603 M01S00565.fsedata +++| BEGIN 00604 M01S00566.fsedata +++| IF PAGELAST THEN LINPTR1=REGLINE[RNGTOPREG]-PAGSIZ+1; 00605 M01S00567.fsedata +++| ELSE LINPTR1=LINCTR-PAGSIZ+1; 00606 M01S00568.fsedata +++| END 00607 M01S00569.fsedata +++| ELSE LINPTR1=LINCTR-(PAGSIZ/2); 00608 M01S00570.fsedata +++| 00609 M01S00571.fsedata +++| WINDOLIN(LINPTR1,FILEPARM); # TO KEEP IN BOUNDS # 00610 M01S00572.fsedata +++| 00611 M01S00573.fsedata +++| LINPTR2=LINPTR1+PAGSIZ-1; 00612 M01S00574.fsedata +++| WINDOLIN(LINPTR2,FILEPARM); # TO KEEP IN BOUNDS # 00613 M01S00575.fsedata +++| 00614 M01S00576.fsedata +++| IF LINCTR LS LINPTR1 OR LINCTR GR LINPTR2 THEN 00615 M01S00577.fsedata +++| BEGIN 00616 M01S00578.fsedata +++| IF BACKWARD THEN LINCTR=LINPTR1; 00617 M01S00579.fsedata +++| ELSE LINCTR=LINPTR2; 00618 M01S00580.fsedata +++| END 00619 M01S00581.fsedata +++| WINDOLIN(LINCTR,FILEPARM); # MERELY AS STANDARD FOR CMD SKIP # 00620 M01S00582.fsedata +++| 00621 M01S00583.fsedata +++| END # OF MAKEPAGE # 00622 M01S00584.fsedata +++| 00623 M01S00585.fsedata +++| 00624 M01S00586.fsedata +++|PROC SETMARK(POSITION,CURSOR); 00625 M01S00587.fsedata +++| BEGIN # START OF SETMARK # 00626 M01S00588.fsedata +++|# 00627 M01S00589.fsedata +++|** SETMARK - SET BOTH OR SECOND MARKER REGISTERS. 00628 M01S00590.fsedata +++|* 00629 M01S00591.fsedata +++|* SETMARK IS CALLED TO SET MARKER REGISTERS. IF NO OR BOTH 00630 M01S00592.fsedata +++|* MARKERS ARE ALREADY FILLED, WE START OVER AND SET THE 00631 M01S00593.fsedata +++|* FIRST ONE. IF THE FIRST HAS BEEN PREVIOUSLY SET, WE 00632 M01S00594.fsedata +++|* SET THE SECOND ONE. IF THE FILE ASSOCIATION HAS CHANGED 00633 M01S00595.fsedata +++|* BETWEEN SETTING THE FIRST AND SECOND, WE START OVER AND 00634 M01S00596.fsedata +++|* SET THE FIRST ONE. ANY TIME WE SET THE FIRST ONE, WE 00635 M01S00597.fsedata +++|* ALSO DEFAULT THE SECOND ONE TO MATCH THE FIRST. 00636 M01S00598.fsedata +++|* 00637 M01S00599.fsedata +++|* ENTRY POSITION - LINE ADDRESS TO MARK. 00638 M01S00600.fsedata +++|* CURSOR - HORIZONTAL CURSOR POSITION TO MARK. 00639 M01S00601.fsedata +++|* NUMMARKS - NUMBER OF PREVIOUS MARKS. 00640 M01S00602.fsedata +++|* CURFILE - FILE BRACKET FOR POSITION AND CURSOR. 00641 M01S00603.fsedata +++|* FDLF(CURFILE) - SETUP. 00642 M01S00604.fsedata +++|* MRKFILE[0] - SETUP IF NUMMARKS IS ONE. 00643 M01S00605.fsedata +++|* 00644 M01S00606.fsedata +++|* EXIT NUMMARKS - UPDATED. 00645 M01S00607.fsedata +++|* REGLINE[MARKREG] - SETUP IF FIRST MARK SET. 00646 M01S00608.fsedata +++|* REGLINE[MARKREG+1] - SETUP IF SECOND MARK SET. 00647 M01S00609.fsedata +++|* MRKFILE[1-2] - SETUP. 00648 M01S00610.fsedata +++|* MRKCHAR[1-2] - SETUP. 00649 M01S00611.fsedata +++|* 00650 M01S00612.fsedata +++|* CALLS PAINTMARKS. 00651 M01S00613.fsedata +++|# 00652 M01S00614.fsedata +++| ITEM POSITION, CURSOR; 00653 M01S00615.fsedata +++| 00654 M01S00616.fsedata +++| IF (NUMMARKS GQ 2) OR 00655 M01S00617.fsedata +++| (NUMMARKS EQ 1 AND MRKFILE[0] NQ FDLF(CURFILE)) THEN 00656 M01S00618.fsedata +++| BEGIN 00657 M01S00619.fsedata +++| PAINTMARKS(3); 00658 M01S00620.fsedata +++| NUMMARKS=0; 00659 M01S00621.fsedata +++| END 00660 M01S00622.fsedata +++| REGLINE[MARKREG+NUMMARKS]=POSITION; 00661 M01S00623.fsedata +++| REGLINE[MARKTOP+NUMMARKS]=TOPF(CURFILE); 00662 M01S00624.fsedata +++| MRKFILE[NUMMARKS]=FDLF(CURFILE); 00663 M01S00625.fsedata +++| MRKCHAR[NUMMARKS]=CURSOR; 00664 M01S00626.fsedata +++| NUMMARKS=NUMMARKS+1; 00665 M01S00627.fsedata +++| IF NUMMARKS EQ 2 THEN 00666 M01S00628.fsedata +++| BEGIN 00667 M01S00629.fsedata +++| IF REGLINE[MARKREG] GR POSITION 00668 M01S00630.fsedata +++| OR (REGLINE[MARKREG] EQ POSITION AND MRKCHAR[0] GR CURSOR) THEN 00669 M01S00631.fsedata +++| BEGIN 00670 M01S00632.fsedata +++| REGLINE[MARKREG] = = REGLINE[MARKREG+1]; 00671 M01S00633.fsedata +++| REGLINE[MARKTOP] = = REGLINE[MARKTOP+1]; 00672 M01S00634.fsedata +++| MRKFILE[0] = = MRKFILE[1]; 00673 M01S00635.fsedata +++| MRKCHAR[0] = = MRKCHAR[1]; 00674 M01S00636.fsedata +++| END 00675 M01S00637.fsedata +++| END 00676 M01S00638.fsedata +++| ELSE 00677 M01S00639.fsedata +++| BEGIN 00678 M01S00640.fsedata +++| REGLINE[MARKREG+1]=REGLINE[MARKREG]; 00679 M01S00641.fsedata +++| REGLINE[MARKTOP+1]=REGLINE[MARKTOP]; 00680 M01S00642.fsedata +++| MRKFILE[1]=MRKFILE[0]; 00681 M01S00643.fsedata +++| MRKCHAR[1]=MRKCHAR[0]; 00682 M01S00644.fsedata +++| END 00683 M01S00645.fsedata +++| PAINTMARKS(1); 00684 M01S00646.fsedata +++| 00685 M01S00647.fsedata +++| END # OF SETMARK # 00686 M01S00648.fsedata +++| 00687 M01S00649.fsedata +++| 00688 M01S00650.fsedata +++|PROC FORCEFILE; 00689 M01S00651.fsedata +++| IOBEGIN(FORCEFILE) 00690 M01S00652.fsedata +++|# 00691 M01S00653.fsedata +++|** FORCEFILE - GET FILE INTO SOME BRACKET. 00692 M01S00654.fsedata +++|* 00693 M01S00655.fsedata +++|* FORCE FILE SPECIFIED BY READNAM TO BE OPEN FOR SYNTAX 00694 M01S00656.fsedata +++|* SCANNERS WHICH NEED TO STUDY ITS BRACKETING. RETURN 00695 M01S00657.fsedata +++|* FILNUM AS THE BRACKET IN WHICH THE FILE IS OPEN. WE USE 00696 M01S00658.fsedata +++|* CURFILE AS THE BRACKET ONLY IF THE CURRENT FILE IS ONE AND 00697 M01S00659.fsedata +++|* THE SAME AS THE REQUESTED FILE. IN ALL OTHER CASES WE USE 00698 M01S00660.fsedata +++|* THE OPPOSITE BRACKET NUMBER. 00699 M01S00661.fsedata +++|* 00700 M01S00662.fsedata +++|* ENTRY CURFILE - BRACKET WHICH CANNOT BE DISTURBED. 00701 M01S00663.fsedata +++|* READNAM - FILE WE MUST GET OPENED. 00702 M01S00664.fsedata +++|* 00703 M01S00665.fsedata +++|* EXIT FILNUM - THE BRACKET INTO WHICH READNAM IS OPEN. 00704 M01S00666.fsedata +++|* 00705 M01S00667.fsedata +++|* CALLS PUSH, OPENFILE, POP. 00706 M01S00668.fsedata +++|* 00707 M01S00669.fsedata +++|* USES CHARPARM, GETPARM. 00708 M01S00670.fsedata +++|# 00709 M01S00671.fsedata +++| FILNUM=CURFILE; 00710 M01S00672.fsedata +++| IF READNAM EQ PADNAME(FILENAM[FILNUM]) THEN IORET 00711 M01S00673.fsedata +++| FILNUM=FILNUM LXR 3; # FLIP BRACKET AND RESCAN # 00712 M01S00674.fsedata +++| IF READNAM NQ PADNAME(FILENAM[FILNUM]) THEN 00713 M01S00675.fsedata +++| BEGIN # OPEN INTO OTHER BRACKET # 00714 M01S00676.fsedata +++| CHARPARM=0; 00715 M01S00677.fsedata +++| GETPARM=0; 00716 M01S00678.fsedata +++| PUSH; 00717 M01S00679.fsedata +++| OPENFILE; 00718 M01S00680.fsedata +++| POP; 00719 M01S00681.fsedata +++| END 00720 M01S00682.fsedata +++| IOEND # OF FORCEFILE # 00721 M01S00683.fsedata +++| 00722 M01S00684.fsedata +++| 00723 M01S00685.fsedata +++|PROC REL2ABS(LINEPTR,FILEPTR); 00724 M01S00686.fsedata +++| BEGIN 00725 M01S00687.fsedata +++|# 00726 M01S00688.fsedata +++|** REL2ABS - CONVERT RELATIVE LINE ADDRESS TO ABSOLUTE. 00727 M01S00689.fsedata +++|* 00728 M01S00690.fsedata +++|* REL2ABS TAKES A LINE ADDRESS WHICH IS RELATIVE TO ITS 00729 M01S00691.fsedata +++|* WORKFILE FILE IMAGE, AND CONVERTS TO AN ABSOLUTE WORKFILE 00730 M01S00692.fsedata +++|* LINE ADDRESS, FOR ONE OF THE CURRENTLY BRACKETED FILES. 00731 M01S00693.fsedata +++|* 00732 M01S00694.fsedata +++|* ENTRY LINEPTR - RELATIVE LINE ADDRESS. 00733 M01S00695.fsedata +++|* FILEPTR - WHICH BRACKET. 00734 M01S00696.fsedata +++|* CURFILE - WHICH BRACKET IF FILEPTR IS ZERO. 00735 M01S00697.fsedata +++|* TOPF() - SETUP. 00736 M01S00698.fsedata +++|* 00737 M01S00699.fsedata +++|* EXIT LINEPTR - CONVERTED. 00738 M01S00700.fsedata +++|# 00739 M01S00701.fsedata +++| ITEM LINEPTR, FILEPTR; 00740 M01S00702.fsedata +++| IF LINEPTR LS 0 THEN RETURN; 00741 M01S00703.fsedata +++| IF FILEPTR EQ 0 THEN LINEPTR=LINEPTR+TOPF(CURFILE); 00742 M01S00704.fsedata +++| ELSE LINEPTR=LINEPTR+TOPF(FILEPTR); 00743 M01S00705.fsedata +++| END # OF REL2ABS # 00744 M01S00706.fsedata +++| 00745 M01S00707.fsedata +++| 00746 M01S00708.fsedata +++|PROC CHECKFILPTR; 00747 M01S00709.fsedata +++| IOBEGIN(CHECKFILPTR) 00748 M01S00710.fsedata +++|# 00749 M01S00711.fsedata +++|** CHECKFILPTR - CONVERT DIRECTORY ADDRESS TO BRACKET. 00750 M01S00712.fsedata +++|* 00751 M01S00713.fsedata +++|* CHECKFILPTR CONVERTS (MATCHES) A FILE DIRECTORY LINE 00752 M01S00714.fsedata +++|* ADDRESS INTO A BRACKET NUMBER. IT IS A NO-OP FOR 00753 M01S00715.fsedata +++|* ANY PARAMETER VALUE OF ZERO. IT OPENS THE FILE INTO 00754 M01S00716.fsedata +++|* THE NON-CURRENT BRACKET IF NOT ALREADY BRACKETED. 00755 M01S00717.fsedata +++|* 00756 M01S00718.fsedata +++|* ENTRY FILPTR1 - FDLF POINTER OR ZERO. 00757 M01S00719.fsedata +++|* FDLF(1-2) - SETUP. 00758 M01S00720.fsedata +++|* CURFILE - CURRENT (NON-PREFERRED) BRACKET. 00759 M01S00721.fsedata +++|* 00760 M01S00722.fsedata +++|* EXIT FILPTR1 - CONVERTED TO BRACKET ORDINAL. 00761 M01S00723.fsedata +++|* 00762 M01S00724.fsedata +++|* CALLS PUSH, POSZ, SCANFDL, FORCEFILE, POP. 00763 M01S00725.fsedata +++|* 00764 M01S00726.fsedata +++|* USES READNAM, FILNUM. 00765 M01S00727.fsedata +++|# 00766 M01S00728.fsedata +++| IF FILPTR1 EQ 0 THEN IORET 00767 M01S00729.fsedata +++| ELSE IF FILPTR1 EQ FDLF(1) AND FILPTR1 EQ FDLF(2) 00768 M01S00730.fsedata +++| THEN FILPTR1=CURFILE; 00769 M01S00731.fsedata +++| ELSE IF FILPTR1 EQ FDLF(1) THEN FILPTR1=1; 00770 M01S00732.fsedata +++| ELSE IF FILPTR1 EQ FDLF(2) THEN FILPTR1=2; 00771 M01S00733.fsedata +++| ELSE 00772 M01S00734.fsedata +++| BEGIN 00773 M01S00735.fsedata +++| PUSH; 00774 M01S00736.fsedata +++| POSZ(FILPTR1); 00775 M01S00737.fsedata +++| SCANFDL(READNAM); 00776 M01S00738.fsedata +++| FORCEFILE; 00777 M01S00739.fsedata +++| FILPTR1=FILNUM; 00778 M01S00740.fsedata +++| POP; 00779 M01S00741.fsedata +++| END 00780 M01S00742.fsedata +++| IOEND # OF CHECKFILPTR # 00781 M01S00743.fsedata +++| 00782 M01S00744.fsedata +++| 00783 M01S00745.fsedata +++|PROC EXTENDFILE(BOOL); 00784 M01S00746.fsedata +++| BEGIN 00785 M01S00747.fsedata +++|# 00786 M01S00748.fsedata +++|* EXTENDFILE - EXTEND FILE FOR INSERT/COPY/MOVE. 00787 M01S00749.fsedata +++|* 00788 M01S00750.fsedata +++|* ENTRY EXTENDSIZE - HOW MUCH CURSOR BEYOND END OF FILE. 00789 M01S00751.fsedata +++|* PROCESSNDX - WHETHER/WHICH INSERT/COPY/MOVE. 00790 M01S00752.fsedata +++|* BOTF(FILNUM), FILNUM - END OF FILE. 00791 M01S00753.fsedata +++|* LINPTR1, LINPTR2 - RANGE BOUNDARIES. 00792 M01S00754.fsedata +++|* BOOL - WHETHER LINPTR1, LINPTR2 SHOULD RELOCATE. 00793 M01S00755.fsedata +++|* 00794 M01S00756.fsedata +++|* EXIT EXTENDSIZE - ZERO IF FILE EXTENDED. 00795 M01S00757.fsedata +++|* THISEXTEND - FORMER VALUE OF EXTENDSIZE. 00796 M01S00758.fsedata +++|* LINPTR1, LINPTR2, BOTF(FILNUM) - RELOCATED. 00797 M01S00759.fsedata +++|* 00798 M01S00760.fsedata +++|* CALLS INSX, POSZ. 00799 M01S00761.fsedata +++|* 00800 M01S00762.fsedata +++|* USES CURFILE(RESTORED). 00801 M01S00763.fsedata +++|* 00802 M01S00764.fsedata +++|* NOTE EXTENDFILE IS OPERATIVE ONLY IN SINGLE USER VERSION. 00803 M01S00765.fsedata +++|* FOR MULTI, SCANNER MUST ASSURE THIS IS NO-OP. 00804 M01S00766.fsedata +++|# 00805 M01S00767.fsedata +++| ITEM BOOL B; 00806 M01S00768.fsedata +++| CONTROL IFEQ SINGLE,1; 00807 M01S00769.fsedata +++| IF EXTENDSIZE GR 0 THEN 00808 M01S00770.fsedata +++| BEGIN 00809 M01S00771.fsedata +++| IF PROCESSNDX EQ KEYST"CCMD" OR PROCESSNDX EQ KEYST"ICMD" 00810 M01S00772.fsedata +++| OR PROCESSNDX EQ KEYST"MCMD" THEN 00811 M01S00773.fsedata +++| BEGIN # EXTEND FILE TO TARGET # 00812 M01S00774.fsedata +++| CURFILE = = FILNUM; # PRESERVE AND FLIPFLOP # 00813 M01S00775.fsedata +++| POSZ(BOTF(CURFILE)-1); 00814 M01S00776.fsedata +++| LINE[0]=NULLIN; 00815 M01S00777.fsedata +++| FOR LINCTR=1 STEP 1 UNTIL EXTENDSIZE DO 00816 M01S00778.fsedata +++| BEGIN # EXTEND FILE TO TARGET ADDR # 00817 M01S00779.fsedata +++| # MANUALLY RELOCATE LINPTR1, LINPTR2 AS NEEDED # 00818 M01S00780.fsedata +++| IF BOOL THEN 00819 M01S00781.fsedata +++| BEGIN 00820 M01S00782.fsedata +++| IF CURRENT LS LINPTR1 THEN LINPTR1=LINPTR1+1; 00821 M01S00783.fsedata +++| IF CURRENT LS LINPTR2 THEN LINPTR2=LINPTR2+1; 00822 M01S00784.fsedata +++| END 00823 M01S00785.fsedata +++| INSX; # EXTEND FILE # 00824 M01S00786.fsedata +++| END 00825 M01S00787.fsedata +++| CURF(CURFILE)=CURRENT; 00826 M01S00788.fsedata +++| THISEXTEND=EXTENDSIZE; 00827 M01S00789.fsedata +++| EXTENDSIZE=0; 00828 M01S00790.fsedata +++| CURFILE = = FILNUM; 00829 M01S00791.fsedata +++| END 00830 M01S00792.fsedata +++| END 00831 M01S00793.fsedata +++| CONTROL FI; 00832 M01S00794.fsedata +++| END # OF EXTENDFILE # 00833 M01S00795.fsedata +++|PAGE # TOKEN -- SCANS COMMAND SYNTAX # 00834 M01S00796.fsedata +++| 00835 M01S00797.fsedata +++|PROC TOKEN; 00836 M01S00798.fsedata +++| BEGIN 00837 M01S00799.fsedata +++|# 00838 M01S00800.fsedata +++|** TOKEN - LOOK FOR NEXT SYNTAX ELEMENT. 00839 M01S00801.fsedata +++|* 00840 M01S00802.fsedata +++|* TOKEN SCANS THE COMMAND TEXT FROM SOME CURRENT POSITION 00841 M01S00803.fsedata +++|* UNTIL SOMETHING IS SEEN. WE EAT BLANKS, AND MUST 00842 M01S00804.fsedata +++|* EVENTUALLY REACH SOME DELIMITER OR A CONSTANT (INTEGER) OR 00843 M01S00805.fsedata +++|* A KEYWORD. IF IT IS A CONSTANT, WE DECODE ITS WHOLE VALUE 00844 M01S00806.fsedata +++|* AND LEAVE THE CURRENT POSITION JUST AFTER THE LAST DIGIT. 00845 M01S00807.fsedata +++|* IF IT IS A KEYWORD, WE GATHER UP ITS WHOLE TEXT, LEAVE THE 00846 M01S00808.fsedata +++|* CURRENT POSITION JUST AFTER THE LAST LETTER, AND SEARCH 00847 M01S00809.fsedata +++|* THE COMMAND TABLES FOR A MATCH, SETTING VARIOUS VARIABLES 00848 M01S00810.fsedata +++|* TO SHOW THE RESULT OF THE MATCH. 00849 M01S00811.fsedata +++|* 00850 M01S00812.fsedata +++|* WE ARE CALLED BY THE OUTER LOGIC OF PROCESS TO GLEAN OUT 00851 M01S00813.fsedata +++|* COMMAND KEYWORDS. WE ARE CALLED BY ALL SORTS OF PEOPLE, 00852 M01S00814.fsedata +++|* INCLUDING A VARIETY OF COMMAND PROCESSING ROUTINES, TO 00853 M01S00815.fsedata +++|* ADVANCE THE SYNTAX SCAN TO COMPLETE THE COMMAND. 00854 M01S00816.fsedata +++|* 00855 M01S00817.fsedata +++|* ENTRY SCANPOS - WHERE TO SCAN IN CMDLIN. 00856 M01S00818.fsedata +++|* CMDLIN - COMMAND TEXT, INTERNAL LINE IMAGE. 00857 M01S00819.fsedata +++|* SEARCHTYPE - WHICH IF ANY KEYWORD TABLE TO MATCH. 00858 M01S00820.fsedata +++|* 00859 M01S00821.fsedata +++|* EXIT TOKENPOS - WHERE WE FOUND SOMETHING. 00860 M01S00822.fsedata +++|* TOKENTYPE - CLASSIFICATION OF TOKEN. 00861 M01S00823.fsedata +++|* TOKENVAL - BINARY VALUE IF NUMERIC. 00862 M01S00824.fsedata +++|* TOKENSYM - KEYWORD IF ALPHA. 00863 M01S00825.fsedata +++|* TOKENCHAR - FIRST OR ONLY CHARACTER OF TOKEN. 00864 M01S00826.fsedata +++|* TOKENLEN - NUMBER OF CHARACTERS IN TOKEN. 00865 M01S00827.fsedata +++|* KEYWDNDX - WHICH KEYWORD MATCHED IT. 00866 M01S00828.fsedata +++|* SCANPOS - INCREMENTED BEYOND TOKEN. 00867 M01S00829.fsedata +++|* CMDLIN - ANY MICROS ARE EXPANDED. 00868 M01S00830.fsedata +++|* 00869 M01S00831.fsedata +++|* MACROS GETCHAR. 00870 M01S00832.fsedata +++|* 00871 M01S00833.fsedata +++|* CALLS LENGTH, EXPAND, DSPLCOD. 00872 M01S00834.fsedata +++|# 00873 M01S00835.fsedata +++| ITEM TMP1, TMP2, TMP3; 00874 M01S00836.fsedata +++| ITEM QUIT B; 00875 M01S00837.fsedata +++| ITEM CMDLEN; 00876 M01S00838.fsedata +++| 00877 M01S00839.fsedata +++| # TOKENSW MUST MATCH TYPST # 00878 M01S00840.fsedata +++| 00879 M01S00841.fsedata +++| SWITCH TOKENSW TKDIGIT, TKPLUS, TKMINUS, TKDELIMIT, 00880 M01S00842.fsedata +++| TKCOLON, TKPAREN, 00881 M01S00843.fsedata +++| TKEQUAL, TKLETTER, TKSEMI, TKEOL, TKOTHER, TKCONTROL; 00882 M01S00844.fsedata +++| 00883 M01S00845.fsedata +++| # ALPHANUM MUST MATCH KEYWDTYPE VALUES # 00884 M01S00846.fsedata +++| 00885 M01S00847.fsedata +++| ITEM ALPHANUM=O"42000000000000000000"; # WHICH TYPES ALLOW DIGITS # 00886 M01S00848.fsedata +++| PAGE # START OF TOKEN # 00887 M01S00849.fsedata +++| 00888 M01S00850.fsedata +++| 00889 M01S00851.fsedata +++|TOKENSTART: # FIRST EAT ANY BLANKS # 00890 M01S00852.fsedata +++| 00891 M01S00853.fsedata +++| CMDLEN=LENGTH(CMDLIN); 00892 M01S00854.fsedata +++| GETCHAR(CMDLINE,SCANPOS,TMP1); 00893 M01S00855.fsedata +++| WHYLE TMP1 EQ CBLANK DO 00894 M01S00856.fsedata +++| BEGIN 00895 M01S00857.fsedata +++| SCANPOS=SCANPOS+1; 00896 M01S00858.fsedata +++| GETCHAR(CMDLINE,SCANPOS,TMP1); 00897 M01S00859.fsedata +++| END 00898 M01S00860.fsedata +++| # EAT ONE COMMA # 00899 M01S00861.fsedata +++| IF TMP1 EQ CCOMMA THEN SCANPOS=SCANPOS+1; 00900 M01S00862.fsedata +++| GETCHAR(CMDLINE,SCANPOS,TMP1); 00901 M01S00863.fsedata +++| WHYLE TMP1 EQ CBLANK DO # EAT ADDITIONAL BLANKS # 00902 M01S00864.fsedata +++| BEGIN 00903 M01S00865.fsedata +++| SCANPOS=SCANPOS+1; 00904 M01S00866.fsedata +++| GETCHAR(CMDLINE,SCANPOS,TMP1); 00905 M01S00867.fsedata +++| END 00906 M01S00868.fsedata +++| 00907 M01S00869.fsedata +++| # SET UP TOKEN DESCRIPTORS # 00908 M01S00870.fsedata +++| # DISPATCH FOR TOKEN # 00909 M01S00871.fsedata +++| TOKENPOS=SCANPOS; 00910 M01S00872.fsedata +++| TOKENCHAR=TMP1; 00911 M01S00873.fsedata +++| IF SCANPOS GQ CMDLEN OR TMP1 EQ CCOMMA THEN TOKENCHAR=CENDLINE; 00912 M01S00874.fsedata +++| TOKENTYPE=TYPE[TOKENCHAR]; 00913 M01S00875.fsedata +++| SCANPOS=SCANPOS+1; 00914 M01S00876.fsedata +++| GOTO TOKENSW[TOKENTYPE]; 00915 M01S00877.fsedata +++| 00916 M01S00878.fsedata +++| # END-OF-LINE AND NULL CASES # 00917 M01S00879.fsedata +++|TKEOL: TKEQUAL: TKPLUS: TKSEMI: 00918 M01S00880.fsedata +++|TKCOLON: TKDELIMIT: TKPAREN: 00919 M01S00881.fsedata +++|TKOTHER: TKCONTROL: 00920 M01S00882.fsedata +++| RETURN; 00921 M01S00883.fsedata +++| 00922 M01S00884.fsedata +++| 00923 M01S00885.fsedata +++|TKMINUS: # HYPHEN IS SELF IF ALONE, COMMENT IF DOUBLE # 00924 M01S00886.fsedata +++| GETCHAR(CMDLINE,TOKENPOS+1,TMP1); 00925 M01S00887.fsedata +++| IF TMP1 EQ CMINUS THEN 00926 M01S00888.fsedata +++| BEGIN 00927 M01S00889.fsedata +++| TOKENTYPE=TYPST"EOL"; 00928 M01S00890.fsedata +++| TOKENCHAR=CENDLINE; 00929 M01S00891.fsedata +++| TOKENPOS=LENGTH(CMDLIN); 00930 M01S00892.fsedata +++| SCANPOS=TOKENPOS; 00931 M01S00893.fsedata +++| END 00932 M01S00894.fsedata +++| RETURN; 00933 M01S00895.fsedata +++| 00934 M01S00896.fsedata +++| 00935 M01S00897.fsedata +++| 00936 M01S00898.fsedata +++| # NUMERIC CONSTANT # 00937 M01S00899.fsedata +++|TKDIGIT: 00938 M01S00900.fsedata +++| IF B<KEYWDTYPE,1>ALPHANUM NQ 0 THEN GOTO TKLETTER; 00939 M01S00901.fsedata +++| TOKENVAL=TOKENCHAR-CDIGIT0; 00940 M01S00902.fsedata +++| QUIT=FALSE; 00941 M01S00903.fsedata +++| WHYLE NOT QUIT DO 00942 M01S00904.fsedata +++| BEGIN 00943 M01S00905.fsedata +++| GETCHAR(CMDLINE,SCANPOS,TMP1); 00944 M01S00906.fsedata +++| IF TYPE[TMP1] EQ TYPST"DIGIT" AND SCANPOS-TOKENPOS LQ 10 THEN 00945 M01S00907.fsedata +++| BEGIN 00946 M01S00908.fsedata +++| TOKENVAL=TOKENVAL*10+TMP1-CDIGIT0; 00947 M01S00909.fsedata +++| SCANPOS=SCANPOS+1; 00948 M01S00910.fsedata +++| END 00949 M01S00911.fsedata +++| ELSE QUIT=TRUE; 00950 M01S00912.fsedata +++| END 00951 M01S00913.fsedata +++| RETURN; 00952 M01S00914.fsedata +++| # ALPHABETIC KEYWORD # 00953 M01S00915.fsedata +++|TKLETTER: 00954 M01S00916.fsedata +++| # GATHER UP KEYWORD, SUPPRESS CASE AND USE REGULAR CHAR # 00955 M01S00917.fsedata +++| TMP1=TOKENCHAR; 00956 M01S00918.fsedata +++| TOKENLEN=0; 00957 M01S00919.fsedata +++| QUIT=FALSE; 00958 M01S00920.fsedata +++| WHYLE NOT QUIT DO 00959 M01S00921.fsedata +++| BEGIN 00960 M01S00922.fsedata +++| DSPLCOD(TMP1); 00961 M01S00923.fsedata +++| IF TOKENLEN LS 10 THEN 00962 M01S00924.fsedata +++| BEGIN 00963 M01S00925.fsedata +++| C<TOKENLEN,10-TOKENLEN>TOKENSYM=C<9,1>TMP1; 00964 M01S00926.fsedata +++| TOKENLEN=TOKENLEN+1; 00965 M01S00927.fsedata +++| END 00966 M01S00928.fsedata +++| GETCHAR(CMDLINE,SCANPOS,TMP1); 00967 M01S00929.fsedata +++| IF TYPE[TMP1] NQ TYPST"LETTER" THEN 00968 M01S00930.fsedata +++| BEGIN 00969 M01S00931.fsedata +++| IF TYPE[TMP1] NQ TYPST"DIGIT" OR 00970 M01S00932.fsedata +++| B<KEYWDTYPE,1>ALPHANUM EQ 0 THEN 00971 M01S00933.fsedata +++| BEGIN 00972 M01S00934.fsedata +++| QUIT=TRUE; 00973 M01S00935.fsedata +++| TEST; 00974 M01S00936.fsedata +++| END 00975 M01S00937.fsedata +++| END 00976 M01S00938.fsedata +++| SCANPOS=SCANPOS+1; 00977 M01S00939.fsedata +++| END 00978 M01S00940.fsedata +++| 00979 M01S00941.fsedata +++| # KEYWORD SEARCH # 00980 M01S00942.fsedata +++| 00981 M01S00943.fsedata +++| KEYWDNDX=-1; 00982 M01S00944.fsedata +++| IF KEYWDTYPE EQ 0 THEN RETURN; 00983 M01S00945.fsedata +++| 00984 M01S00946.fsedata +++| MATCHKEY(TMP3); 00985 M01S00947.fsedata +++| 00986 M01S00948.fsedata +++| IF KEYWDNDX LS 0 THEN RETURN; 00987 M01S00949.fsedata +++| TMP3=MIN(TMP3,TOKENLEN); 00988 M01S00950.fsedata +++| SCANPOS=TOKENPOS+TMP3; 00989 M01S00951.fsedata +++| TOKENLEN=TMP3; 00990 M01S00952.fsedata +++| 00991 M01S00953.fsedata +++| END # OF TOKEN # 00992 M01S00954.fsedata +++|PAGE # SCANNER - UNIVERSAL SYNTAX DRIVER # 00993 M01S00955.fsedata +++| 00994 M01S00956.fsedata +++| 00995 M01S00957.fsedata +++|PROC SCANNER; 00996 M01S00958.fsedata +++| IOBEGIN(SCANNER) 00997 M01S00959.fsedata +++|# 00998 M01S00960.fsedata +++|** SCANNER - MASTER COMMAND SYNTAX SCANNER/DEFAULTER. 00999 M01S00961.fsedata +++|* 01000 M01S00962.fsedata +++|* SCANNER DRIVES ALL SYNTAX SCANNING FOR THOSE COMMANDS 01001 M01S00963.fsedata +++|* WHICH HAVE FAIRLY STANDARD SYNTACTICAL RULES AND SEMANTIC 01002 M01S00964.fsedata +++|* ELEMENTS. THIS CATEGORY OF COMMANDS INCLUDES ALL WHICH 01003 M01S00965.fsedata +++|* USE RANGES, LINES, POSITIONS, LIMITS, AND TABS. OTHER 01004 M01S00966.fsedata +++|* SYNTAXES SUPPORTED BY SCANNER INCLUDE "FORWARD" AND 01005 M01S00967.fsedata +++|* "BACKWARD" KEYWORD, I.E., DIRECTION/DEFAULT-RANGE, AND 01006 M01S00968.fsedata +++|* CHARACTER STRINGS. ON THE OTHER HAND, SCANNER IS NOT 01007 M01S00969.fsedata +++|* DESIGNED TO SUPPORT PARSING OF COMMANDS SUCH AS "SET" 01008 M01S00970.fsedata +++|* WHICH REQUIRE SPECIAL KEYWORDS, ARBITRARY SYMBOL NAMES, OR 01009 M01S00971.fsedata +++|* INTEGER PARAMETERS. 01010 M01S00972.fsedata +++|* 01011 M01S00973.fsedata +++|* SCANNER OPERATES AS A LOOP UNTIL END OF COMMAND LINE OR 01012 M01S00974.fsedata +++|* END OF COMMAND DELIMITER (SEMICOLON), BRANCHING OUT ON A 01013 M01S00975.fsedata +++|* CASE STATEMENT FOR EACH TOKEN ENCOUNTERED. VARIOUS SCAN 01014 M01S00976.fsedata +++|* SUBROUTINES ARE USED HEAVILY. 01015 M01S00977.fsedata +++|* 01016 M01S00978.fsedata +++|* ENTRY COMMAND VERB SCANNED, TOKEN ADVANCED. 01017 M01S00979.fsedata +++|* TOKENPOS - SETUP. 01018 M01S00980.fsedata +++|* THE FOLLOWING MUST BE DEFAULTED BY CALLER - 01019 M01S00981.fsedata +++|* NONDEFAULT, TXTINCMD, BACKWARD, FORWARD, 01020 M01S00982.fsedata +++|* FOUND, CURRENT, CURFILE, CURSPLIT. 01021 M01S00983.fsedata +++|* LIMIT - DEFAULT LIMIT COUNT. USUALLY -1 TO SHOW 01022 M01S00984.fsedata +++|* THAT NORMAL DEFAULTS CAN APPLY. CAN ALSO BE 01023 M01S00985.fsedata +++|* -2 TO SHOW NO DEFAULTS TO BE SUPPLIED. 01024 M01S00986.fsedata +++|* WHICHLIN - WHICH LINE POINTER VARIABLE EXPECTED. 01025 M01S00987.fsedata +++|* WHICHSTR - WHICH STRING VARIABLE EXPECTED. 01026 M01S00988.fsedata +++|* CURCURSOR, OLDCURSOR - RESIDUAL CURSOR POSITIONS. 01027 M01S00989.fsedata +++|* OLDLINPTR - RESIDUAL LINE POINTER. 01028 M01S00990.fsedata +++|* EXECNDX - WHICH COMMAND WE ARE PROCESSING. 01029 M01S00991.fsedata +++|* NUMMARKS - HOW MANY MARKS ARE AVAILABLE. 01030 M01S00992.fsedata +++|* SCREENMODE - WHETHER SCREEN OR LINE. 01031 M01S00993.fsedata +++|* TOPF(), TOPS(), BOTS(), ASCII[] - SETUP. 01032 M01S00994.fsedata +++|* BOTF(), FDLF() - SETUP. 01033 M01S00995.fsedata +++|* 01034 M01S00996.fsedata +++|* EXIT LINPTR1,2,3 - SOURCE AND TARGET ADDRESSES. 01035 M01S00997.fsedata +++|* FILPTR1,2,3 - SOURCE AND TARGET FILE BRACKETS. 01036 M01S00998.fsedata +++|* CHRPTR1,2,3 - SOURCE AND TARGET CURSORS. 01037 M01S00999.fsedata +++|* LINNUM1,2,3 - SOURCE AND TARGET SEQUENCES. 01038 M01S01000.fsedata +++|* LIMIT - REPEAT COUNT. UNCHANGED IF NO EXPLICIT SYNTAX 01039 M01S01001.fsedata +++|* AND DEFAULT WAS -2. 01040 M01S01002.fsedata +++|* SCANBLOCK, SCANWORD, SCANUPPER - SPECIAL OPTIONS. 01041 M01S01003.fsedata +++|* SCANHOME - SPECIAL OPTION. 01042 M01S01004.fsedata +++|* NONDEFAULT - TRUE IF SOMETHING SCANNED. 01043 M01S01005.fsedata +++|* SCANPOS - ADVANCED BEYOND LAST RECOGNIZABLE SYNTAX. 01044 M01S01006.fsedata +++|* BACKWARD, FORWARD - POSSIBLY SET. 01045 M01S01007.fsedata +++|* CHARRANGE - CHARACTER/LINE RANGE BOUNDS. 01046 M01S01008.fsedata +++|* TXTINCMD - POSSIBLY TRUE. 01047 M01S01009.fsedata +++|* FOUND - WHETHER SOURCE/TARGET IN BOUNDS. 01048 M01S01010.fsedata +++|* FDLF(1-2) - DIFFERENT FILES MAY BE OPEN. 01049 M01S01011.fsedata +++|* CURFILE - FILE TO PROCESS FOR SOURCE RANGE. 01050 M01S01012.fsedata +++|* PROMPTING - POSSIBLY SET. 01051 M01S01013.fsedata +++|* LOCSTRING1, LOCSTRING2, CHGSTRING, TTYLIN - POSSIBLY 01052 M01S01014.fsedata +++|* FILLED WITH CHARACTER STRINGS IN INTERNAL FORMAT. 01053 M01S01015.fsedata +++|* TABVECTOR - POSSIBLY REDEFINED. 01054 M01S01016.fsedata +++|* FIELDNDX, FIELDFLG, FIELDTARGET - POSSIBLY SET. 01055 M01S01017.fsedata +++|* NUMMARKS - POSSIBLY CLEARED. 01056 M01S01018.fsedata +++|* EXECNDX - CERTAIN CHANGES POSSIBLE. 01057 M01S01019.fsedata +++|* 01058 M01S01020.fsedata +++|* USES ALL TOKENXXXX VARIABLES, WHICHLIN, WHICHDGT, WHICHSTR, 01059 M01S01021.fsedata +++|* FILNUM, FORCEFIELD, READNAM, FOUNDOTHER. 01060 M01S01022.fsedata +++|* 01061 M01S01023.fsedata +++|* CALLS TOKEN, SCNTAB, MAX, SCNLIN, ERRJUMP, SCANSTR, 01062 M01S01024.fsedata +++|* SCNFILE, FORCEFILE, GETMARK, PAINTMARKS, SCNEOC, 01063 M01S01025.fsedata +++|* CHECKFILPTR, REL2ABS, WINDOPOS, WINDOLIN, SQUELCH. 01064 M01S01026.fsedata +++|# 01065 M01S01027.fsedata +++| 01066 M01S01028.fsedata +++| XREF LABEL QQSINGLE; 01067 M01S01029.fsedata +++| 01068 M01S01030.fsedata +++| # SCANSW MUST MATCH TYPST # 01069 M01S01031.fsedata +++| 01070 M01S01032.fsedata +++| SWITCH SCANSW SCDIGIT, SCPLUS, SCMINUS, SCDELIMIT, 01071 M01S01033.fsedata +++| SCCOLON, 01072 M01S01034.fsedata +++| SCPAREN, SCEQUAL, SCALPHA, 01073 M01S01035.fsedata +++| SCSEMI, SCEOL, SCOTHER, SCCTRL; 01074 M01S01036.fsedata +++| 01075 M01S01037.fsedata +++| # KEYMATCH ARRAY MUST MATCH SECTION OF KEYSTR TABLE # 01076 M01S01038.fsedata +++| # MUST ALSO MATCH SCANKEYSW. # 01077 M01S01039.fsedata +++| 01078 M01S01040.fsedata +++| DEF NUMSCANKEYS #20#; 01079 M01S01041.fsedata +++| 01080 M01S01042.fsedata +++| ARRAY MATCHKEYS [0:NUMSCANKEYS]; ITEM KEYMATCH C(0,0,10) = [ 01081 M01S01043.fsedata +++| "ALL", "BLANK", "CURRENT", "END", "FIRST", "HOME", 01082 M01S01044.fsedata +++| "IN", "LAST", "MARK", "NEXT", "PREVIOUS", "QUIET", 01083 M01S01045.fsedata +++| "REPEAT", "SCREEN", "TO", "UPPER", "WORD", "X", "Y", "Z" ]; 01084 M01S01046.fsedata +++| 01085 M01S01047.fsedata +++| SWITCH SCANKEYSW SKALL, SKBLOCK, SKCURRENT, SKEND, SKFIRST, 01086 M01S01048.fsedata +++| SKHOME, SKIN, SKLAST, SKMARK, SKNEXT, SKPREVIOUS, SKQUIET, 01087 M01S01049.fsedata +++| SKREPEAT, SKSCREEN, SKTO, SKUPPER, SKWORD, SKX, SKY, SKZ; 01088 M01S01050.fsedata +++| 01089 M01S01051.fsedata +++| # FOLLOWING TEMPORARIES MUST BE USED ONLY INSTANTANEOUSLY # 01090 M01S01052.fsedata +++| ITEM TMP1, TMP2, BOOL B; 01091 M01S01053.fsedata +++| 01092 M01S01054.fsedata +++| 01093 M01S01055.fsedata +++| PROC GETMARK(WHICH,LINPARM,FILPARM,CHRPARM); 01094 M01S01056.fsedata +++| BEGIN 01095 M01S01057.fsedata +++|# 01096 M01S01058.fsedata +++|** GETMARK - GET DATA FOR A MARKER. 01097 M01S01059.fsedata +++|* 01098 M01S01060.fsedata +++|* ENTRY WHICH - WHICH MARKER, 1 OR 2. 01099 M01S01061.fsedata +++|* 01100 M01S01062.fsedata +++|* EXIT LINPARM, FILPARM, CHRPARM - MARKER VALUES. 01101 M01S01063.fsedata +++|* CHARRANGE - FORCED TRUE AS NEEDED. 01102 M01S01064.fsedata +++|# 01103 M01S01065.fsedata +++| ITEM WHICH, LINPARM, FILPARM, CHRPARM; 01104 M01S01066.fsedata +++| LINPARM=REGLINE[MARKREG-1+WHICH]-REGLINE[MARKTOP-1+WHICH]; 01105 M01S01067.fsedata +++| FILPARM=MRKFILE[WHICH-1]; 01106 M01S01068.fsedata +++| CHRPARM=MRKCHAR[WHICH-1]; 01107 M01S01069.fsedata +++| IF CHRPARM GQ 0 THEN CHARRANGE=TRUE; 01108 M01S01070.fsedata +++| END # OF GETMARK # 01109 M01S01071.fsedata +++|PAGE # SCANNER - MAIN CODE # 01110 M01S01072.fsedata +++| 01111 M01S01073.fsedata +++| CHRPTR1=-1; 01112 M01S01074.fsedata +++| CHRPTR2=-1; 01113 M01S01075.fsedata +++| CHRPTR3=-1; 01114 M01S01076.fsedata +++| LINPTR1=-1; 01115 M01S01077.fsedata +++| LINPTR2=-1; 01116 M01S01078.fsedata +++| LINPTR3=-1; 01117 M01S01079.fsedata +++| FILPTR1=0; 01118 M01S01080.fsedata +++| FILPTR2=0; 01119 M01S01081.fsedata +++| FILPTR3=0; 01120 M01S01082.fsedata +++| LINNUM1=-1; 01121 M01S01083.fsedata +++| LINNUM2=-1; 01122 M01S01084.fsedata +++| LINNUM3=-1; 01123 M01S01085.fsedata +++| SCANBLOCK=FALSE; 01124 M01S01086.fsedata +++| SCANWORD=FALSE; 01125 M01S01087.fsedata +++| SCANUPPER=FALSE; 01126 M01S01088.fsedata +++| SCANHOME=FALSE; 01127 M01S00001.@000050 +++| SCANMARK = FALSE; 01128 M01S00001.@000046 +++| SCANSFILE = FALSE; 01129 M01S00002.@000046 +++| SCANTO = FALSE; 01130 M01S00003.@000046 +++| SCNLINX = FALSE; 01131 M01S00004.@000046 +++| SCNLINY = FALSE; 01132 M01S00005.@000046 +++| SCNLINZ = FALSE; 01133 M01S00006.@000046 +++| SCNONCE = FALSE; 01134 M01S00001.@000026 +++| SCHSTRSPEC=FALSE; 01135 M01S01089.fsedata +++| WHICHDGT=WHICHLIN; 01136 M01S01090.fsedata +++| KEYWDTYPE=2; 01137 M01S01091.fsedata +++| SCANPOS=TOKENPOS; 01138 M01S01092.fsedata +++| FORCEFIELD=FALSE; 01139 M01S01093.fsedata +++| FIELDTARGET=0; 01140 M01S01094.fsedata +++| 01141 M01S01095.fsedata +++| # FILE EXTENSION IS ONLY ALLOWED IN SINGLE USER VERSION # 01142 M01S01096.fsedata +++| # FOR THREE SPECIFIC COMMAND TYPES # 01143 M01S01097.fsedata +++| 01144 M01S01098.fsedata +++| IF EXTENDSIZE NQ 0 THEN 01145 M01S01099.fsedata +++| BEGIN 01146 M01S01100.fsedata +++| IF OKEXTEND[PROCESSNDX] THEN 01147 M01S01101.fsedata +++| BEGIN 01148 M01S01102.fsedata +++| CONTROL IFEQ MULTI,1; 01149 M01S01103.fsedata +++| GOTO QQSINGLE; 01150 M01S01104.fsedata +++| CONTROL FI; 01151 M01S01105.fsedata +++| END 01152 M01S01106.fsedata +++| ELSE 01153 M01S01107.fsedata +++| BEGIN 01154 M01S01108.fsedata +++| EXTENDSIZE=0; 01155 M01S01109.fsedata +++| END 01156 M01S01110.fsedata +++| END 01157 M01S01111.fsedata +++|PAGE # MAIN SCANNER LOOP STARTS HERE # 01158 M01S01112.fsedata +++| 01159 M01S01113.fsedata +++| 01160 M01S01114.fsedata +++|SCANTOKEN: 01161 M01S01115.fsedata +++| TOKEN; 01162 M01S01116.fsedata +++|SCANLOOP: 01163 M01S01117.fsedata +++| GOTO SCANSW[TOKENTYPE]; 01164 M01S01118.fsedata +++| 01165 M01S01119.fsedata +++| 01166 M01S01120.fsedata +++|SCDIGIT:
Line S01121 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000073 |
Seq # *Modification Id* Act ----------------------------+ 01167 M02S01121.@000073 ---| IF WHICHDGT EQ DIGITST"TAB" THEN SCNTAB;
Line S01122 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000073 |
Seq # *Modification Id* Act ----------------------------+ 01168 M02S01122.@000073 ---| ELSE IF WHICHDGT EQ DIGITST"LIMIT" THEN 01169 M01S00001.@000073 +++| IF WHICHDGT EQ DIGITST"LIMIT" THEN 01170 M01S01123.fsedata +++| BEGIN 01171 M01S01124.fsedata +++| LIMIT=MAX(TOKENVAL,1); 01172 M01S01125.fsedata +++| NONDEFAULT=TRUE; 01173 M01S01126.fsedata +++| TOKEN; 01174 M01S01127.fsedata +++| WHICHDGT=WHICHLIN; 01175 M01S01128.fsedata +++| END 01176 M01S01129.fsedata +++| ELSE SCNLIN; 01177 M01S01130.fsedata +++| GOTO SCANLOOP; 01178 M01S01131.fsedata +++| 01179 M01S01132.fsedata +++|SCPLUS: SCMINUS: 01180 M01S01133.fsedata +++| SCNLIN; 01181 M01S01134.fsedata +++| GOTO SCANLOOP; 01182 M01S01135.fsedata +++| 01183 M01S01136.fsedata +++|SCCOLON: 01184 M01S01137.fsedata +++| WHICHLIN=2; 01185 M01S01138.fsedata +++| WHICHDGT=2; 01186 M01S01139.fsedata +++| GOTO SCANTOKEN; 01187 M01S01140.fsedata +++| 01188 M01S01141.fsedata +++|SCPAREN: 01189 M01S01142.fsedata +++| SCNLIN; 01190 M01S01143.fsedata +++| GOTO SCANLOOP; 01191 M01S01144.fsedata +++| 01192 M01S01145.fsedata +++|SCDELIMIT: 01193 M01S01146.fsedata +++| IF WHICHSTR LQ 0 THEN ERRJUMP("STRING NOT ALLOWED$"); 01194 M01S01147.fsedata +++| IF NOT FORCEFIELD THEN 01195 M01S01148.fsedata +++| BEGIN 01196 M01S01149.fsedata +++| FIELDFLG=FALSE; FIELDNDX=0; 01197 M01S01150.fsedata +++| END 01198 M01S01151.fsedata +++| SCANSTR; 01199 M01S01152.fsedata +++| GOTO SCANLOOP; 01200 M01S01153.fsedata +++| 01201 M01S01154.fsedata +++| 01202 M01S01155.fsedata +++|SKALL: 01203 M01S01156.fsedata +++| IF WHICHDGT EQ DIGITST"LIMIT" THEN 01204 M01S01157.fsedata +++| BEGIN 01205 M01S01158.fsedata +++| LIMIT=LARGENUM; 01206 M01S01159.fsedata +++| TOKEN; 01207 M01S01160.fsedata +++| END 01208 M01S01161.fsedata +++| ELSE 01209 M01S01162.fsedata +++| BEGIN 01210 M01S01163.fsedata +++| IF LINPTR1 NQ -1 OR LINPTR2 NQ -1 THEN 01211 M01S01164.fsedata +++| BEGIN 01212 M01S01165.fsedata +++| ERRJUMP("ONLY ONE RANGE ALLOWED$"); 01213 M01S01166.fsedata +++| END 01214 M01S01167.fsedata +++| FILNUM=CURFILE; 01215 M01S01168.fsedata +++| TOKEN; 01216 M01S01169.fsedata +++| IF TOKENTYPE EQ TYPST"PAREN" THEN 01217 M01S01170.fsedata +++| BEGIN 01218 M01S01171.fsedata +++| SCNFILE(READNAM); 01219 M01S00007.@000046 +++| SCANSFILE = TRUE; # NOTE THAT WE HAVE SCANNED # 01220 M01S01172.fsedata +++| FORCEFILE; 01221 M01S01173.fsedata +++| END 01222 M01S01174.fsedata +++| LINPTR1=1; 01223 M01S01175.fsedata +++| LINPTR2=BOTF(FILNUM)-1-TOPF(FILNUM); 01224 M01S01176.fsedata +++| FILPTR1=FDLF(FILNUM); 01225 M01S01177.fsedata +++| WHICHLIN=3; 01226 M01S01178.fsedata +++| WHICHDGT=WHICHLIN; 01227 M01S01179.fsedata +++| NONDEFAULT=TRUE; 01228 M01S01180.fsedata +++| END 01229 M01S01181.fsedata +++| GOTO SCANLOOP; 01230 M01S01182.fsedata +++| 01231 M01S01183.fsedata +++|SKBLOCK: 01232 M01S01184.fsedata +++| SCANBLOCK=TRUE; 01233 M01S01185.fsedata +++| GOTO SCANTOKEN; 01234 M01S01186.fsedata +++| 01235 M01S01187.fsedata +++|SKEND: 01236 M01S01188.fsedata +++| IF OKEND[PROCESSNDX] THEN EXECNDX=EXECST"APPEND"; 01237 M01S01189.fsedata +++| ELSE ERRJUMP("CHARACTER SEQUENCE NOT RECOGNIZED$"); 01238 M01S01190.fsedata +++| GOTO SCANTOKEN; 01239 M01S01191.fsedata +++| 01240 M01S01192.fsedata +++|SKHOME: 01241 M01S01193.fsedata +++| IF OKHOME[PROCESSNDX] THEN SCANHOME=TRUE; 01242 M01S01194.fsedata +++| ELSE ERRJUMP("CHARACTER SEQUENCE NOT RECOGNIZED$"); 01243 M01S01195.fsedata +++| GOTO SCANTOKEN; 01244 M01S01196.fsedata +++| 01245 M01S01197.fsedata +++|SKPREVIOUS:
Line S00001 Modification History | |
---|---|
M01 (Yanked) (Added by) | @000041 |
M02 (Yanked) (Updated by) | @000077 |
Seq # *Modification Id* Act ----------------------------+ 01246 M02S00001.@000077 ---| IF FORWARD OR BACKWARD THEN ERRJUMP("ONLY ONE RANGE ALLOWED$");
Line S01198 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000077 |
Seq # *Modification Id* Act ----------------------------+ 01247 M02S01198.@000077 ---| WHICHDGT=DIGITST"LIMIT";
Line S01199 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000077 |
Seq # *Modification Id* Act ----------------------------+ 01248 M02S01199.@000077 ---| NONDEFAULT=TRUE; 01249 M01S00001.@000077 +++| IF OKMOVE[PROCESSNDX] AND WHICHLIN GR 3 THEN 01250 M01S00002.@000077 +++| BEGIN 01251 M01S01200.fsedata +++| # NOTE "TO PREVIOUS" IS A SPECIAL CASE FOR COPY/MOVE WITH NO # 01252 M01S01201.fsedata +++| # ADDITIONAL SYNTAX ALLOWED, AND SEMANTICS DETERMINED BY # 01253 M01S01202.fsedata +++| # CHARACTER VERSUS LINE BOUNDARIES FOR SOURCE RANGE #
Line S01203 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000077 |
Seq # *Modification Id* Act ----------------------------+ 01254 M02S01203.@000077 ---| IF OKMOVE[PROCESSNDX] AND WHICHLIN GR 3 THEN
Line S01204 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000077 |
Seq # *Modification Id* Act ----------------------------+ 01255 M02S01204.@000077 ---| BEGIN 01256 M01S01205.fsedata +++| IF NOT CHARRANGE THEN 01257 M01S01206.fsedata +++| BEGIN 01258 M01S01207.fsedata +++| FILNUM=CURFILE; 01259 M01S01208.fsedata +++| EXTENDFILE(FALSE); 01260 M01S01209.fsedata +++| LINPTR3=CURRENT-TOPF(CURFILE)-1; 01261 M01S01210.fsedata +++| END 01262 M01S01211.fsedata +++| END 01263 M01S01212.fsedata +++| ELSE 01264 M01S01213.fsedata +++| BEGIN 01265 M01S00003.@000077 +++| IF FORWARD OR BACKWARD THEN ERRJUMP("ONLY ONE RANGE ALLOWED$"); 01266 M01S00004.@000077 +++| WHICHDGT=DIGITST"LIMIT"; 01267 M01S00005.@000077 +++| NONDEFAULT=TRUE; 01268 M01S01214.fsedata +++| IF LIMIT EQ -1 THEN LIMIT=1; 01269 M01S01215.fsedata +++| BACKWARD=TRUE; 01270 M01S01216.fsedata +++| FORWARD=FALSE; 01271 M01S01217.fsedata +++| END 01272 M01S01218.fsedata +++| GOTO SCANTOKEN; 01273 M01S01219.fsedata +++| 01274 M01S01220.fsedata +++|SKCURRENT: SKFIRST: SKLAST: SKX: SKY: SKZ: 01275 M01S01221.fsedata +++| # NOTE SCNLIN CAN ENABLE CHARRANGE FOR X,Y,Z # 01276 M01S01222.fsedata +++| SCNLIN; 01277 M01S01223.fsedata +++| GOTO SCANLOOP; 01278 M01S01224.fsedata +++| 01279 M01S01225.fsedata +++|SKMARK: 01280 M01S00002.@000050 +++| SCANMARK = TRUE; 01281 M01S00003.@000050 +++| IF CMDWASDLTE[0] THEN 01282 M01S00004.@000050 +++| BEGIN # IF COMMAND WAS "DELETE" # 01283 M01S00005.@000050 +++| KILLMARKS = TRUE; # KILL THE MARKS # 01284 M01S00006.@000050 +++| FORCEAUTOP[0] = FALSE; 01285 M01S00007.@000050 +++| FORCEAUTOR[0] = FALSE; 01286 M01S00008.@000050 +++| END 01287 M01S01226.fsedata +++| IF NUMMARKS NQ 0 THEN 01288 M01S01227.fsedata +++| BEGIN 01289 M01S01228.fsedata +++| # NOTE GETMARK ROUTINE CAN ENABLE CHARRANGE # 01290 M01S01229.fsedata +++| IF WHICHLIN EQ 3 THEN GETMARK(1,LINPTR3,FILPTR3,CHRPTR3); 01291 M01S01230.fsedata +++| ELSE 01292 M01S01231.fsedata +++| BEGIN 01293 M01S01232.fsedata +++| GETMARK(1,LINPTR1,FILPTR1,CHRPTR1); 01294 M01S01233.fsedata +++| GETMARK(2,LINPTR2,FILPTR2,CHRPTR2); 01295 M01S01234.fsedata +++| END 01296 M01S01235.fsedata +++| NONDEFAULT=TRUE; 01297 M01S00001.@000033 +++| NUMMARKS = 2; 01298 M01S01236.fsedata +++| END
Line S01237 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000033 |
Seq # *Modification Id* Act ----------------------------+ 01299 M02S01237.@000033 ---| KILLMARKS=TRUE; 01300 M01S01238.fsedata +++| WHICHLIN=3; 01301 M01S01239.fsedata +++| WHICHDGT=WHICHLIN; 01302 M01S00001.@000061 +++| IF NOT FORCEFIELD THEN 01303 M01S00002.@000061 +++| BEGIN # IF NO *IN* OPTION ON THIS COMMAND # 01304 M01S00003.@000061 +++| FIELDNDX = 0; # ELIMINATE TAB FIELD RESTRICTION # 01305 M01S00004.@000061 +++| FIELDFLG = FALSE; 01306 M01S00005.@000061 +++| END 01307 M01S01240.fsedata +++| GOTO SCANTOKEN; 01308 M01S01241.fsedata +++| 01309 M01S01242.fsedata +++|SKNEXT:
Line S00002 Modification History | |
---|---|
M01 (Yanked) (Added by) | @000041 |
M02 (Yanked) (Updated by) | @000077 |
Seq # *Modification Id* Act ----------------------------+ 01310 M02S00002.@000077 ---| IF FORWARD OR BACKWARD THEN ERRJUMP("ONLY ONE RANGE ALLOWED$");
Line S01243 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000077 |
Seq # *Modification Id* Act ----------------------------+ 01311 M02S01243.@000077 ---| WHICHDGT=DIGITST"LIMIT";
Line S01244 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000077 |
Seq # *Modification Id* Act ----------------------------+ 01312 M02S01244.@000077 ---| IF LIMIT EQ -1 THEN LIMIT=1;
Line S01245 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000077 |
Seq # *Modification Id* Act ----------------------------+ 01313 M02S01245.@000077 ---| FORWARD=TRUE;
Line S01246 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000077 |
Seq # *Modification Id* Act ----------------------------+ 01314 M02S01246.@000077 ---| BACKWARD=FALSE;
Line S01247 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000077 |
Seq # *Modification Id* Act ----------------------------+ 01315 M02S01247.@000077 ---| NONDEFAULT=TRUE; 01316 M01S00006.@000077 +++| IF OKMOVE[PROCESSNDX] AND WHICHLIN GR 3 THEN 01317 M01S00007.@000077 +++| BEGIN 01318 M01S00008.@000077 +++| # NOTE "TO NEXT" IS A SPECIAL CASE FOR COPY/MOVE WITH NO # 01319 M01S00009.@000077 +++| # ADDITIONAL SYNTAX ALLOWED, AND SEMANTICS DETERMINED BY # 01320 M01S00010.@000077 +++| # CHARACTER VERSUS LINE BOUNDARIES FOR SOURCE RANGE # 01321 M01S00011.@000077 +++| IF NOT CHARRANGE THEN 01322 M01S00012.@000077 +++| BEGIN 01323 M01S00013.@000077 +++| FILNUM=CURFILE; 01324 M01S00014.@000077 +++| EXTENDFILE(FALSE); 01325 M01S00015.@000077 +++| LINPTR3=CURRENT-TOPF(CURFILE); 01326 M01S00016.@000077 +++| END 01327 M01S00017.@000077 +++| END 01328 M01S00018.@000077 +++| ELSE 01329 M01S00019.@000077 +++| BEGIN 01330 M01S00020.@000077 +++| IF FORWARD OR BACKWARD THEN ERRJUMP("ONLY ONE RANGE ALLOWED$"); 01331 M01S00021.@000077 +++| WHICHDGT=DIGITST"LIMIT"; 01332 M01S00022.@000077 +++| IF LIMIT EQ -1 THEN LIMIT=1; 01333 M01S00023.@000077 +++| FORWARD=TRUE; 01334 M01S00024.@000077 +++| BACKWARD=FALSE; 01335 M01S00025.@000077 +++| NONDEFAULT=TRUE; 01336 M01S00026.@000077 +++| END 01337 M01S01248.fsedata +++| GOTO SCANTOKEN; 01338 M01S01249.fsedata +++| 01339 M01S01250.fsedata +++|SKQUIET: 01340 M01S01251.fsedata +++| DONTPRINT=TRUE; 01341 M01S01252.fsedata +++| GOTO SCANTOKEN; 01342 M01S01253.fsedata +++| 01343 M01S01254.fsedata +++|SKREPEAT: 01344 M01S01255.fsedata +++| NONDEFAULT=TRUE; 01345 M01S01256.fsedata +++| IF LIMIT EQ -1 THEN LIMIT=1; 01346 M01S01257.fsedata +++| WHICHDGT=DIGITST"LIMIT"; 01347 M01S01258.fsedata +++| GOTO SCANTOKEN; 01348 M01S01259.fsedata +++| 01349 M01S01260.fsedata +++|SKSCREEN: 01350 M01S01261.fsedata +++| IF LINPTR1 NQ -1 OR LINPTR2 NQ -1 THEN 01351 M01S01262.fsedata +++| BEGIN 01352 M01S01263.fsedata +++| ERRJUMP("ONLY ONE RANGE ALLOWED$"); 01353 M01S01264.fsedata +++| END 01354 M01S01265.fsedata +++| IF SCREENMODE THEN 01355 M01S01266.fsedata +++| BEGIN 01356 M01S01267.fsedata +++| LINPTR1=TOPS(CURSPLIT)+1-TOPF(CURFILE); 01357 M01S01268.fsedata +++| LINPTR2=BOTS(CURSPLIT)-1-TOPF(CURFILE); 01358 M01S01269.fsedata +++| IF WHICHLIN GQ 3 THEN 01359 M01S01270.fsedata +++| BEGIN 01360 M01S01271.fsedata +++| LINPTR3=LINPTR2; 01361 M01S01272.fsedata +++| IF BACKWARD THEN LINPTR3=LINPTR1; 01362 M01S01273.fsedata +++| END 01363 M01S01274.fsedata +++| NONDEFAULT=TRUE; 01364 M01S00001.@000007 +++| DONTPRINT=TRUE; 01365 M01S01275.fsedata +++| END 01366 M01S01276.fsedata +++| ELSE ERRJUMP("SCREEN MODE REQUIRED$"); 01367 M01S01277.fsedata +++| WHICHLIN=3; 01368 M01S01278.fsedata +++| WHICHDGT=WHICHLIN; 01369 M01S01279.fsedata +++| GOTO SCANTOKEN; 01370 M01S01280.fsedata +++| 01371 M01S01281.fsedata +++|SKIN: 01372 M01S01282.fsedata +++| WHICHDGT=DIGITST"TAB";
Line S01283 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000073 |
Seq # *Modification Id* Act ----------------------------+ 01373 M02S01283.@000073 ---| GOTO SCANTOKEN; 01374 M01S00002.@000073 +++| TOKEN; # ADVANCE NEXT SYNTAX # 01375 M01S00003.@000073 +++| SCNTAB; # ANALYZE AND SET *IN* MARGINS # 01376 M01S00004.@000073 +++| GOTO SCANLOOP; 01377 M01S01284.fsedata +++| 01378 M01S01285.fsedata +++|SKTO: 01379 M01S01286.fsedata +++| IF NOT OKTARGET[PROCESSNDX] THEN 01380 M01S01287.fsedata +++| BEGIN 01381 M01S01288.fsedata +++| ERRJUMP("PARAMETER NOT VALID FOR THIS DIRECTIVE$"); 01382 M01S01289.fsedata +++| END 01383 M01S00008.@000046 +++| SCANTO = TRUE; 01384 M01S00009.@000046 +++| SCNONCE = FALSE; 01385 M01S01290.fsedata +++| WHICHLIN=4; 01386 M01S01291.fsedata +++| WHICHDGT=WHICHLIN; 01387 M01S01292.fsedata +++| NONDEFAULT=TRUE; 01388 M01S01293.fsedata +++| GOTO SCANTOKEN; 01389 M01S01294.fsedata +++| 01390 M01S01295.fsedata +++|SKWORD: 01391 M01S01296.fsedata +++| SCANWORD=TRUE; 01392 M01S01297.fsedata +++| GOTO SCANTOKEN; 01393 M01S01298.fsedata +++| 01394 M01S01299.fsedata +++|SKUPPER: 01395 M01S01300.fsedata +++| SCANUPPER=TRUE; 01396 M01S01301.fsedata +++| IF NOT OKUPPER[PROCESSNDX] THEN 01397 M01S01302.fsedata +++| BEGIN 01398 M01S01303.fsedata +++| ERRJUMP("PARAMETER NOT VALID FOR THIS DIRECTIVE$"); 01399 M01S01304.fsedata +++| END 01400 M01S01305.fsedata +++| GOTO SCANTOKEN; 01401 M01S01306.fsedata +++| 01402 M01S01307.fsedata +++| 01403 M01S01308.fsedata +++|SCALPHA: 01404 M01S01309.fsedata +++| FOR TMP1=0 STEP 1 WHILE KEYWDNDX GQ 0 AND TMP1 LQ NUMSCANKEYS DO 01405 M01S01310.fsedata +++| BEGIN 01406 M01S01311.fsedata +++| IF KEYMATCH[TMP1] EQ KEYWORD[KEYWDNDX] 01407 M01S01312.fsedata +++| THEN GOTO SCANKEYSW[TMP1]; 01408 M01S01313.fsedata +++| END 01409 M01S01314.fsedata +++| ERRJUMP("CHARACTER SEQUENCE NOT RECOGNIZED$"); 01410 M01S01315.fsedata +++| 01411 M01S01316.fsedata +++| 01412 M01S01317.fsedata +++|SCSEMI: SCEOL: SCOTHER: SCCTRL: SCEQUAL: 01413 M01S01318.fsedata +++| 01414 M01S01319.fsedata +++| # VERIFY END OF SYNTAX # 01415 M01S01320.fsedata +++| 01416 M01S01321.fsedata +++| SCNEOC; 01417 M01S01322.fsedata +++| 01418 M01S01323.fsedata +++| # VERIFY SOURCE RANGE WITHIN ONE FILE, AND CONVERT FILE SELECTIONS # 01419 M01S01324.fsedata +++| # FROM FILE DIRECTORY IDS INTO OPEN BRACKET ORDINALS # 01420 M01S01325.fsedata +++| 01421 M01S01326.fsedata +++| IF FILPTR2 NQ 0 THEN 01422 M01S01327.fsedata +++| BEGIN 01423 M01S01328.fsedata +++| IF FILPTR1 NQ 0 AND FILPTR1 NQ FILPTR2 01424 M01S01329.fsedata +++| THEN ERRJUMP("RANGE MUST BE IN SAME FILE$"); 01425 M01S01330.fsedata +++| FILPTR1=FILPTR2; 01426 M01S01331.fsedata +++| END 01427 M01S01332.fsedata +++| CHECKFILPTR; # CONVERT FILPTR1 # 01428 M01S01333.fsedata +++| FILPTR2=FILPTR1; # AND FILPTR2 ALSO # 01429 M01S01334.fsedata +++| 01430 M01S01335.fsedata +++| # VERIFY THAT BOTH FILES FOR A DUAL-FILE OPERATION CAN BE # 01431 M01S01336.fsedata +++| # OPENED INTO THE TWO BRACKETS, AND CONVERT TARGET FILE SELECTION # 01432 M01S01337.fsedata +++| # FROM FILE DIRECTORY ID INTO OPEN BRACKET ORDINAL # 01433 M01S01338.fsedata +++| 01434 M01S01339.fsedata +++| IF FILPTR1 NQ 0 AND FILPTR3 NQ 0 AND FILPTR1 NQ FILPTR3 01435 M01S01340.fsedata +++| THEN CURFILE=FILPTR1; # ASSURE NEEDED FILES AVAIL # 01436 M01S01341.fsedata +++| FILPTR1 = = FILPTR3; 01437 M01S01342.fsedata +++| CHECKFILPTR; # CONVERT FILPTR3 # 01438 M01S01343.fsedata +++| FILPTR3 = = FILPTR1; 01439 M01S01344.fsedata +++| IF FILPTR3 EQ 0 THEN FILPTR3=CURFILE; 01440 M01S01345.fsedata +++| 01441 M01S01346.fsedata +++| # CONVERT LINPTRS TO ABSOLUTE WORKFILE ORDINALS # 01442 M01S01347.fsedata +++| 01443 M01S01348.fsedata +++| REL2ABS(LINPTR1,FILPTR1); 01444 M01S01349.fsedata +++| REL2ABS(LINPTR2,FILPTR2); 01445 M01S01350.fsedata +++| REL2ABS(LINPTR3,FILPTR3); 01446 M01S01351.fsedata +++| 01447 M01S01352.fsedata +++| # NOW FILL IN DEFAULTS # 01448 M01S01353.fsedata +++| 01449 M01S01354.fsedata +++| IF LIMIT EQ -1 THEN 01450 M01S01355.fsedata +++| BEGIN 01451 M01S01356.fsedata +++| IF LINPTR2 EQ -1 THEN LIMIT=1; 01452 M01S01357.fsedata +++| ELSE LIMIT=LARGENUM; 01453 M01S01358.fsedata +++| END 01454 M01S01359.fsedata +++| 01455 M01S01360.fsedata +++| IF LINPTR1 EQ -1 THEN 01456 M01S01361.fsedata +++| BEGIN 01457 M01S01362.fsedata +++| CHRPTR1=0;
Line S01363 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000005 |
Seq # *Modification Id* Act ----------------------------+ 01458 M02S01363.@000005 ---| IF FORWARD THEN LINPTR1=CURRENT+1; 01459 M01S00001.@000005 +++| IF FORWARD AND NOT OKSEARCH[PROCESSNDX] THEN LINPTR1=CURRENT+1;
Line S01364 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000005 |
Seq # *Modification Id* Act ----------------------------+ 01460 M02S01364.@000005 ---| ELSE IF BACKWARD THEN LINPTR1=CURRENT-1; 01461 M01S00002.@000005 +++| ELSE IF BACKWARD THEN 01462 M01S00003.@000005 +++| BEGIN 01463 M01S00004.@000005 +++| IF OKSEARCH[PROCESSNDX] THEN 01464 M01S00005.@000005 +++| BEGIN 01465 M01S00006.@000005 +++| LINPTR1=CURRENT; 01466 M01S00007.@000005 +++| IF CURCURSOR GR 0 THEN CHRPTR1=CURCURSOR-1; 01467 M01S00008.@000005 +++| ELSE 01468 M01S00009.@000005 +++| BEGIN 01469 M01S00010.@000005 +++| CHRPTR1=BUFCM1; 01470 M01S00011.@000005 +++| LINPTR1=CURRENT-1; 01471 M01S00012.@000005 +++| END 01472 M01S00013.@000005 +++| END 01473 M01S00014.@000005 +++| ELSE LINPTR1=CURRENT-1; 01474 M01S00015.@000005 +++| END 01475 M01S01365.fsedata +++| ELSE 01476 M01S01366.fsedata +++| BEGIN 01477 M01S01367.fsedata +++| LINPTR1=CURRENT; 01478 M01S01368.fsedata +++| IF SCANWORD OR CHARRANGE THEN CHRPTR1=CURCURSOR;
Line S01369 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000005 |
Seq # *Modification Id* Act ----------------------------+ 01479 M02S01369.@000005 ---| IF OKSEARCH[PROCESSNDX] THEN 01480 M01S00016.@000005 +++| IF OKSEARCH[PROCESSNDX] THEN 01481 M01S01370.fsedata +++| BEGIN 01482 M01S01371.fsedata +++| CHRPTR1=CURCURSOR;
Line S01372 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000026 |
Seq # *Modification Id* Act ----------------------------+ 01483 M02S01372.@000026 ---| IF LASTPROCESS EQ PROCESSNDX AND CURCURSOR EQ OLDCURSOR
Line S01373 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000026 |
Seq # *Modification Id* Act ----------------------------+ 01484 M02S01373.@000026 ---| AND LINPTR1 EQ OLDLINPTR THEN CHRPTR1=CHRPTR1+STRINGLEN; 01485 M01S00002.@000026 +++| IF LASTPROCESS EQ PROCESSNDX 01486 M01S00003.@000026 +++| AND (NOT(SCHSTRSPEC) OR FORWARD) 01487 M01S00004.@000026 +++| AND CURCURSOR EQ OLDCURSOR 01488 M01S00005.@000026 +++| AND LINPTR1 EQ OLDLINPTR 01489 M01S00006.@000026 +++| THEN CHRPTR1=CHRPTR1+STRINGLEN; 01490 M01S01374.fsedata +++| END 01491 M01S01375.fsedata +++| END 01492 M01S01376.fsedata +++| FILPTR1=CURFILE; 01493 M01S01377.fsedata +++| END 01494 M01S01378.fsedata +++| 01495 M01S01379.fsedata +++| IF LINPTR2 EQ -1 THEN 01496 M01S01380.fsedata +++| BEGIN 01497 M01S01381.fsedata +++| FILNUM=FILPTR1; 01498 M01S01382.fsedata +++| IF FILNUM EQ 0 THEN FILNUM=CURFILE; 01499 M01S01383.fsedata +++| IF BACKWARD THEN LINPTR2=TOPF(FILNUM)+1; 01500 M01S01384.fsedata +++| ELSE LINPTR2=BOTF(FILNUM)-1; 01501 M01S01385.fsedata +++| END 01502 M01S01386.fsedata +++| 01503 M01S01387.fsedata +++| IF LINPTR3 EQ -1 THEN 01504 M01S01388.fsedata +++| BEGIN 01505 M01S01389.fsedata +++| FILNUM=FILPTR3; 01506 M01S01390.fsedata +++| EXTENDFILE(TRUE); 01507 M01S01391.fsedata +++| LINPTR3=CURRENT; 01508 M01S01392.fsedata +++| CHRPTR3=CURCURSOR; 01509 M01S01393.fsedata +++| END 01510 M01S01394.fsedata +++| 01511 M01S00017.@000005 +++| IF OKSEARCH[PROCESSNDX] AND (BACKWARD OR LINPTR1 GR LINPTR2) THEN 01512 M01S00018.@000005 +++| BEGIN 01513 M01S00019.@000005 +++| IF CHRPTR1 LS 0 THEN CHRPTR1=BUFCM1; 01514 M01S00020.@000005 +++| IF CHRPTR2 LS 0 THEN CHRPTR2=0; 01515 M01S00021.@000005 +++| END 01516 M01S01395.fsedata +++| CHRPTR1=MAX(CHRPTR1,0); 01517 M01S01396.fsedata +++| IF CHRPTR2 LS 0 THEN CHRPTR2=BUFCM1; 01518 M01S01397.fsedata +++| IF CHRPTR2 EQ 0 AND NOT (CHARRANGE OR OKSEARCH[PROCESSNDX]) 01519 M01S01398.fsedata +++| THEN CHRPTR2=BUFCM1; 01520 M01S01399.fsedata +++| IF CHRPTR3 LS 0 THEN 01521 M01S01400.fsedata +++| BEGIN 01522 M01S01401.fsedata +++| IF CHARRANGE THEN CHRPTR3=CURCURSOR; 01523 M01S01402.fsedata +++| ELSE CHRPTR3=0; 01524 M01S01403.fsedata +++| END 01525 M01S01404.fsedata +++| 01526 M01S01405.fsedata +++| WINDOPOS(LINPTR3,FILPTR3); 01527 M01S01406.fsedata +++| 01528 M01S01407.fsedata +++| # SINGLE USER VERSION ONLY MUST MAKE FILE EXTENSION EXACT # 01529 M01S01408.fsedata +++| 01530 M01S01409.fsedata +++| CONTROL IFEQ SINGLE,1; 01531 M01S01410.fsedata +++| IF THISEXTEND NQ 0 THEN 01532 M01S01411.fsedata +++| BEGIN 01533 M01S01412.fsedata +++| PUSH; 01534 M01S01413.fsedata +++| CURFILE=FILPTR3; 01535 M01S01414.fsedata +++| WHYLE LINPTR3 LS BOTF(FILPTR3)-1 AND THISEXTEND GR 0 DO 01536 M01S01415.fsedata +++| BEGIN 01537 M01S01416.fsedata +++| POSZ(BOTF(FILPTR3)-1); 01538 M01S01417.fsedata +++| DELX; 01539 M01S01418.fsedata +++| THISEXTEND=THISEXTEND-1; 01540 M01S01419.fsedata +++| IF CURRENT LS LINPTR1 THEN LINPTR1=LINPTR1-1; 01541 M01S01420.fsedata +++| IF CURRENT LS LINPTR2 THEN LINPTR2=LINPTR2-1; 01542 M01S01421.fsedata +++| END 01543 M01S01422.fsedata +++| POP; 01544 M01S01423.fsedata +++| END 01545 M01S01424.fsedata +++| WINDOPOS(LINPTR3,FILPTR3); 01546 M01S01425.fsedata +++| CONTROL FI; 01547 M01S01426.fsedata +++| 01548 M01S01427.fsedata +++| IF FILPTR1 EQ 0 THEN FILPTR1=CURFILE; 01549 M01S01428.fsedata +++| CURFILE=FILPTR1; 01550 M01S01429.fsedata +++| WINDOLIN(LINPTR1,CURFILE); 01551 M01S01430.fsedata +++| FOUNDOTHER=FOUND; 01552 M01S01431.fsedata +++| WINDOLIN(LINPTR2,CURFILE); 01553 M01S01432.fsedata +++| FOUND=FOUND AND FOUNDOTHER; 01554 M01S01433.fsedata +++|
Line S01434 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000005 |
Seq # *Modification Id* Act ----------------------------+ 01555 M02S01434.@000005 ---| IF LINPTR1 GR LINPTR2 THEN 01556 M01S00022.@000005 +++| IF LINPTR1 GR LINPTR2 01557 M01S00023.@000005 +++| OR (LINPTR1 EQ LINPTR2 AND CHRPTR1 GR CHRPTR2) THEN 01558 M01S01435.fsedata +++| BEGIN 01559 M01S01436.fsedata +++| BACKWARD=TRUE; 01560 M01S01437.fsedata +++| LINPTR1 = = LINPTR2;
Line S01438 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000005 |
Seq # *Modification Id* Act ----------------------------+ 01561 M02S01438.@000005 ---| IF CHARRANGE THEN CHRPTR1 = = CHRPTR2; 01562 M01S00024.@000005 +++| CHRPTR1 = = CHRPTR2; 01563 M01S01439.fsedata +++| END 01564 M01S01440.fsedata +++| 01565 M01S01441.fsedata +++| IF BACKWARD AND NOT OKREVERSE[PROCESSNDX] THEN 01566 M01S01442.fsedata +++| BEGIN 01567 M01S01443.fsedata +++| BACKWARD=FALSE; 01568 M01S01444.fsedata +++| IF LIMIT LS LARGENUM 01569 M01S01445.fsedata +++| THEN LINPTR1=MAX(LINPTR1,LINPTR2-MAX(LIMIT,1)+1); 01570 M01S01446.fsedata +++| END 01571 M01S01447.fsedata +++| 01572 M01S01448.fsedata +++| IF WHICHSTR NQ 0 AND ASCII[CURFILE] LQ 1 THEN 01573 M01S01449.fsedata +++| BEGIN 01574 M01S01450.fsedata +++| SQUELCH(LOCSTRING1); 01575 M01S01451.fsedata +++| SQUELCH(LOCSTRING2); 01576 M01S01452.fsedata +++| SQUELCH(CHGSTRING1); 01577 M01S01453.fsedata +++| SQUELCH(TTYLIN); 01578 M01S01454.fsedata +++| END 01579 M01S01455.fsedata +++| 01580 M01S01456.fsedata +++| IOEND # OF SCANNER # 01581 M01S01457.fsedata +++|PAGE # SCAN STUFF -- SCNLIN # 01582 M01S01458.fsedata +++| 01583 M01S01459.fsedata +++| 01584 M01S01460.fsedata +++|PROC SCNLIN; 01585 M01S01461.fsedata +++| IOBEGIN(SCNLIN) 01586 M01S01462.fsedata +++|# 01587 M01S01463.fsedata +++|** SCNLIN - SCAN LINE ADDRESS SYNTAX. 01588 M01S01464.fsedata +++|* 01589 M01S01465.fsedata +++|* SCNLIN IS CAPABLE OF PARSING ONE LINE ADDRESS EXPRESSION. 01590 M01S01466.fsedata +++|* IT IS INTENDED TO BE CALLED ONLY BY SCANNER. SCNLIN 01591 M01S01467.fsedata +++|* ASSUMES THE CALLER HAS POSITIONED THE TOKEN AT A 01592 M01S01468.fsedata +++|* GENUINE LINE ADDRESS EXPRESSION. 01593 M01S01469.fsedata +++|* 01594 M01S01470.fsedata +++|* ENTRY WHICHLIN - WHICH LINE PARAMETER TO SET. 01595 M01S01471.fsedata +++|* LINPTR1,2,3 - POSSIBLE PARAMETERS. 01596 M01S01472.fsedata +++|* CHRPTR1,2,3 - DITTO. 01597 M01S01473.fsedata +++|* FILPTR1,2,3 - DITTO. 01598 M01S01474.fsedata +++|* LINNUM1,2,3 - DITTO. 01599 M01S01475.fsedata +++|* CURFILE - DEFAULT FILE BRACKET. 01600 M01S01476.fsedata +++|* TOKENPOS, SCANPOS - BRACKET CURRENT SYNTAX. 01601 M01S01477.fsedata +++|* CURF(), TOPF(), BOTF() - SETUP. 01602 M01S01478.fsedata +++|* NUMBERED[] - SETUP. 01603 M01S01479.fsedata +++|* REGLINE[XYZREG], REGLINE[XYZTOP] - SETUP. 01604 M01S01480.fsedata +++|* XYZCHAR[], XYZFILE[] - SETUP. 01605 M01S01481.fsedata +++|* 01606 M01S01482.fsedata +++|* EXIT ONE SET OF LINPTRX, CHRPTRX, FILPTRX, LINNUMX - 01607 M01S01483.fsedata +++|* DESCRIBE SCANNED EXPRESSION. 01608 M01S01484.fsedata +++|* OTHER SETS OF LINPTRX, CHRPTRX, FILPTRX, LINNUMX - 01609 M01S01485.fsedata +++|* USED TEMPORARILY THEN RESTORED. 01610 M01S01486.fsedata +++|* IF FILPTRX SET, IN FDLF FORMAT NOT BRACKET. 01611 M01S01487.fsedata +++|* FILE BRACKETS POSSIBLY RE-OPENED. 01612 M01S01488.fsedata +++|* CHARRANGE - CAN BE FORCED TRUE FOR X,Y,Z. 01613 M01S01489.fsedata +++|* PAGELAST - FALSE. 01614 M01S01490.fsedata +++|* NONDEFAULT - TRUE. 01615 M01S01491.fsedata +++|* WHICHLIN - INCREMENTED. 01616 M01S01492.fsedata +++|* WHICHDGT - MATCHES WHICHLIN. 01617 M01S01493.fsedata +++|* SCANPOS, TOKENPOS - ADVANCED BEYOND SYNTAX. 01618 M01S01494.fsedata +++|* 01619 M01S01495.fsedata +++|* USES READNAM, FILNUM, ORIGSCNLIN, TEMP(RESTORES), 01620 M01S01496.fsedata +++|* ALL TOKENXXXX VARIABLES. 01621 M01S01497.fsedata +++|* 01622 M01S01498.fsedata +++|* CALLS PUSHTEMP, MIN, SCNFILE, ERRJUMP, FORCEFILE, 01623 M01S01499.fsedata +++|* TOKEN, PUSH, POSN, POP, POPTEMP. 01624 M01S01500.fsedata +++|# 01625 M01S01501.fsedata +++| 01626 M01S01502.fsedata +++| # SCNLINSW MUST MATCH TYPST. SLKEYSW MATCHES LINEKEYWD. # 01627 M01S01503.fsedata +++| 01628 M01S01504.fsedata +++| SWITCH SCNLINSW SLDIGIT, SLPLUS, SLMINUS, SLDELIMIT, 01629 M01S01505.fsedata +++| SLCOLON, 01630 M01S01506.fsedata +++| SLPAREN, SLEQUAL, SLLETTER, SLSEMI, 01631 M01S01507.fsedata +++| SLEOL, SLOTHER, SLCONTROL; 01632 M01S01508.fsedata +++| 01633 M01S01509.fsedata +++| SWITCH SLKEYSW SLCURRENT, SLFIRST, SLLAST, SLX, SLY, SLZ; 01634 M01S01510.fsedata +++| 01635 M01S01511.fsedata +++| ARRAY LINEKEYS[0:5]; ITEM LINEKEYWD C(0,0,10) = [ "CURRENT", 01636 M01S01512.fsedata +++| "FIRST", "LAST", "X", "Y", "Z" ]; 01637 M01S01513.fsedata +++| 01638 M01S01514.fsedata +++| ITEM TMP1; # CAN BE USED ONLY INSTANTANEOUSLY # 01639 M01S01515.fsedata +++| 01640 M01S01516.fsedata +++| WHICHLIN=MIN(WHICHLIN,3);
Line S01517 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000029 |
Seq # *Modification Id* Act ----------------------------+ 01641 M02S01517.@000029 ---| ORIGSCNLIN=TOKENPOS; 01642 M01S00001.@000029 +++| IF WHICHLIN NQ 2 THEN ORIGSCNLIN=TOKENPOS; 01643 M01S01518.fsedata +++| FILNUM=CURFILE; 01644 M01S01519.fsedata +++| NONDEFAULT=TRUE; 01645 M01S01520.fsedata +++| PAGELAST=FALSE; # SINCE NON-DEFAULT USED # 01646 M01S01521.fsedata +++| PUSHTEMP; # ALLOCATE TEMP VARIABLE FOR SCRATCH # 01647 M01S01522.fsedata +++| IF WHICHLIN EQ 2 THEN 01648 M01S01523.fsedata +++| BEGIN 01649 M01S01524.fsedata +++| IF FILPTR1 NQ 0 AND FDLF(CURFILE) NQ FILPTR1 01650 M01S01525.fsedata +++| THEN FILNUM=CURFILE LXR 3; 01651 M01S01526.fsedata +++| LINPTR1 == LINPTR2; 01652 M01S01527.fsedata +++| FILPTR1 == FILPTR2; 01653 M01S01528.fsedata +++| LINNUM1 == LINNUM2; 01654 M01S01529.fsedata +++| CHRPTR1 == CHRPTR2; 01655 M01S01530.fsedata +++| END 01656 M01S01531.fsedata +++| ELSE IF WHICHLIN EQ 3 THEN 01657 M01S01532.fsedata +++| BEGIN 01658 M01S01533.fsedata +++| LINPTR1 == LINPTR3; 01659 M01S01534.fsedata +++| FILPTR1 == FILPTR3; 01660 M01S01535.fsedata +++| LINNUM1 == LINNUM3; 01661 M01S01536.fsedata +++| CHRPTR1 == CHRPTR3; 01662 M01S01537.fsedata +++| END 01663 M01S01538.fsedata +++| 01664 M01S01539.fsedata +++| CHRPTR1=0; # DEFAULT CHARACTER POINTERS # 01665 M01S01540.fsedata +++| IF WHICHLIN EQ 2 THEN CHRPTR1=BUFCM1; 01666 M01S01541.fsedata +++| 01667 M01S01542.fsedata +++| 01668 M01S01543.fsedata +++|SCNLINLOOP: # THIS IS THE MAIN LOOP # 01669 M01S01544.fsedata +++| GOTO SCNLINSW[TOKENTYPE]; # DISPATCH BY SYNTAX # 01670 M01S01545.fsedata +++| 01671 M01S01546.fsedata +++|SLDELIMIT: SLCOLON: 01672 M01S01547.fsedata +++|SLSEMI: SLEOL: SLOTHER: SLCONTROL: SLEQUAL: 01673 M01S01548.fsedata +++| GOTO SLDONE; 01674 M01S01549.fsedata +++| 01675 M01S01550.fsedata +++|SLPAREN: 01676 M01S01551.fsedata +++| # SCAN FILE NAME. IF MATCHES CURRENT FILE, WE CAN CONTINUE # 01677 M01S01552.fsedata +++| # SCANNING. IF NOT, WE MUST ACCESS FILE AND RE-START ENTIRE# 01678 M01S01553.fsedata +++| # SCAN SO THAT RELOCATABLE VALUES WILL BE FRESH. # 01679 M01S00010.@000046 +++| IF SCANSFILE THEN 01680 M01S00011.@000046 +++| BEGIN # IF ALREADY SCANNED SOURCE # 01681 M01S00012.@000046 +++| IF NOT SCANTO THEN 01682 M01S00013.@000046 +++| BEGIN # IF NO *TO* # 01683 M01S00014.@000046 +++| ERRJUMP ("*TO* REQUIRED BEFORE DESTINATION FILE$"); 01684 M01S00015.@000046 +++| END 01685 M01S00016.@000046 +++| END 01686 M01S01554.fsedata +++| SCNFILE(READNAM); 01687 M01S01555.fsedata +++| IF READNAM NQ PADNAME(FILENAM[FILNUM]) THEN 01688 M01S01556.fsedata +++| BEGIN 01689 M01S00002.@000029 +++| IF WHICHLIN EQ 2 THEN 01690 M01S00003.@000029 +++| BEGIN 01691 M01S00004.@000029 +++| WHICHLIN=1; 01692 M01S00005.@000029 +++| LINPTR2=-1; 01693 M01S00006.@000029 +++| FILPTR2=0; 01694 M01S00007.@000029 +++| LINNUM2=-1; 01695 M01S00008.@000029 +++| CHRPTR2=-1; 01696 M01S00009.@000029 +++| END 01697 M01S01557.fsedata +++| FORCEFILE; 01698 M01S01558.fsedata +++| LINPTR1=CURF(FILNUM)-TOPF(FILNUM); 01699 M01S01559.fsedata +++| FILPTR1=FDLF(FILNUM); # ASSURE ONLY ONE MORE TRY # 01700 M01S00017.@000046 +++| IF SCNONCE THEN 01701 M01S00018.@000046 +++| BEGIN # IF ERROR IN SYNTAX # 01702 M01S00019.@000046 +++| TMP1 = 0; 01703 M01S00020.@000046 +++| IF SCNLINZ THEN TMP1 = O"32"; 01704 M01S00021.@000046 +++| IF SCNLINY THEN TMP1 = O"31"; 01705 M01S00022.@000046 +++| IF SCNLINX THEN TMP1 = O"30"; 01706 M01S00023.@000046 +++| IF TMP1 EQ 0 THEN 01707 M01S00024.@000046 +++| BEGIN # IF NOT *XYZ* ERROR # 01708 M01S00025.@000046 +++| TOKENPOS = ORIGSCNLIN; 01709 M01S00026.@000046 +++| ERRJUMP ("ONLY ONE RANGE ALLOWED$"); 01710 M01S00027.@000046 +++| END 01711 M01S00028.@000046 +++| GOTO SLERROR; 01712 M01S00029.@000046 +++| END 01713 M01S00030.@000046 +++| SCNONCE = TRUE; 01714 M01S01560.fsedata +++| SCANPOS=ORIGSCNLIN; # FORCE ENTIRE EXPRESSION RESCAN # 01715 M01S01561.fsedata +++| TOKEN; 01716 M01S01562.fsedata +++| GOTO SCNLINLOOP; 01717 M01S01563.fsedata +++| END 01718 M01S00031.@000046 +++| ELSE 01719 M01S00032.@000046 +++| BEGIN 01720 M01S00033.@000046 +++| SCANSFILE = TRUE; 01721 M01S00034.@000046 +++| IF NOT SCANTO THEN 01722 M01S00035.@000046 +++| BEGIN # IF NOT TARGET FILE # 01723 M01S00036.@000046 +++| TMP1 = 0; 01724 M01S00037.@000046 +++| IF SCNLINZ AND XYZFILE[2] NQ FDLF(FILNUM) THEN TMP1 = O"32"; 01725 M01S00038.@000046 +++| IF SCNLINY AND XYZFILE[1] NQ FDLF(FILNUM) THEN TMP1 = O"31"; 01726 M01S00039.@000046 +++| IF SCNLINX AND XYZFILE[0] NQ FDLF(FILNUM) THEN TMP1 = O"30"; 01727 M01S00040.@000046 +++| IF TMP1 NQ 0 THEN GOTO SLERROR; 01728 M01S00041.@000046 +++| END 01729 M01S00042.@000046 +++| END 01730 M01S01564.fsedata +++| GOTO SLDONE; 01731 M01S01565.fsedata +++| 01732 M01S01566.fsedata +++|SLCURRENT: 01733 M01S01567.fsedata +++| IF WHICHLIN EQ 3 THEN EXTENDFILE(FALSE); 01734 M01S01568.fsedata +++| LINPTR1=CURF(FILNUM)-TOPF(FILNUM); 01735 M01S01569.fsedata +++|SLCUR2: 01736 M01S01570.fsedata +++| FILPTR1=FDLF(FILNUM); 01737 M01S01571.fsedata +++|SLCUR3: 01738 M01S01572.fsedata +++| TOKEN; # TO GLEAN OUT MORE # 01739 M01S01573.fsedata +++|SLCUR4: 01740 M01S01574.fsedata +++| IF TOKENTYPE EQ TYPST"PLUS" THEN GOTO SLPLUS2; 01741 M01S01575.fsedata +++| IF TOKENTYPE EQ TYPST"MINUS" THEN GOTO SLMINUS2; 01742 M01S01576.fsedata +++| GOTO SLDONE; 01743 M01S01577.fsedata +++| 01744 M01S01578.fsedata +++|SLFIRST: 01745 M01S01579.fsedata +++| LINPTR1=1; 01746 M01S01580.fsedata +++| GOTO SLCUR2; # MORE SYNTAX?? # 01747 M01S01581.fsedata +++| 01748 M01S01582.fsedata +++|SLLAST: 01749 M01S01583.fsedata +++| LINPTR1=BOTF(FILNUM)-1-TOPF(FILNUM); 01750 M01S01584.fsedata +++| GOTO SLCUR2; # MORE SYNTAX?? # 01751 M01S01585.fsedata +++| 01752 M01S01586.fsedata +++|SLPLUS: 01753 M01S01587.fsedata +++| IF WHICHLIN EQ 3 THEN EXTENDFILE(FALSE); 01754 M01S01588.fsedata +++| LINPTR1=CURF(FILNUM)-TOPF(FILNUM); 01755 M01S01589.fsedata +++| FILPTR1=FDLF(FILNUM); 01756 M01S01590.fsedata +++|SLPLUS2: 01757 M01S01591.fsedata +++| TEMP=1; 01758 M01S01592.fsedata +++|SLPLUS3: 01759 M01S01593.fsedata +++| TOKEN; 01760 M01S01594.fsedata +++| IF TOKENTYPE EQ TYPST"DIGIT" THEN 01761 M01S01595.fsedata +++| BEGIN 01762 M01S01596.fsedata +++| LINPTR1=LINPTR1+TEMP*TOKENVAL; 01763 M01S01597.fsedata +++| TOKEN; 01764 M01S01598.fsedata +++| END 01765 M01S01599.fsedata +++| ELSE LINPTR1=LINPTR1+TEMP; 01766 M01S01600.fsedata +++| LINNUM1=-1; 01767 M01S01601.fsedata +++| GOTO SLCUR4; 01768 M01S01602.fsedata +++| 01769 M01S01603.fsedata +++|SLMINUS: 01770 M01S01604.fsedata +++| IF WHICHLIN EQ 3 THEN EXTENDFILE(FALSE); 01771 M01S01605.fsedata +++| LINPTR1=CURF(FILNUM)-TOPF(FILNUM); 01772 M01S01606.fsedata +++| FILPTR1=FDLF(FILNUM); 01773 M01S01607.fsedata +++|SLMINUS2: 01774 M01S01608.fsedata +++| TEMP=-1; 01775 M01S01609.fsedata +++| GOTO SLPLUS3; 01776 M01S01610.fsedata +++| 01777 M01S01611.fsedata +++|SLX: 01778 M01S00043.@000046 +++| SCNLINX = TRUE; 01779 M01S01612.fsedata +++| TEMP=0; 01780 M01S01613.fsedata +++|SLX2: 01781 M01S01614.fsedata +++| LINPTR1=REGLINE[XYZREG+TEMP]-REGLINE[XYZTOP+TEMP]; 01782 M01S01615.fsedata +++| FILPTR1=XYZFILE[TEMP]; 01783 M01S01616.fsedata +++| CHRPTR1=XYZCHAR[TEMP]; 01784 M01S01617.fsedata +++| IF CHRPTR1 GQ 0 THEN CHARRANGE=TRUE; 01785 M01S01618.fsedata +++| GOTO SLCUR3; 01786 M01S01619.fsedata +++| 01787 M01S01620.fsedata +++|SLY: 01788 M01S00044.@000046 +++| SCNLINY = TRUE; 01789 M01S01621.fsedata +++| TEMP=1; 01790 M01S01622.fsedata +++| GOTO SLX2; 01791 M01S01623.fsedata +++| 01792 M01S01624.fsedata +++|SLZ: 01793 M01S00045.@000046 +++| SCNLINZ = TRUE; 01794 M01S01625.fsedata +++| TEMP=2; 01795 M01S01626.fsedata +++| GOTO SLX2; 01796 M01S01627.fsedata +++| 01797 M01S01628.fsedata +++|SLDIGIT: 01798 M01S01629.fsedata +++| IF NUMBERED[FILNUM] NQ 0 THEN 01799 M01S01630.fsedata +++| BEGIN 01800 M01S01631.fsedata +++| LINNUM1=TOKENVAL; 01801 M01S01632.fsedata +++| PUSH; # REMEMBER WHERE WE ARE # 01802 M01S01633.fsedata +++| POSN; # SEARCH FOR THAT LINE # 01803 M01S01634.fsedata +++| LINPTR1=CURRENT-TOPF(FILNUM); 01804 M01S01635.fsedata +++| POP; 01805 M01S01636.fsedata +++| END 01806 M01S01637.fsedata +++| ELSE LINPTR1=TOKENVAL; 01807 M01S01638.fsedata +++| GOTO SLCUR2; # FOR MORE SYNTAX # 01808 M01S01639.fsedata +++| 01809 M01S01640.fsedata +++|SLLETTER: 01810 M01S01641.fsedata +++| FOR TMP1=0 STEP 1 UNTIL 5 DO 01811 M01S01642.fsedata +++| BEGIN 01812 M01S01643.fsedata +++| IF KEYWORD[KEYWDNDX] EQ LINEKEYWD[TMP1] 01813 M01S01644.fsedata +++| THEN GOTO SLKEYSW[TMP1]; 01814 M01S01645.fsedata +++| END 01815 M01S01646.fsedata +++| 01816 M01S01647.fsedata +++|SLDONE:
Line S01648 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000046 |
Seq # *Modification Id* Act ----------------------------+ 01817 M02S01648.@000046 ---| IF TOKENTYPE EQ TYPST"PAREN" THEN GOTO SLPAREN; 01818 M01S00046.@000046 +++| IF TOKENTYPE EQ TYPST"PAREN" THEN GOTO SLPAREN; 01819 M01S00047.@000046 +++| 01820 M01S01649.fsedata +++| 01821 M01S01650.fsedata +++| POPTEMP; 01822 M01S01651.fsedata +++| IF WHICHLIN EQ 2 THEN 01823 M01S01652.fsedata +++| BEGIN 01824 M01S01653.fsedata +++| CHRPTR1 == CHRPTR2; 01825 M01S01654.fsedata +++| LINPTR1 == LINPTR2; 01826 M01S01655.fsedata +++| FILPTR1 == FILPTR2; 01827 M01S01656.fsedata +++| LINNUM1 == LINNUM2; 01828 M01S01657.fsedata +++| END 01829 M01S01658.fsedata +++| ELSE IF WHICHLIN EQ 3 THEN 01830 M01S01659.fsedata +++| BEGIN 01831 M01S01660.fsedata +++| CHRPTR1 == CHRPTR3; 01832 M01S01661.fsedata +++| LINPTR1 == LINPTR3; 01833 M01S01662.fsedata +++| FILPTR1 == FILPTR3; 01834 M01S01663.fsedata +++| LINNUM1 == LINNUM3; 01835 M01S01664.fsedata +++| END 01836 M01S01665.fsedata +++| WHICHLIN=WHICHLIN+1; 01837 M01S01666.fsedata +++| WHICHDGT=WHICHLIN; 01838 M01S01667.fsedata +++| 01839 M01S00048.@000046 +++| IORET; 01840 M01S00049.@000046 +++| 01841 M01S00050.@000046 +++|SLERROR: 01842 M01S00051.@000046 +++| ERRSTRING = " POINTER NOT SET IN FILE "; 01843 M01S00052.@000046 +++| C<26,07>ERRSTRING = C<0,7>READNAM; 01844 M01S00053.@000046 +++| C<00,01>ERRSTRING = TMP1; 01845 M01S00054.@000046 +++| C<33,01>ERRSTRING = "$"; 01846 M01S00055.@000046 +++| TOKENPOS = ORIGSCNLIN; 01847 M01S00056.@000046 +++| ERRJUMP (ERRSTRING); 01848 M01S01668.fsedata +++| 01849 M01S01669.fsedata +++|IOEND # OF SCNLIN # 01850 M01S01670.fsedata +++|PAGE # SCANSET - FOR "SET" COMMAND # 01851 M01S01671.fsedata +++| 01852 M01S01672.fsedata +++| 01853 M01S01673.fsedata +++|PROC SCANSET; 01854 M01S01674.fsedata +++| IOBEGIN(SCANSET) 01855 M01S01675.fsedata +++|# 01856 M01S01676.fsedata +++|** SCANSET - SCAN SYNTAX OF SET SUBCOMMANDS. 01857 M01S01677.fsedata +++|* 01858 M01S01678.fsedata +++|* SCANSET IS CALLED WHEN THE SET COMMAND VERB HAS BEEN 01859 M01S01679.fsedata +++|* RECOGNIZED. THIS ROUTINE DETERMINES THE SUBCOMMAND, THEN 01860 M01S01680.fsedata +++|* SCANS SUB-SYNTAX AS APPROPRIATE AND PERFORMS ALL 01861 M01S01681.fsedata +++|* SUBCOMMAND EXECUTION. 01862 M01S01682.fsedata +++|* 01863 M01S01683.fsedata +++|* ENTRY SCANPOS, TOKENPOS - IDENTIFY SUBCOMMAND SYNTAX. 01864 M01S01684.fsedata +++|* 01865 M01S01685.fsedata +++|* EXIT COMMAND FULLY EXECUTED. 01866 M01S01686.fsedata +++|* VIA QQSINGLE IN MULTI-USER VERSION FOR TRANSITION 01867 M01S01687.fsedata +++|* TO SINGLE-USER WITH RE-EXECUTION. 01868 M01S01688.fsedata +++|* SCANPOS, TOKENPOS - ADVANCED BEYOND END OF COMMAND. 01869 M01S01689.fsedata +++|* SCANNER MAY BE CALLED FOR SOME SUBCOMMANDS. 01870 M01S01690.fsedata +++|* SETMARK POSSIBLY CALLED. 01871 M01S01691.fsedata +++|* SCREEN MODE INITIALIZATION POSSIBLE. 01872 M01S01692.fsedata +++|* TABVECTOR POSSIBLY SETUP. 01873 M01S01693.fsedata +++|* X,Y,Z REGISTER POSSIBLY SETUP. 01874 M01S01694.fsedata +++|* CURRENT FILE POSSIBLY RENAMED. 01875 M01S01695.fsedata +++|* TABCHAR POSSIBLY SETUP. 01876 M01S01696.fsedata +++|* INCR, DINCR - POSSIBLY SETUP. 01877 M01S01697.fsedata +++|* SCANKEY POSSIBLY CALLED. 01878 M01S01698.fsedata +++|* FLOAT, NUMBERED[CURFILE] - POSSIBLY REDEFINED. 01879 M01S01699.fsedata +++|* FKEYNUMROW - POSSIBLY REDEFINED. 01880 M01S01700.fsedata +++|* CHARRANGE - POSSIBLY DEFINED. 01881 M01S01701.fsedata +++|* AUDITOFF - POSSIBLY REDEFINED. 01882 M01S01702.fsedata +++|* USRUMLIN, USRNUMCOL, EDITFIELD, USRSPLTSIZ - 01883 M01S01703.fsedata +++|* POSSIBLY REDEFINED. 01884 M01S01704.fsedata +++|* WIDTH - POSSIBLY REDEFINED. 01885 M01S01705.fsedata +++|*
Line S01706 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000022 |
Seq # *Modification Id* Act ----------------------------+ 01886 M02S01706.@000022 ---|* CALLS TOKEN, ERRJUMP, SCNEOC, CLEARSCREEN, SCANNER, SETMARK,
Line S01707 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000022 |
Seq # *Modification Id* Act ----------------------------+ 01887 M02S01707.@000022 ---|* SCNEQNAM, VDTGTA, TTSYNC, VDTGTM, VDTSTM, COPYTABS,
Line S01708 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000022 |
Seq # *Modification Id* Act ----------------------------+ 01888 M02S01708.@000022 ---|* SETUPSCREEN, SCNLSTCOL, SCNCHAR,
Line S01709 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000022 |
Seq # *Modification Id* Act ----------------------------+ 01889 M02S01709.@000022 ---|* SCNEQVAL, SCANFUNC, SCNONOFF, AUDITEND, MIN, MAX,
Line S01710 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000022 |
Seq # *Modification Id* Act ----------------------------+ 01890 M02S01710.@000022 ---|* PAINTALL. 01891 M01S00001.@000022 +++|* CALLS AUDITEND, CLEARSCREEN, COPYTABS, ERRJUMP, FSEEDIT, 01892 M01S00002.@000022 +++|* MIN, MAX, PAINTALL, SCANFUNC, SCANNER, SCNCHAR, 01893 M01S00003.@000022 +++|* SCNEOC, SCNEQNAM, SCNEQVAL, SCNLSTCOL, SCNONOFF, 01894 M01S00004.@000022 +++|* SETMARK, SETUPSCREEN, TOKEN, TTSYNC, VDTGTA,
Line S00005 Modification History | |
---|---|
M01 (Yanked) (Added by) | @000022 |
M02 (Yanked) (Updated by) | @000033 |
Seq # *Modification Id* Act ----------------------------+ 01895 M02S00005.@000033 ---|* VDTGTD, VDTGTM, VDTSTM. 01896 M01S00002.@000033 +++|* VDTSTD, VDTSTM. 01897 M01S01711.fsedata +++|* 01898 M01S01712.fsedata +++|* USES KEYWDTYPE, ALL TOKENXXXX VARIABLES, LINPTR1, 01899 M01S01713.fsedata +++|* LINPTR2, LINCTR, VTMODEL, LINPTR3, LINNUM1, LINNUM2, 01900 M01S01714.fsedata +++|* READNAM, KEYWDNDX, WHICHDGT. 01901 M01S01715.fsedata +++|# 01902 M01S01716.fsedata +++| 01903 M01S01717.fsedata +++| CONTROL IFEQ MULTI,1; 01904 M01S01718.fsedata +++| XREF LABEL QQSINGLE; 01905 M01S01719.fsedata +++| CONTROL FI; 01906 M01S01720.fsedata +++| 01907 M01S01721.fsedata +++| ITEM TMP1, TMP2, BOOL B, TMPNAM C(7); 01908 M01S01722.fsedata +++|
Line S01723 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000049 |
Seq # *Modification Id* Act ----------------------------+ 01909 M02S01723.@000049 ---| DEF NUMSETKEYS #17#;
Line S01724 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000049 |
Seq # *Modification Id* Act ----------------------------+ 01910 M02S01724.@000049 ---| ARRAY SETKEYS[0:NUMSETKEYS]; ITEM SETKEY C(0,0,10) = [
Line S01725 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000049 |
Seq # *Modification Id* Act ----------------------------+ 01911 M02S01725.@000049 ---| "ANNOUNCE", "CHAR", "FILENAME", "HEADER", "INCREMENT", "KEY",
Line S01726 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000049 |
Seq # *Modification Id* Act ----------------------------+ 01912 M02S01726.@000049 ---| "LINE", "MARK", "NUMBER", "PROMPT", "SCREEN", "TABS", "UNDO",
Line S01727 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000049 |
Seq # *Modification Id* Act ----------------------------+ 01913 M02S01727.@000049 ---| "VIEW", "WORD", "X", "Y", "Z" ];
Line S01728 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000049 |
Seq # *Modification Id* Act ----------------------------+ 01914 M02S01728.@000049 ---|
Line S01729 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000049 |
Seq # *Modification Id* Act ----------------------------+ 01915 M02S01729.@000049 ---| SWITCH SETSW SSANNOUNCE, SSCHAR, SSFILE, SSHEADER, SSINCR,
Line S01730 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000049 |
Seq # *Modification Id* Act ----------------------------+ 01916 M02S01730.@000049 ---| SSKEY, SSLINE, SSMARK, SSNUMBER, SSPROMPT, SSSCREEN, SSTABS,
Line S01731 Modification History | |
---|---|
M01 (Added by) | fsedata |
M02 (Yanked) (Updated by) | @000049 |
Seq # *Modification Id* Act ----------------------------+ 01917 M02S01731.@000049 ---| SSUNDO, SSVIEW, SSWORD, SSX, SSY, SSZ;
Line S00001 Modification History | |
---|---|
M01 (Yanked) (Added by) | @000049 |
M02 (Yanked) (Updated by) | @000066 |
Seq # *Modification Id* Act ----------------------------+ 01918 M02S00001.@000066 ---| DEF NUMSETKEYS #20#; 01919 M01S00001.@000066 +++| DEF NUMSETKEYS #21#; 01920 M01S00002.@000049 +++| ARRAY SETKEYS[0:NUMSETKEYS]; ITEM SETKEY C(0,0,10) = [
Line S00003 Modification History | |
---|---|
M01 (Yanked) (Added by) | @000049 |
M02 (Yanked) (Updated by) | @000066 |
Seq # *Modification Id* Act ----------------------------+ 01921 M02S00003.@000066 ---| "ANNOUNCE", "CHAR", "DCOLON", "FILENAME", "HEADER", "INCREMENT",
Line S00004 Modification History | |
---|---|
M01 (Yanked) (Added by) | @000049 |
M02 (Yanked) (Updated by) | @000066 |
Seq # *Modification Id* Act ----------------------------+ 01922 M02S00004.@000066 ---| "JUMP", "KEY", "LINE", "MARK", "NUMBER", "PROMPT", "REWRITE",
Line S00005 Modification History | |
---|---|
M01 (Yanked) (Added by) | @000049 |
M02 (Yanked) (Updated by) | @000066 |
Seq # *Modification Id* Act ----------------------------+ 01923 M02S00005.@000066 ---| "SCREEN", "TABS", "UNDO", "VIEW", "WORD", "X", "Y", "Z" ]; 01924 M01S00002.@000066 +++| "ANNOUNCE", "CHAR", "DCOLON", "ECHO", "FILENAME", 01925 M01S00003.@000066 +++| "HEADER", "INCREMENT", "JUMP", "KEY", "LINE", "MARK", 01926 M01S00004.@000066 +++| "NUMBER", "PROMPT", "REWRITE", "SCREEN", "TABS", 01927 M01S00005.@000066 +++| "UNDO", "VIEW", "WORD", "X", "Y", "Z" ]; 01928 M01S00006.@000049 +++|
Line S00007 Modification History | |
---|---|
M01 (Yanked) (Added by) | @000049 |
M02 (Yanked) (Updated by) | @000066 |
Seq # *Modification Id* Act ----------------------------+ 01929 M02S00007.@000066 ---| SWITCH SETSW SSANNOUNCE, SSCHAR, SSDORAC, SSFILE, SSHEADER, SSINCR,
Line S00008 Modification History | |
---|---|
M01 (Yanked) (Added by) | @000049 |
M02 (Yanked) (Updated by) | @000066 |
Seq # *Modification Id* Act ----------------------------+ 01930 M02S00008.@000066 ---| SSJUMP, SSKEY, SSLINE, SSMARK, SSNUMBER, SSPROMPT, SSREWRITE,
Line S00009 Modification History | |
---|---|
M01 (Yanked) (Added by) | @000049 |
M02 (Yanked) (Updated by) | @000066 |
Seq # *Modification Id* Act ----------------------------+ 01931 M02S00009.@000066 ---| SSSCREEN, SSTABS, SSUNDO, SSVIEW, SSWORD, SSX, SSY, SSZ; 01932 M01S00006.@000066 +++| SWITCH SETSW SSANNOUNCE, SSCHAR, SSDORAC, SSECHO, SSFILE, 01933 M01S00007.@000066 +++| SSHEADER, SSINCR, SSJUMP, SSKEY, SSLINE, SSMARK, 01934 M01S00008.@000066 +++| SSNUMBER, SSPROMPT, SSREWRITE, SSSCREEN, SSTABS, 01935 M01S00009.@000066 +++| SSUNDO, SSVIEW, SSWORD, SSX, SSY, SSZ; 01936 M01S01732.fsedata +++| 01937 M01S01733.fsedata +++| 01938 M01S01734.fsedata +++| KEYWDTYPE=3; 01939 M01S01735.fsedata +++| SCANPOS=TOKENPOS; 01940 M01S01736.fsedata +++| TOKEN; 01941 M01S01737.fsedata +++| IF TOKENTYPE NQ TYPST"LETTER" THEN 01942 M01S01738.fsedata +++| BEGIN 01943 M01S01739.fsedata +++| ERRJUMP("KEYWORD MUST FOLLOW SET$"); 01944 M01S01740.fsedata +++| END 01945 M01S01741.fsedata +++| TMP1=-1; 01946 M01S01742.fsedata +++| FOR TMP2=0 STEP 1 UNTIL NUMSETKEYS DO 01947 M01S01743.fsedata +++| BEGIN 01948 M01S01744.fsedata +++| IF KEYWORD[KEYWDNDX] EQ SETKEY[TMP2] THEN TMP1=TMP2; 01949 M01S01745.fsedata +++| END 01950 M01S01746.fsedata +++| IF TMP1 LS 0 THEN ERRJUMP("KEYWORD MUST FOLLOW SET$"); 01951 M01S01747.fsedata +++| TOKEN; 01952 M01S01748.fsedata +++| GOTO SETSW[TMP1]; 01953 M01S01749.fsedata +++| 01954 M01S00010.@000049 +++|SSDORAC: # *DC* OR ASCII COLONS ON EXIT # 01955 M01S00011.@000049 +++| SCNONOFF(BOOL); 01956 M01S00012.@000049 +++| SCNEOC; 01957 M01S00013.@000049 +++| ZEROCOLOUT = BOOL; # DO AS USER ASKS # 01958 M01S00014.@000049 +++| ZEROCOLASK = TRUE; # COLON QUESTION "ASKED" # 01959 M01S00015.@000049 +++| GOTO SSDONE; 01960 M01S00016.@000049 +++| 01961 M01S00010.@000066 +++|SSECHO: # SET ECHO ON OR OFF # 01962 M01S00011.@000066 +++| SCNONOFF(BOOL); 01963 M01S00012.@000066 +++| SCNEOC; 01964 M01S00013.@000066 +++| ECHOOFF = NOT BOOL; # SET ECHO ON OR OFF # 01965 M01S00014.@000066 +++| GOTO SSDONE; 01966 M01S00015.@000066 +++| 01967 M01S00017.@000049 +++|SSJUMP: # AUTO INDENT, BLOCK LANGUAGES # 01968 M01S00018.@000049 +++| SCNONOFF(BOOL); 01969 M01S00019.@000049 +++| SCNEOC; 01970 M01S00020.@000049 +++| AUTOINDENT = BOOL; # DO AS USER ASKS # 01971 M01S00021.@000049 +++| GOTO SSDONE; 01972 M01S00022.@000049 +++| 01973 M01S00023.@000049 +++|SSREWRITE: # SET REWRITE (CHANGED FLAG) # 01974 M01S00024.@000049 +++| SCNONOFF(BOOL); 01975 M01S00025.@000049 +++| SCNEOC; 01976 M01S00026.@000049 +++| IF LOCKED[CURFILE] EQ 0 THEN 01977 M01S00027.@000049 +++| BEGIN # IF FILE IS NOT LOCKED # 01978 M01S00028.@000049 +++| IF BOOL THEN 01979 M01S00029.@000049 +++| BEGIN # IF USER WANTS CHANGED # 01980 M01S00030.@000049 +++| CHANGED[CURFILE] = 1; 01981 M01S00031.@000049 +++| IF FILENAM[1] EQ FILENAM[2] THEN 01982 M01S00032.@000049 +++| BEGIN # IF SAME FILE IN BOTH SPLITS # 01983 M01S00033.@000049 +++| CHANGED[1] = 1; 01984 M01S00034.@000049 +++| CHANGED[2] = 1; 01985 M01S00035.@000049 +++| END 01986 M01S00036.@000049 +++| END 01987 M01S00037.@000049 +++| ELSE 01988 M01S00038.@000049 +++| BEGIN # CLEAR CHANGED STATUS # 01989 M01S00039.@000049 +++| CHANGED[CURFILE] = 0; 01990 M01S00040.@000049 +++| IF FILENAM[1] EQ FILENAM[2] THEN 01991 M01S00041.@000049 +++| BEGIN # IF SAME FILE IN BOTH SPLITS # 01992 M01S00042.@000049 +++| CHANGED[1] = 0; 01993 M01S00043.@000049 +++| CHANGED[2] = 0; 01994 M01S00044.@000049 +++| END 01995 M01S00045.@000049 +++| END 01996 M01S00046.@000049 +++| END 01997 M01S00047.@000049 +++| ELSE 01998 M01S00048.@000049 +++| BEGIN # LOCKED FILE, REJECT CHANGE # 01999 M01S00049.@000049 +++| IF BOOL THEN ERRJUMP("CANNOT CHANGE READ-ONLY FILE$");
Proceed to Part 1
cdc/nos2.source/opl.opl871/deck/fsedata.txt ยท Last modified: by 127.0.0.1