#REM DataFlex standard macro's copywrite (c) 1983, Data Access Corporation #REM this is the file that defines the commands in 2.00 #REM IT MUST BE PACKED INTO FLEX.CFL WITH THE COMMAND #REM "PACK FMAC" #REM 2/16/84 - RUN$ #REM 2/15/84 - TAKE GOSUB OUT OF ENTERGROUP #REM 2/10/84 - ENTDISPLAY #REM 2/8/84 - MORE ON ENT$QUERY #REM 2/7/84 - SYSDATE AND OS$CALL #REM 1/19/84 - INDICATE NOT #REM 1/3/84 - ENT$QUERY #REM 12/20/83 - SETSCHANGE #REM 11/1/83 - #POP / SCREENMODE #REM 9/9/83 - FINAL 2.0 #REM 9/1/83 - FILELIST$PUT #REM general format of an icode line: #REM !A [] $000 ARG1 ARG2 #REM !A Generates the next line number. #REM [] is a place holder for the indicators #REM $000 is a hex number that calls the appropriate pascal routine. #REM arg1, arg2 - two arguments of any type/class #REM can be passed to the routine. #REM FLEX$INIT - STANDARD REPLACES #REM THESE ARE THE STANDARD SYMBOLS THAT ARE REQUIRED FOR #REM THE COMPILER. #REM THIS PROCEDURE WILL BE AUTOMATICLY EXECUTED #REM WHEN THE COMPILER STARTS. #COMMAND FLEX$INIT #REPLACE CALCULATE MOVENUM #REPLACE CALC MOVENUM #REPLACE LT $0 // INTERNAL VALUE FOR THE FIND/INDICATE MODES. #REPLACE LE $1 #REPLACE EQ $2 #REPLACE GE $3 #REPLACE GT $4 #REPLACE NE $5 #REPLACE TRUE $1 #REPLACE FALSE $0 #REPLACE NOT ~ #SET C$ 10 #REPLACE IN$0 $4000 #REPLACE IN$1 $4004 #REPLACE IN$2 $4008 #REPLACE IN$3 $400C #REPLACE IN$4 $4010 #REPLACE IN$5 $4014 #REPLACE IN$GLANY |0 #REPLACE IN$GLALL |4 #REPLACE IN$GRANY |0 #REPLACE IN$GRALL |2 #REPLACE IN$GMOR |0 #REPLACE IN$GMAND |1 #REPLACE ERR |127 #REPLACE FINDERR |126 #REPLACE SEQEOF |125 #REPLACE SEQEOL |121 #REPLACE MULTIUSER |120 #REPLACE FIELDINDEX |VI1 #REPLACE WINDOWINDEX |VI2 #REPLACE LASTERR |VI5 #REPLACE KEYPRESS |123 #REPLACE TERMCHAR |VI3 #REPLACE FLEXKEY |VI4 #REPLACE SCREENEND |VI17 #REPLACE MEMAVAIL |VI18 #REPLACE LASTENTRY |VI19 #REPLACE KEY.RETURN |101 #REPLACE KEY.ESCAPE |103 #REPLACE KEY.FIELD |106 #REPLACE KEY.FIND |107 #REPLACE KEY.SFIND |108 #REPLACE KEY.SAVE |109 #REPLACE KEY.DELETE |110 #REPLACE KEY.CLEAR |113 #REPLACE KEY.USER |112 #REPLACE KEY.NEXT |115 #REPLACE KEY.PREVIOUS |114 #REPLACE KEY.UP |116 #REPLACE KEY.DOWN |117 #REPLACE KEY.HELP |118 #REPLACE NUMPAGE |VI28 #REPLACE NUMWINDOW |VI29 #REPLACE #$ #SET F$ 1 #REPLACE FOUND |254 #REPLACE STRMARK |VI12 #REPLACE STRLEN |VI13 // ENTER & REPORT DEF'S #REPLACE LINECOUNT |VI10 #REPLACE PAGECOUNT |VI11 #REPLACE PAGEEND |VI25 #REPLACE PAGEFEED |VI26 #SET D$ 80 #SET P$ 0 #REPLACE AUTOFIND $C000 #REPLACE FINDREQ $C001 #REPLACE NOPUT $C002 #REPLACE NOENTER $C003 #REPLACE SKIPFOUND $C004 #REPLACE RETAINALL $C005 #REPLACE RETAIN $C006 #REPLACE FORCEPUT $C007 #REPLACE DISPLAYONLY $C002,$C003 #REPLACE CAPSLOCK $C023 #REPLACE SUPPRESS $C040='' #REPLACE FLOAT$ $C026 #REPLACE UPPER $C023 #REPLACE SIGNRT $C027 #REPLACE CHECK $C012 #REPLACE RANGE $C013 #REPLACE REQUIRED $C022 #REPLACE PAGEBREAK |124 #REPLACE FILL $C040 #REPLACE POINTS $C080 #REPLACE FILENUMBER |VI15 #REPLACE ENT$PERMISSIVE |10 #REPLACE INDEX.1 |CI1 // THE INDEXES ARE JUST INTEGERS. #REPLACE INDEX.2 |CI2 #REPLACE INDEX.3 |CI3 #REPLACE INDEX.4 |CI4 #REPLACE INDEX.5 |CI5 #REPLACE INDEX.6 |CI6 #REPLACE INDEX.7 |CI7 #REPLACE INDEX.8 |CI8 #REPLACE INDEX.9 |CI9 #REPLACE INDEX.10 |CI10 #REPLACE INDEX.BATCH |CI5 #REPLACE RECNUM |CI0 #INCLUDE FORMTAG.TMP #NOISY 0 #ENDCOMMAND #REM move #REM The type of a move is deturmined at compile time based on the #rem type of the destination. The move type refers to the intermediate #REM value to which the source will be converted. // MOVE STRING WILL CONVERT THE TYPE OF // WINDOW'S TO STRING FOR THE MOVE #COMMAND MOVESTR #ULG$ "TO" #UCLGR$ . !A [] $080 !1 !3 #ENDCOMMAND // movenum is calculate. #COMMAND MOVENUM #ULG "TO" #UCLGR . !A [] $081 !1 !3 #ENDCOMMAND #COMMAND MOVEINT %#GULD "TO" #UCSDEGR . !A [] $082 !1 !3 #ENDCOMMAND #COMMAND MOVEDATE %#ULI "TO" #UCSIEGR . !A [] $084 !1 !3 #ENDCOMMAND #COMMAND MOVE #GUL "TO" #UGRCL . #IFTYPE !3 "N" !A [] $081 !1 !3 #ELSE #IFTYPE !3 "D" !A [] $084 !1 !3 #ELSE #IFTYPE !3 "ILY" MOVEINT !1 TO !3 #ELSE !A [] $080 !1 !3 #ENDIF #ENDIF #ENDIF #ENDCOMMAND #COMMAND INCREMENT #LCNSFWGRU . !A [] $083 !1 |CI0 #ENDCOMMAND #REM control group #COMMAND ABORT . !A [] $040 #ENDCOMMAND #COMMAND GOTO RVFWSNDE#G . #IFDEF !1 !A [] $041 !1 #ELSE !A [] $041 |CL0 #FREF !1 !a #ENDIF #ENDCOMMAND #COMMAND GOSUB RVFWSNDE#G . #IFDEF !1 !A [] $042 !1 #ELSE !A [] $042 |CL0 #FREF !1 !a #ENDIF #ENDCOMMAND #COMMAND RETURN VFWSNDE#G . #IF !0=0 !A [] $043 |CL0 #ELSE #IFDEF !1 !A [] $043 !1 #ELSE !A [] $043 |CL0 #FREF !1 !a #ENDIF #ENDIF #ENDCOMMAND #COMMAND DEBUG . !A [] $044 #ENDCOMMAND #COMMAND ON R "GOTO""GOSUB" R #SET Q$ (!0-1) INDICATE OK$1 AS !1 GT 0 INDICATE OK$2 AS !1 LT !q #SET Q$ (!a+2) #IFSAME !2 GOTO !A [OK$1 OK$2] $041 |CE(!q+!1 ) #ELSE !A [OK$1 OK$2] $042 |CE(!q+!1 ) #ENDIF #SET Q$ (!a+!0) !A [] $041 |CL!q //ERROR JUMP AROUND GOTOS MULTI$ GOTO !3 !4 !5 !6 !7 !8 !9 #ENDCOMMAND #COMMAND ERROR #L%RGU #LUG . !A [] $047 !1 !2 #ENDCOMMAND #COMMAND CLEARWARNING . !A [] $048 #ENDCOMMAND #REM indicate #COMMAND INDICATE R #IFSAME !1 ~ #IFDEF !2 #ELSE #REPLACE !2 |!C #ENDIF INDICATE !2~ !3 !4 !5 !6 !7 !8 !9 #ELSE // #CHECK !2 "AS""STATUS""$0""$1""GROUP" #IFDEF !1 #CHECK !1 X #ELSE #REPLACE !1 |!C #ENDIF INDCT$!2 !1 !2 !3 !4 !5 !6 !7 !8 !9 #ENDIF #ENDCOMMAND #COMMAND INDCT$AS RX R #%UG "$0""$1""$2""$3""$4""$5""MATCH""IN" #%UGR . #IFSAME !4 MATCH !A [] $4031 !3 !5 !1 !6 #ELSE #IFSAME !4 IN !A [] $4030 !3 !5 !1 !6 #ELSE #CHECK !3 U #IFTYPE !3 "NDE" !A [] IN!4 !3 !5 !1 !6 |1 #ELSE #IFTYPE !3 "IL" !A [] IN!4 !3 !5 !1 !6 |2 #ELSE !A [] IN!4 !3 !5 !1 !6 |0 #ENDIF #ENDIF #ENDIF #ENDIF #ENDCOMMAND #COMMAND INDCT$GROUP XR "GROUP" R"ALL""ANY" CVFWSN#LRU "AND""OR""" "ANY""ALL""" CVFWSN#LU . #IF !0>4 #CHECK !7 R !A [] $4020 !4 !7 !1 IN$GL!3 IN$GR!6 IN$GM!5 #ELSE !A [] $4020 !4 |GB[0] !1 IN$GL!3 |3 #ENDIF #ENDCOMMAND #COMMAND INDCT$$1 RX R . !A [] $4028 |CI0 |CI0 !1~ !3 #ENDCOMMAND #COMMAND INDCT$$0 !A [] $4028 |CI0 |CI0 !1 !3 #ENDCOMMAND #COMMAND INDCT$STATUS R R #LWCV #IFDEF !3 !A [] $4029 !3 |CI0 !1 !4 #ELSE #CHECK !3.RECNUM U#LWCV !A [] $4029 !3.RECNUM |CI0 !1 !4 #ENDIF #ENDCOMMAND #REM declaration #COMMAND INDICATOR RT #REPLACE !1 |!C #IF (!0>1) INDICATOR !2 !3 !4 !5 !6 !7 !8 !9 #ENDIF #ENDCOMMAND #COMMAND NUMBER TR #NUM !V #REPLACE !1 |VN!v #IF (!0>1) NUMBER !2 !3 !4 !5 !6 !7 !8 !9 #ENDIF #ENDCOMMAND #COMMAND DATE TR #NUM !V #REPLACE !1 |VD!v #IF (!0>1) DATE !2 !3 !4 !5 !6 !7 !8 !9 #ENDIF #ENDCOMMAND #COMMAND STRING TR %#LWVFGSDU . #IF (!2>0) #STR !V !2 #ELSE #STR !V 80 #ENDIF #REPLACE !1 |VS!v #ENDCOMMAND #COMMAND INTEGER TR #REPLACE !1 |VI!D #IF (!0>1) INTEGER !2 !3 !4 !5 !6 !7 !8 !9 #ENDIF #ENDCOMMAND #REM console commands #COMMAND SHOW #ULRG$ !A [] $142 !1 #IF (!0>1) SHOW !2 !3 !4 !5 !6 !7 !8 !9 #ENDIF #ENDCOMMAND #COMMAND SHOWLN #LGU$ #IF (!0>0) SHOW !1 !2 !3 !4 !5 !6 !7 !8 !9 #ENDIF !A [] $143 #ENDCOMMAND #COMMAND GOTOXY %#USGL %#USGLR . !A [] $145 !1 !2 #ENDCOMMAND #COMMAND CLEARSCREEN . !A [] $144 #ENDCOMMAND #COMMAND STOP . !A [] $040 #ENDCOMMAND #COMMAND CLEARXY %#USGL %#USGLR . !A [] $146 !1 !2 #ENDCOMMAND #COMMAND INPUT #ULGR #LUG . #IFCLASS !1 C !A [] $142 !1 INPUT !2 !3 #ELSE #IF (!0>1) !A [] $140 !1 !2 #ELSE !A [] $140 !1 |CI79 #ENDIF #ENDIF #ENDCOMMAND #COMMAND KEYCHECK !A [] $046 #IF !0>0 [KEYPRESS] !1 !2 !3 !4 !5 !6 !7 !8 #ENDIF #ENDCOMMAND #COMMAND INKEY #LUCR . !A [] $147 !1 #ENDCOMMAND #COMMAND SCREENMODE #%LUGR !A [] $148 !1 #ENDCOMMAND #REM DBMS file commands #COMMAND OPEN TR %FWSNDELG#U . #INCLUDE !1.FD #CHECK !1.X URW#LG #IF (!0>1) !A [] $180 !1.X !2 #ELSE !A [] $180 !1.X |CI0 #ENDIF #ENDCOMMAND #COMMAND FIND "$0""$1""$2""$3""$4""$5" R "BY""" % . #IFCLASS !2 F #CHECK !2 U#LGWV #CHECK !3 . !A [] $0C0 !2 |CI!1 #ELSE #CHECK !2.X U#LGWV #CHECK !4 RUL#GVFW #SET Q$ !2.X #SET Y$ !4 !A [] $0C6 |FS!q.!y |CI!1 #ENDIF #ENDCOMMAND #COMMAND SAVE CVWR#LGR #IFDEF !1 !A [] $C5 !1 !A [] $C2 !1 #ELSE #CHECK !1.X CLVWLR#GU !A [] $C5 !1.X !A [] $C2 !1.X #ENDIF #IF !0>1 SAVE !2 !3 !4 !5 !6 !7 !8 !9 #ENDIF #ENDCOMMAND #COMMAND SAVERECORD CVWR#LGR #IFDEF !1 !A [] $C2 !1 #ELSE #CHECK !1.X CVWLR#GU !A [] $C2 !1.X #ENDIF #IF !0>1 SAVERECORD !2 !3 !4 !5 !6 !7 !8 !9 #ENDIF #ENDCOMMAND #COMMAND CLEAR CVWR#LGR #IFDEF !1 !A [] $C1 !1 #ELSE #CHECK !1.X CVWLR#GU !A [] $C1 !1.X #ENDIF #IF !0>1 CLEAR !2 !3 !4 !5 !6 !7 !8 !9 #ENDIF #ENDCOMMAND #COMMAND DELETE CVWR#LGR #IFDEF !1 !A [] $C3 !1 #ELSE #CHECK !1.X CVWLR#GU !A [] $C3 !1.X #ENDIF #IF !0>1 DELETE !2 !3 !4 !5 !6 !7 !8 !9 #ENDIF #ENDCOMMAND #COMMAND RELATE CVWR#LGR #IFDEF !1 !A [] $C4 !1 #ELSE #CHECK !1.X CVWLR#GU !A [] $C4 !1.X #ENDIF #IF !0>1 RELATE !2 !3 !4 !5 !6 !7 !8 !9 #ENDIF #ENDCOMMAND #COMMAND ATTACH CVWR#LGR #IFDEF !1 !A [] $C5 !1 #ELSE #CHECK !1.X CVWLR#GU !A [] $C5 !1.X #ENDIF #IF !0>1 ATTACH !2 !3 !4 !5 !6 !7 !8 !9 #ENDIF #ENDCOMMAND #COMMAND STATUS$ CVWR#LGR "TO" #LUGR #IFDEF !1 !A [] $304 !1 !3 #ELSE #CHECK !1.X CVWLR#GU !A [] $304 !1.X !3 #ENDIF #ENDCOMMAND #COMMAND ZEROFILE RT . #CHECK !1.X #SET Q$ !1.X !A [] $308 |CI!q #ENDCOMMAND #REM MULTIUSER COMMANDS. #COMMAND LOCK . !A [|120] $0C7 #ENDCOMMAND #COMMAND UNLOCK . !A [|120] $0C8 #ENDCOMMAND #COMMAND REREAD #IF !0=0 !A [|120] $0C9 #ELSE !A [|120] $0C7 RE$ !1 !2 !3 !4 !5 !6 !7 !8 !9 #ENDIF #ENDCOMMAND #COMMAND RE$ T // RE-FIND ALL FILES LISTED BE RECORD NUMBER IF MULTIUSER #CHECK !1.RECNUM RUW%G !A [|120] $C0 !1.RECNUM |CI2 // |120 IS MULTIUSER FLAG. #IF !0>1 RE$ !2 !3 !4 !5 !6 !7 !8 !9 #ENDIF #ENDCOMMAND #COMMAND IFCHANGE R R #IFDEF !1 #CHECK !1 RFCV%G !A [] $1C6 !1 #ELSE #CHECK !1.X RWCV%G !A [] $303 !1.X #ENDIF [|122] !2 !3 !4 !5 !6 !7 !8 !9 #ENDCOMMAND #COMMAND SETCHANGE RCVF%G . !A [] $1C7 !1 #ENDCOMMAND #REMIF & IF NOT #COMMAND IF R# R #IFSAME !1 ~ IFNOT !2 !3 !4 !5 !6 !7 !8 !9 #ELSE #IFSAME !1 STATUS INDICATE LASTIF STATUS !2 [LASTIF] !3 !4 !5 !6 !7 !8 !9 #ELSE INDICATE LASTIF AS !1 !2 !3 [LASTIF] !4 !5 !6 !7 !8 !9 #ENDIF #ENDIF #ENDCOMMAND #COMMAND IFNOT R# R #IFSAME !1 ~ IF !2 !3 !4 !5 !6 !7 !8 !9 #ELSE #IFSAME !1 STATUS INDICATE LASTIF STATUS !2 [NOT LASTIF] !3 !4 !5 !6 !7 !8 !9 #ELSE INDICATE LASTIF AS !1 !2 !3 [NOT LASTIF] !4 !5 !6 !7 !8 !9 #ENDIF #ENDIF #ENDCOMMAND #REM structured statements #COMMAND UNTIL #LUG LUG #LUG . #POP S$ #IFCLASS !1 $0123456789 [!1 !2 !3] GOTO BEGIN$!s #ELSE IFNOT !1 !2 !3 GOTO BEGIN$!s #ENDIF #$ END$!s: #ENDCOMMAND #COMMAND LOOP . #POP S$ #CHECK BEGIN$!s RVFWSNDEU !A [] $041 BEGIN$!s #$ END$!s: #ENDCOMMAND #COMMAND WHILE #LUG LUG #LUG #PUSH !R GOTO WHILE$!r #$ !A 0 0 0 $041 |CI!a #FREF END$!r !a #$ WHILE$!r: #$ BEGIN$!r: #IFCLASS !1 $0123456789 #$ [!1 !2 !3] GOTO END$!r #ELSE #$ IFNOT !1 !2 !3 GOTO END$!r #ENDIF #ENDCOMMAND #COMMAND BEGIN . #PUSH !R GOTO BEGIN$!r #$ !A 0 0 0 $041 |CI!a #FREF END$!r !a #$ BEGIN$!r: #ENDCOMMAND #COMMAND REPEAT . #PUSH !R GOTO BEGIN$!r #$ !A 0 0 0 $041 |CI!a #FREF END$!r !a #$ WHILE#!r: #$ BEGIN$!r: #ENDCOMMAND #COMMAND FOR CFWGSNR#LU "FROM" %UGLR# "TO""" %UGL# #PUSH !R MOVEINT !3 TO !1 GOTO FOR$!r #$ !A 0 0 0 $041 |CI!a #FREF END$!r !a #$ BEGIN$!r: #$ WHILE$!r: #IF !0=3 #$ !A [] $083 !1 #ELSE #$ !A [] $083 !1 !5 #$ [|122] GOTO END$!r #ENDIF #$ FOR$!r: #ENDCOMMAND #COMMAND END . #POP S$ #IFDEF WHILE$!s !A [] $041 WHILE$!s #ENDIF #$ END$!s: #ENDCOMMAND #REM seq i/o group #COMMAND OUTFILE NDIELU#G . !A [] $200 !1 #ENDCOMMAND #COMMAND OUTPUT TR . #CHECK !1.N #LUGFV !A [] $202 !1.N #ENDCOMMAND #COMMAND OUTCLOSE . OUTFILE 'CON:' #ENDCOMMAND #COMMAND DIRECT_INPUT DNEL#LGU . !A [] $100 !1 #ENDCOMMAND #COMMAND DIRECT_OUTPUT DNEL#LGU . !A [] $101 !1 #ENDCOMMAND #COMMAND CLOSE_INPUT . !A [] $100 |CS'CON:' #ENDCOMMAND #COMMAND CLOSE_OUTPUT . !A [] $101 |CS'LST:' #ENDCOMMAND #COMMAND READLN UCEL#G #IF !0=0 !A [] $104 |CS'' #ENDIF #IF !0=1 !A [] $104 !1 #ENDIF #IF !0>1 !A [] $108 !1 READLN !2 !3 !4 !5 !6 !7 !8 !9 #ENDIF #ENDCOMMAND #COMMAND READ UCEL#GR !A [] $108 !1 #IF !0>1 READ !2 !3 !4 !5 !6 !7 !8 !9 #ENDIF #ENDCOMMAND #COMMAND WRITE U#LGR$ !A [] $106 !1 #IF (!0>1) WRITE !2 !3 !4 !5 !6 !7 !8 !9 #ENDIF #ENDCOMMAND #COMMAND WRITELN U#LG #IF (!0>0) WRITE !1 !2 !3 !4 !5 !6 !7 !8 !9 #ENDIF !A [] $107 #ENDCOMMAND #REM form commands #COMMAND AUTOPAGE T %USNVL# . #CHECK !1.N WFVSG#LU #SET F$ !1.N #SET E$ !2 #IF !e>0 #SET E$ !e-1 #ENDIF #ENDCOMMAND #REM THE AUTO COMMANDS ARE USED INTERNALY TO GENERATE THE #REM NEXT AUTOPAGE WINDOW NUMBER. #COMMAND AUTO4$ !1 !2 !3 !4.!E #CHECK !4.!e RUCVF#L #ENDCOMMAND #COMMAND AUTO2$ !1 !2.!E !3 !4 !5 #CHECK !2.!e RUCVF#L #ENDCOMMAND #COMMAND AUTO3$ !1 !2 !3.!E !4 !5 #CHECK !3.!e RUCVF#L #ENDCOMMAND #COMMAND NAME R#L T #IFDEF !1 #REPLACE !2 !1 #CHECK !3 . #ELSE #IFCLASS !1.1 W AUTOPAGE !1 #ELSE AUTO3$ #REPLACE !1 PAGE!f #ENDIF #IF !0>1 NAME !2 !3 !4 !5 !6 !7 !8 !9 #ENDIF #ENDIF #ENDCOMMAND #COMMAND PAGE T . #CHECK !1.N RU#LG !A [] $1C0 !1.N #ENDCOMMAND #COMMAND ACCEPT #LG #LG #LGUC . #IF !0=0 AUTO2$ ACCEPT PAGE!f #ENDIF #IF !0=1 #CHECK !1 CVF !A [] $1C1 !1 |CI0 #ENDIF #IF !0=2 #CHECK !1 "TO" AUTO2$ ACCEPT PAGE!f TO !2 #ENDIF #IF !0=3 #CHECK !1 CVF #CHECK !2 "TO" !A [] $1C1 !1 !3 #ENDIF #ENDCOMMAND #COMMAND DISPLAY RUG#L "TO""" CVFG#LU #IFSAME !2 TO !A [] $1C2 !1 !3 #ELSE AUTO4$ DISPLAY !1 TO PAGE!f #ENDIF #ENDCOMMAND #COMMAND CLEARFORM %CVFG#L "THRU""THROUGH""" %CVFG#LU . #IF !0>0 #IFDEF !1 !A [] $1C3 !1 !3 |CI0 #ELSE #CHECK !1.N R#LGVU !A [] $1C3 !1.N |CI0 #ENDIF #ELSE !A [] $1C3 |CI0 #ENDIF #ENDCOMMAND #COMMAND BLANKFORM %CVFG#L "THRU""THROUGH""" %CVFG#LU . #IF !0>0 #IFDEF !1 !A [] $1C4 !1 !3 #ELSE #CHECK !1.N #RLGVU !A [] $1C4 !1.N #ENDIF #ELSE !A [] $1C4 |CI0 #ENDIF #ENDCOMMAND #COMMAND HELP T . #IF !0>0 #CHECK !1.N U !A [] $1C5 !1.N #ELSE !A [] $1C5 |CI0 #ENDIF #ENDCOMMAND #COMMAND CHAIN RNELIG#LU . !A [] $045 !1 #ENDCOMMAND #REMstring group #COMMAND PAD #ULG$ "TO" #ULGRC L%# . #IF !0>3 !A [] $082 !4 STRMARK #ENDIF !A [] $240 !1 !3 #ENDCOMMAND #COMMAND POS #UGRL$ "IN" #UGRL$ #L% #L% . !A [] $244 !1 !3 #IF !0>3 #CHECK !4 "TO" !A [] $082 STRMARK !5 #ENDIF #ENDCOMMAND #COMMAND LEFT #UGRL$ "TO" #UGRLC L#% . #IF !0>3 !A [] $082 !4 STRMARK #ENDIF !A [] $241 !1 !3 #ENDCOMMAND #COMMAND RIGHT #UGRL$ "TO" #UGRLC L#% . #IF !0>3 !A [] $082 !4 STRLEN #ENDIF !A [] $242 !1 !3 #ENDCOMMAND #COMMAND MID #UGRL$ "TO" #UGRLC #L%U #L% . #IF !0>4 !A [] $082 !5 STRMARK #ENDIF !A [] $082 !4 STRLEN !A [] $245 !1 !3 #ENDCOMMAND #COMMAND APPEND #LGULC$ #LGULR$ !A [] $243 !1 !2 #IF !0>2 APPEND !1 !3 !4 !5 !6 !7 !8 !9 #ENDIF #ENDCOMMAND #COMMAND ASCII #GRLU "TO" #UGRLC . !A [] $247 !1 !3 #ENDCOMMAND #COMMAND CHARACTER #%GULD "TO" #GRULC . !A [] $248 !1 !3 #ENDCOMMAND #COMMAND UPPERCASE C#LUGRND$ "TO""" C#LUG$ND . #IF !0>1 !A [] $249 !1 !3 #ELSE !A [] $249 !1 !1 #ENDIF #ENDCOMMAND #COMMAND LENGTH #LRUG$ "TO" C#LRUG . !A [] $246 !1 !3 #ENDCOMMAND #COMMAND CMDLINE #RLUG . !A [] $24A !1 |CS'' #ENDCOMMAND #COMMAND TRIM #LRUG$ "TO" C#LRUG . // REMOVCE PRE AND TRAILING SPACES !A [] $24B !1 !3 #ENDCOMMAND #REM enter #COMMAND ENTRY RWV#LUG UVC#LF UFVW#BC #IF !0=1 AUTO3$ ENTRY !1 PAGE!f #ELSE #IFTYPE !2 O AUTO3$ ENTRY !1 PAGE!f !2 #ELSE #CHECK !2 RVC%L #IFTYPE !1 E !A [] $8000 !1 !2 {$C002,$C003 !3 #ELSE !A [] $8000 !1 !2 !3 #ENDIF #ENDIF #ENDIF #ENDCOMMAND #REM ENTUPDATE MOVES ALL CHANGES WINDOWS FROM THE #REM WINDOW BUFFER TO THE RECORD BUFFER. #COMMAND ENTUPDATE VW#L . #IF !0>0 !A [] $280 !1 #ELSE !A [] $280 |CI0 #ENDIF #ENDCOMMAND #REM ENTFIND FINDS A RECORD BASED ON THE FILE/FIELD OF THE LAST EXECUTED #REM ENTRY COMMAND AND DISPLAYS THE RESULTS ON A FIND. THE FIND MODE #REM IS THE ONLY ARGUMENT. #REM ENTFIND ALSO MAINTAINS THE ENT$QUERY INDICATOR. #COMMAND ENTFIND "$0""$1""$2""$3""$4""$5" !A [] $281 |CI!1 #ENDCOMMAND #REM ENTSFIND (SUPPERFIND) FINDS A RECORD IN THE MAIN FILE BASED ON THE #REM FILE/FIELD OF THE LAST ENTRY COMMAND AND DISPLAYS THE RESULTS. #REM THIS DEPENDS ON THE MAIN FILE NUMBER BEING IN SYSINT 8 (|VI8). #COMMAND ENTSFIND "$0""$1""$2""$3""$4""$5" . !A [] $282 |CI!1 #ENDCOMMAND #COMMAND ENTDISPLAY CVWG#LR . // DIPSPLAY ALL ENTRIES FOR A FILE RELATE !1 !A [] $283 #ENDCOMMAND #REM ENTERMODE DEFINES THE TOP OF THE ENTRY SECTION. #COMMAND ENTERMODE . !A [] $082 |CI!a |VI14 !A [] $286 #ENDCOMMAND #REM ENTAGAIN CAN ONLY BE USED IN A KEY PROCEDURE, IT RETURNS TO THE #REM SAME WINDOW (COMMAND) THAT CALLED THE KEY PROCEDURE. #COMMAND ENTAGAIN . !A [] $287 #ENDCOMMAND #REM BACKFIELD CAN ONLY BE USED IN A KEY PROCEDURE. IT RETURNS TO THE #REM WINDOW (COMMAND) -PRIOR- TO THE ONE THAT CALLED IT. #COMMAND BACKFIELD . !A [] $288 #ENDCOMMAND #COMMAND MULTI$ // REPEAT A COMMAND FOR EACH ARGUMENT (INTERNAL) #IF !0>1 !1 !2 #ENDIF #IF !0>2 MULTI$ !1 !3 !4 !5 !6 !7 !8 !9 #ENDIF #ENDCOMMAND #COMMAND MULTIBACK$ // SAME AS ABOVE, EXCEPT, ARGUMENTS ARE #IF !0>2 // OUTPUT IN REVERSE ORDER MULTIBACK$ !1 !3 !4 !5 !6 !7 !8 !9 #ENDIF #IF !0>1 !1 !2 #ENDIF #ENDCOMMAND #COMMAND KEYPROC R%WSF . #SET Q$ (!1-100) #SET Y$ !a #KEYPROC !q !Y #ENDCOMMAND // ENTER MACRO // #COMMAND ENTER CVWSRL# INDICATE CONTINUE TRUE #REPLACE ENT$QUERY |9 INDICATE ENT$QUERY FALSE #IF !0>0 // ENT$QUERY TELLS US IF #SET X$ !1.X // WE ARE IN QUERY(SUPERFIND) MODE #ELSE #SET X$ 0 #ENDIF MOVEINT |CI!x TO |VI8 // SET ENTMFILE TO MAIN FILE FOR ENTSFIND ENT$LP: // START OF ENTER LOOP GOSUB ENTRYSEC // DO ENTRY SECTION [KEY.ESCAPE] GOTO END_ENTER // DROPPED TRU INDICATE ERR FALSE // SET ERROR FALSE REREAD // MULTIUSER REREAD [ENT$QUERY] GOSUB ENTER.EDIT // USER PROCEDURE [NOT ERR] ENTUPDATE // UPDATE FILES FROM ENTRY [NOT ERR] GOSUB ENTER.SAVE // USER PROCEDURE [NOT ERR] MULTIBACK$ SAVE !1 !2 !3 !4 !5 !6 !7 !8 !9 // SAVE UNLOCK //MULTIUSER [NOT ERR] GOSUB ENT$CLEAR // CLEAR SCREEN [CONTINUE] GOTO ENT$LP // LOOP GOTO END_ENTER // END ON NOT CONTINUE // THIS CLEARS THE SCREEN AND ALL DATA FILES ENT$CLEAR: MULTIBACK$ CLEAR !1 !2 !3 !4 !5 !6 !7 !8 !9 INDICATE ENT$QUERY FALSE !A [] $284 // ENTCLEAR - CLEAR ENTRY SECTION RETURN //<<<<<<< STANDARD KEY PROCEDURES FOR ENTER >>>>>>>>>> KEYPROC KEY.SAVE !A [] $285 //ENTSKIP SKIP REST OF ENTRIES RETURN KEYPROC KEY.DELETE INDICATE ERR FALSE //DEFAULT REREAD [NOT ENT$QUERY] ERROR 71 // CHECK FOR ACTIVE RECORD [NOT ERR] GOSUB ENTER.DELETE // USER PROCEDURE [NOT ERR] GOSUB ENTER.EDIT // USER PROCEDURE [NOT ERR] DELETE !1 // DELETE RECORDS [NOT ERR] MULTIBACK$ SAVE !2 !3 !4 !5 !6 !7 !8 !9 // RELATED UNLOCK [NOT ERR] GOSUB ENT$CLEAR // CLEAR SYSTEMS RETURN ENTRYSEC KEYPROC KEY.SFIND KEYPROC KEY.FIND KEYPROC KEY.NEXT KEYPROC KEY.PREVIOUS // WILL GOSUB HERE FOR ALL FIND KEYS // INDICATE WAS$QUERY GROUP ANY [ENT$QUERY] [KEY.SFIND] INDICATE ENT$QUERY TRUE [NOT ENT$QUERY] INDICATE ENT$QUERY AS |CI!x EQ |VI15 // QUERY MODE? [KEY.SFIND] ENTSFIND GE [KEY.FIND][ENT$QUERY][ENT$PERMISSIVE] ENTFIND GE [KEY.FIND][ENT$QUERY][NOT ENT$PERMISSIVE] ENTSFIND GE // YES, SUPERFIND [KEY.FIND][NOT ENT$QUERY] ENTFIND GE // NO, FIND [KEY.NEXT][ENT$QUERY] ENTSFIND GT // YES, SUPERFIND [KEY.NEXT][NOT ENT$QUERY] ENTFIND GT // NO, FIND [KEY.PREVIOUS][ENT$QUERY] ENTSFIND LT // YES, SUPERFIND [KEY.PREVIOUS][NOT ENT$QUERY] ENTFIND LT // NO, FIND [FINDERR] INDICATE ENT$QUERY GROUP ANY [WAS$QUERY] !A [FOUND] $283 // DISPLAY RECORDS ENTAGAIN // SAME WINDOW RETURN ////// DEFINE ENTERS KEY PROCEDURES. //////////// KEYPROC KEY.FIELD // BACK FIELD BACKFIELD ENTXRET: RETURN KEYPROC KEY.CLEAR // CLEAR SCREEN INDICATE ERR FALSE GOSUB ENTER.CLEAR [NOT ERR] GOSUB ENT$CLEAR RETURN ENTRYSEC KEYPROC KEY.ESCAPE // ESCAPE INDICATE ERR FALSE GOSUB ENTER.EXIT [NOT ERR] RETURN ENTXRET RETURN KEYPROC KEY.HELP HELP ENTAGAIN RETURN ENTRYSEC: ENTERMODE // START ENTRY SECTION #ENDCOMMAND #COMMAND ENTEREND // END OF ENTER MAKEDEF$ ENTER.SAVE ENTER.EDIT ENTER.DELETE ENTER.CLEAR ENTER.EXIT RETURN END_ENTER: CLEARSCREEN #ENDCOMMAND // GROUP ENTER MACRO // #COMMAND ENTERGROUP . // INDEPENDANT ENTRY SECTION #IFDEF ENT$DISP #ELSE INTEGER ENT$START #$ GOTO ENTK$END ENT$KEY #SET X$ 0 ENTK$END: #ENDIF ENTRYSEC!X: ENTERMODE // START ENTRY SECTION INDICATE ENT$QUERY FALSE // MOVEINT ENTRYSEC!x TO ENT$START #ENDCOMMAND #COMMAND ENDGROUP ENTUPDATE // UPDATE RECORD BUFFER GOTO ENT$END!x RETURN // RETURN STOPS ENTRY COMMAND LIST ENT$END!x: #ENDCOMMAND #COMMAND ENT$KEY //<<<<<<< STANDARD KEY PROCEDURES FOR ENTER GROUP >>>>>>>>>> KEYPROC KEY.FIND ENTFIND GE // NO, FIND GOTO ENT$DISP KEYPROC KEY.NEXT // FIND NEXT RECORD ENTFIND GT GOTO ENT$DISP KEYPROC KEY.PREVIOUS // FIND PRV RECORD ENTFIND LT GOTO ENT$DISP KEYPROC KEY.FIELD // BACK FIELD BACKFIELD RETURN KEYPROC KEY.CLEAR // CLEAR SCREEN INDICATE ERR FALSE !A [] $284 // ENTCLEAR RETURN KEYPROC KEY.SAVE !1 [] $285 // ENTSKIP RETURN KEYPROC KEY.HELP HELP ENTAGAIN RETURN ENT$DISP: !A [FOUND] $283 // DIPLAY ALL RECORDS RELATED. ENTAGAIN RETURN #ENDCOMMAND #COMMAND FORMAT RUVCFL#G RVCFWL#B . #FORMAT !1 !2 #ENDCOMMAND #REM report macros #COMMAND BREAKINIT // SET UP BREAKPOINTS FOR REPORT !A [] $207 #ENDCOMMAND // REPORT MACRO // #COMMAND REPORT T "BY" VFW%LGR "BREAK""" #CHECK !1.X UVCWG%L MOVEINT 20000 TO LINECOUNT // START WITH A FULL PAGE INTEGER RECCOUNT // KEEP A RECORD COUNTER MOVEINT 0 TO RECCOUNT // AND ZERO IT CLEARSCREEN // START WITH A CLEAR SCREEN BREAKINIT // INIT BREAK POINTS INDICATE FIRSTREC TRUE // USED FOR SUBTOTALS FIND GE !1 BY !3 // FIND FIRST RECORD RPT.LOOP: INDICATE SELECT TRUE // DEFAULT FOR SELECT GOSUB RPT.SELECTION // GOTO USER SELECTION [NOT SELECT] GOTO RPT.CONT // TEST SELECT BREAK$ !5 !6 !7 !8 !9 // SET BREAKPOINTS #SET X$ !p // SET UP TO BREAK DOWN [NOT FIRSTREC] BREAK$DOWN RPT.SUBTOTAL // BREAK DOWN FOR SUBTOTAL #SET X$ 0 // SET UP TO BREAK UP RELATE !1 // GET RELATED RECORDS BREAK$UP RPT.SUBHEADER // BREAK UP FOR SUBHEADER INCREMENT RECCOUNT // COUNT RECORDS GOSUB RPT.BODY // PRINT BODY INDICATE FIRSTREC FALSE // NOT FIRST ANYMORE RPT.CONT: FIND GT !1 BY !3 // FIND NEXT RECORD KEYCHECK // CHECK KEYBOARD [FOUND NOT KEYPRESS] GOTO RPT.LOOP // IF OK, LOOP [KEYPRESS] GOSUB RPT.KEYPRESS // USER CAN DISABLE KEYPRESS #SET X$ !p // SET UP FOR BRK DOWN END.OF.REPORT: BREAK$DOWN RPT.SUBTOTAL $X // BREAK DOWN FOR LAST SUBTOTALS GOSUB RPT.TOTAL // PRINT TOTAL GOTO END$OF$REPORT // GOTO END NEWPAGE: GOSUB RPT.HEADER // NEW PAGE, PRINT HEADER #SET X$ 0 // THIS WILL REPRINT THE PAGE HEADERS IF INCLUDED // [NOT FIRSTREC] BREAK$PRT SUBHEADER // REPRINT PAGES RETURN // END OF NEWPAGE RPT.SELECTION: // SELECTION STARTS AFTER REPORT #ENDCOMMAND // THE FOLLOWING ARE RECURSIVE MACRO'S IN SUPPORT OF REPORT // REPORT SECTION MACRO // #COMMAND SECTION R . #IFSAME !1 SELECTION // SELECTION IS NUL SECTION #ELSE RETURN // RETURN FROM LAST ROUTINE RPT.!1: // LABLE SECTION #IFDEF !1.LINES // IS THERE A PAGE? PAGECHECK !1.LINES // CHECK FOR END OF PAGE [PAGEBREAK] GOSUB NEWPAGE // IF END, GOSUB NEWPAGE AUTOPAGE !1 // START DEAULT PAGE #ENDIF #ENDIF #ENDCOMMAND #COMMAND BREAK$T3 #IF !x0) BREAKPOINT |CI!P !1 #ENDIF #IF (!0>1) BREAK$ !2 !3 !4 !5 !6 !7 !8 !9 #ENDIF #ENDCOMMAND #COMMAND BREAK$DOWN R // DOES GOSUB TO BREAK #IF !x>0 // SECTIONS FROM N TO 0 #IF !0>1 GOSUB !1!x #ELSE [!x] GOSUB !1!x #ENDIF #ENDIF #SET X$ !x-1 #IF !x>0 BREAK$DOWN !1 !2 #ENDIF #ENDCOMMAND #COMMAND BREAK$UP // DOES GOSUB TO BREAK #IF !x1 #CHECK !2 "TO" #CHECK !3 CVF#L #IFTYPE !3 IND !A [] $206 !1 !3 #ELSE !A [] $205 !1 !3 #ENDIF #ELSE AUTO4$ PRINT !1 TO PAGE!f #ENDIF #ENDCOMMAND #COMMAND SUBTOTAL RFVC#LSD PRINT !1% !2 !3 !4 !5 !A [] $082 |CI0 !1% #ENDCOMMAND #COMMAND BREAKPOINT UVFW UCI // TEST BREAKPOINT AND SET INDICATORS !A [] $204 !1 !2 #ENDCOMMAND #COMMAND MAKEDEF$ // MAKE A LIST OF SYMBOLS DEFINED #IF !0>0 #IFDEF !1 #ELSE !1: #ENDIF #IF !0>1 MAKEDEF$ !2 !3 !4 !5 !6 !7 !8 !9 #ENDIF #ENDIF #ENDCOMMAND // SYSTEM COMMANDS #COMMAND RUNPROGRAM R#LGU #LGU . !A [] $2C0 !1 !2 #ENDCOMMAND #REM .RUN$ WORKS JUST LIKE RUNPROGRAM EXCEPT IT WAITS FOR #REM .THE USER TO HIT RETURN (INDICATING A DISK CHANGE) #REM .AND THEN DOES A RESET. NOTE THAT A MESSAGE SHOULD #REM .BE PRINTED OUT INDICATEING THEY SHOULD HIT RETURN. #COMMAND RUN$ R#LGU #LGU . !A [] $2CA !1 !2 #ENDCOMMAND #COMMAND ERASEFILE R#LGU . !A [] $2C1 !1 #ENDCOMMAND #COMMAND RENAMEFILE R#LGU "TO" R#LGU . !A [] $2C2 !1 !3 #ENDCOMMAND #COMMAND DIRECTORY R#LGU . !A [] $2C4 !1 #ENDCOMMAND #COMMAND COPYFILE R#LGU "TO" R#LGU . !A [] $2C5 !1 !3 #ENDCOMMAND #COMMAND SYSTEM . !A [] $2C7 #ENDCOMMAND #COMMAND DESPOOL . // THIS CALLS THE SYSTEM DESPOOL COMMAND IF AVAILABLE. !A [] $2C6 // MULTIUSER ONLY. #ENDCOMMAND #COMMAND FILELIST R#%LG "TO""" #LUGC #LUCG #IFSAME !1 NEXT !A [] $301 !3 !4 #ELSE #IFSAME !1 PATHNAME !A [] $302 !3 !4 #ELSE #CHECK !1 U !A [] $82 !1 FILENUMBER !A [] $300 !3 !4 #ENDIF #ENDIF #ENDCOMMAND #REM PUT BACK INTO FILELIST. THE FILE NUMBER MUST BE IN "FILENUMBER" #REM THREE VALUES ARE: ROOT NAME, DISPLAY NAME, LOGICAL NAME. #COMMAND FILELIST$PUT #LRU #LRU #LU #IF !0>2 !A [] $309 !3 #ENDIF !A [] $30A !1 !2 #ENDCOMMAND #COMMAND REGISTRATION #RLUGC #LUGC !A [] $307 !1 !2 #ENDCOMMAND #REM OS$CALL MAKES A SYSTEM BDOS CALL. ONLY CALLS THAT CAN BE PASSED #REM INTEGER (NOT POINTER) VALUES CAN BE USED. USE AT YOU OWN RISK! #REM FORMAT OF COMMAND: #REM OS$CALL {TO } #REM - BDOS FUNCTION CODE - SEE O/S DOCUMENTATION. #REM - INTEGER VALUE TO PASS WITH FUNCTION (OPTIONAL) #REM - RESULT CODE RETURNED BY FUNCTION #REM EXAMPLE TO SET CP/M I/O BYTE TO "NEW_IO_BYTE (INTEGER): #REM OS$CALL 8 NEW_IO_BYTE #REM EXAMPLE TO GET CONSOLE STATUS: #REM OS$CALL 12 0 TO CONSTAT //INTEGER #COMMAND OS$CALL #LRU%DG #L%UG "TO""" #LCGU . !A [] $2C8 !1 !2 #IF !0>3 MOVEINT STRMARK TO !4 #ENDIF #ENDCOMMAND #REM GET SYSTEM DATE, HOUR, MIN. #REM WILL NOT WORK UNDER CPM 2.2 #COMMAND SYSDATE #RCUGL #CUGL #CUGL !A [] $2C9 !1 #IF !0>1 MOVE STRLEN TO !2 #ENDIF #IF !0>2 MOVE STRMARK TO !3 #ENDIF #ENDCOMMAND ATE #RCUGL #CUGL #CUGL !A [] $2C9 !1 #IF !0>1 MOVE STRLEN TO !2 #ENDIF #IF !0>2 MOVE S