home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
forth
/
rbsrc
/
rb-creat.scr
< prev
next >
Wrap
Text File
|
1988-04-24
|
31KB
|
1 lines
\ RazorBack hs 18:14 03/16/88 ***************************************** * F A R S I D E R E S E A R C H * * (C) 1987,1988 * ***************************************** \ Load Screen 11:48 02/26/88 : MARKER ; 2 29 THRU 2 29 THRU BSAVE OVERLAY RBMAINT FORGET MARKER BYE ( variables -- window 10:16 02/09/87 ) FORTH DEFINITIONS DECIMAL BSTART OVERLAY VARIABLE 'HELP VARIABLE FILL-CHAR VARIABLE ANCHOR 0 0 23 79 WINDOW CURRENTW \ current window 0 0 23 79 WINDOW VIRTUALW \ the work window 5 5 6 45 WINDOW INFW \ Includes & etc. 10:17 01/20/88 INCLUDE FIELD.DEF INCLUDE FILES.DEF INCLUDE REPORT.DEF INCLUDE VIEW.DEF DICTIONARY WRK.DCT NULL DICTIONARY WRK.DAT NULL DICTIONARY WRK.RPT NULL HCB WRK.LAY : FLD-ERASE FLD.BUFF SIZEOF FIELD ERASE 513 FLD.BUFF FLD.MS/LS ! ; \ char maint 15:03 04/13/88 VARIABLE #CHARS #CHARS OFF : CHAR++ 1 #CHARS +! ; : CHAR-- #CHARS @ 1- 0 MAX #CHARS ! ; \ add-db hs 10:18 01/20/88 : ADD-DB " File Information" EDITL SINGLE INFW OPEN-WINDOW 2 2 INFW NOR " Description:" WND-CSTR! 2 3 INFW NOR " FileName :" WND-CSTR! 0 LC.BUFF LC.FLG C! LC.BUFF LC.DESCR 30 BLANK 15 2 INFW LC.BUFF LC.DESCR 30 @STRING DROP LC.BUFF LC.FNAME 8 BLANK 15 3 INFW LC.BUFF LC.FNAME 8 @STRING DROP INFW CLOSE-WINDOW LC.BUFF LCMAIN.DCT ADD-ITEM DUP ANCHOR ! WRK.DCT OVER NAME>DCT WRK.DAT SWAP NAME>DAT SIZEOF FIELD WRK.DCT MAKE-DICTIONARY ; \ relative coords hs 10:18 01/20/88 ( -- col row ) : ?XY-WINDOW ?XY CURRENTW WINDOW-ROW C@ - >R CURRENTW WINDOW-COL C@ - R> ; ( col row -- addr len ) : RC->STR 100 * + S>D <# # # ASCII , HOLD # # #> ; : TITS PAD 80 BLANK 0 24 FULLW REV 80 PAD WND-STR! 2 24 FULLW REV 30 LC.BUFF LC.DESCR WND-STR! 45 24 FULLW REV " Design a Form" WND-CSTR! ; \ coord hs 10:18 01/20/88 : COORD 70 24 FULLW REV ?XY RC->STR SWAP WND-STR! ; \ clear hs 10:18 01/20/88 : CLEAR VIRTUALW BOX-CLR 1 1 GOTOXY 32 FILL-CHAR ! 0 CURRENTW WINDOW-COL ! 0 0 ; \ help hs 10:18 01/20/88 : WND-HELP 0 " HELP" BRUN HELP FORGET OVERLAY 00 00 ; ( char -- t/f ) : ISASCII 126 32 ISSET ; \ up & down hs 10:18 01/20/88 : UP #CHARS OFF ?XY-WINDOW NIP 1 = IF ERRTONE 00 00 ELSE 00 -1 THEN ; : DOWN #CHARS OFF ?XY-WINDOW NIP CURRENTW WINDOW-#ROW C@ 1- = IF ERRTONE 00 00 ELSE 00 01 THEN ; ( -- cl-off rw-off ) : LF/CR DOWN NIP ?XY-WINDOW DROP 1- NEGATE SWAP ; \ right & left hs 10:18 01/20/88 : RIGHT ?XY-WINDOW DROP 1 = IF ERRTONE 00 00 ELSE -1 00 THEN ; : LEFT ?XY-WINDOW DROP CURRENTW WINDOW-#COL C@ 1- = IF ERRTONE 00 00 ELSE 01 00 THEN ; \ bck_space & space hs 10:18 01/20/88 ( -- cl-off rw-off ) : BCK_SP ?XY-WINDOW SWAP DUP 0<> IF 1- THEN SWAP CURRENTW NOR 32 WND-CHAR! RIGHT CHAR-- 32 #CHARS @ FLD.BUFF FLD.NAME + C! ; ( -- cl-off rw-off ) : SPACE LEFT #CHARS @ IF CHAR++ THEN ; \ redo: hs 10:18 01/20/88 : REDO: 20 0 ?DO FLD.BUFF FLD.NAME 19 I - + C@ 126 33 ISSET IF ASCII : FLD.BUFF FLD.NAME 19 I 1- - + C! 21 I - LEAVE THEN LOOP ; \ .fields h hs 10:18 01/20/88 \ When F2 is pushed show the current record information : .FIELDS WRK.DCT CLOSE-DICTIONARY WRK.DCT " RBEFLDS" BRUN RBEFLDS FORGET OVERLAY CLS TITS OBOX 1 1 CURRENTW WND-GOTOXY WRK.DCT OPEN-DICTIONARY WRK.DCT D.HU @ 0 ?DO FLD.BUFF I WRK.DCT DICT-READ FLD.BUFF FLD.COL C@ FLD.BUFF FLD.ROW C@ FULLW HIL REDO: FLD.BUFF FLD.NAME WND-STR! LOOP 00 00 ; \ add-field hs 10:18 01/20/88 : ADD-FIELD 0 FLD.BUFF FLD.TYPE C! 5 FLD.BUFF FLD.LENGTH ! #CHARS C@ FLD.BUFF FLD.NLEN C! FLD.BUFF WRK.DCT ADD-ITEM DROP #CHARS OFF FLD-ERASE ; \ char-process hs 10:18 01/20/88 ( char -- cl-off rw-off flag ) : CHAR-PROCESS DUP ISASCII IF DUP ASCII : = IF ADD-FIELD ELSE #CHARS @ 0= IF FLD.BUFF FLD.NAME 20 BLANK ?XY-WINDOW FLD.BUFF FLD.ROW C! FLD.BUFF FLD.COL C! THEN #CHARS @ 20 < IF DUP #CHARS @ FLD.BUFF FLD.NAME + C! CHAR++ THEN THEN >R ?XY-WINDOW CURRENTW HIL R> WND-CHAR! 0 LEFT ELSE DROP ERRTONE 0 0 0 THEN 0 ; \ process h hs 10:18 01/20/88 : PROCESS PCKEY ?DUP 0= IF 100 + THEN CASE 168 OF -1 00 00 ENDOF ( f10 f1 ) 159 OF 0 WND-HELP ENDOF 27 OF 0 00 00 ENDOF ( esc f3 ) 161 OF 0 0 0 ENDOF 163 OF 0 00 00 ENDOF ( f5 f6 ) 164 OF 0 0 0 ENDOF 172 OF 0 UP ENDOF ( up dw ) 180 OF 0 DOWN ENDOF 177 OF 0 LEFT ENDOF ( lft rg ) 175 OF 0 RIGHT ENDOF 32 OF 0 SPACE ENDOF ( sp cr ) 13 OF 0 LF/CR ENDOF 160 OF 0 .FIELDS ENDOF ( f2 ) 08 OF 0 BCK_SP ENDOF CHAR-PROCESS ENDCASE ?XY ROT + >R + R> GOTOXY COORD ; \ Del-warn 10:33 04/14/88 7 10 8 50 WINDOW WARNW : DEL-WARN ( --- t/f ) ALARM " DataBase Delete" NONE SINGLE WARNW OPEN-WINDOW 2 2 WARNW HIL " By deleting this database, all the information" WND-CSTR! 2 3 WARNW HIL " contained in it will be destroyed. If it is " WND-CSTR! 2 4 WARNW HIL " referenced by another file, those refenences " WND-CSTR! 2 5 WARNW HIL " will be meaningless. " WND-CSTR! 4 7 WARNW NOR " Do you wish to CONTINUE?" WND-CSTR! 30 7 WARNW 0 ?YES/NO NIP WARNW CLOSE-WINDOW ; \ <delete> 10:33 04/14/88 : <delete> ( #file --- ) WRK.DCT OVER NAME>DCT WRK.DCT FDEL DROP WRK.DCT OVER NAME>DAT WRK.DCT FDEL DROP WRK.DCT OVER NAME>RPT WRK.DCT FDEL DROP WRK.DCT OVER NAME>VIEW WRK.DCT FDEL DROP WRK.DCT HCB>N -EXT " .LAY" +EXT WRK.DCT NAME>HCB WRK.DCT FDEL 2DROP WRK.DCT HCB>N -EXT " .FLT" +EXT WRK.DCT NAME>HCB WRK.DCT FDEL DROP WRK.DCT HCB>N -EXT " .X??" +EXT WRK.DCT NAME>HCB WRK.DCT WRK.DAT 0 FFIRSTF NOT IF BEGIN WRK.DAT FDEL DROP WRK.DAT FNEXTF UNTIL THEN ; \ del-db 10:39 04/14/88 : DEL-DB " Delete A Database" @ACTIVES ?DUP IF 1- DEL-WARN IF DUP LCMAIN.DCT DEL-ITEM <delete> ELSE DROP THEN THEN ; \ mod-warn 09:17 04/22/88 : MOD-WARN ( --- t/f ) ALARM " DataBase Modify" NONE SINGLE WARNW OPEN-WINDOW 2 2 WARNW HIL " By modifing this database, all the information" WND-CSTR! 2 3 WARNW HIL " contained in it will be destroyed. If it is " WND-CSTR! 2 4 WARNW HIL " referenced by another file, those refenences " WND-CSTR! 2 5 WARNW HIL " will be meaningless. " WND-CSTR! 4 7 WARNW NOR " Do you wish to CONTINUE?" WND-CSTR! 30 7 WARNW 0 ?YES/NO NIP WARNW CLOSE-WINDOW ; \ edit-db hs 10:18 01/20/88 : EDIT-DB " Active DataBases" @ACTIVES ?DUP IF 1- MOD-WARN IF DUP ANCHOR ! WRK.DCT OVER NAME>DCT WRK.DAT SWAP NAME>DAT WRK.DCT OPEN-DICTIONARY WRK.DCT D.HU @ 0 ?DO FLD.BUFF I WRK.DCT DICT-READ FLD.BUFF FLD.COL C@ FLD.BUFF FLD.ROW C@ FULLW HIL REDO: FLD.BUFF FLD.NAME WND-STR! LOOP WRK.DCT CLOSE-DICTIONARY -1 ELSE DROP 0 THEN ELSE 0 THEN ; \ mode choice hs 10:18 01/20/88 : MODES " Create Modify Delete " ; MODES 3 10 10 CHOICE MODEC \ operation mode 3 2 4 14 WINDOW MODEW \ mode window : @MODE " DataBases" NONE SINGLE MODEW OPEN-WINDOW MODEW MODEC CHOOSE MODEW CLOSE-WINDOW CLS OBOX CASE 0 OF 0 ENDOF 1 OF ADD-DB -1 ENDOF 2 OF EDIT-DB ENDOF 3 OF DEL-DB 0 ENDOF ENDCASE ; \ make-idx 13:15 04/18/88 HCB T.IDX CREATE T.BUFF 300 ALLOT T.BUFF 300 255 FILL : MAKE-IDX ( num --- ) FLD.BUFF FLD.?IDX C@ IF WRK.DCT HCB>N T.IDX NAME>HCB T.IDX SWAP CHG-IDX T.IDX 0 FMAKE DROP T.IDX T.BUFF 300 FWRITE DROP T.IDX FCLOSE DROP ELSE DROP THEN ; \ make-dat hs 10:19 01/20/88 CREATE LENGTH-TAB 0 C, 4 C, 4 C, 2 C, 4 C, 10 C, 1 C, 0 C, 2 C, DICTIONARY TMP.DCT TEMP : MAKE-DAT TMP.DCT OPEN-DICTIONARY 1 WRK.DCT D.HU @ 0 ?DO FLD.BUFF I WRK.DCT DICT-READ DUP FLD.BUFF FLD.OFFSET ! FLD.BUFF ?ACTIVE IF FLD.BUFF TMP.DCT ADD-ITEM MAKE-IDX THEN FLD.BUFF FLD.TYPE C@ DUP LENGTH-TAB + C@ SWAP DUP 0= SWAP 7 = OR IF FLD.BUFF FLD.LENGTH @ + THEN + LOOP WRK.DAT MAKE-DICTIONARY TMP.DCT CLOSE-DICTIONARY WRK.DCT CLOSE-DICTIONARY WRK.DCT FDEL DROP TMP.DCT WRK.DCT FREN DROP TMP.DCT FDEL DROP ; \ make-flt 13:01 04/15/88 : MAKE-FLT T.BUFF 50 ERASE WRK.RPT HCB>N -EXT " .FLT" +EXT WRK.RPT NAME>HCB WRK.RPT 0 FMAKE DROP 15 0 ?DO WRK.RPT T.BUFF 50 FWRITE DROP LOOP WRK.RPT FCLOSE DROP ; \ make-afiles 15:02 04/13/88 : MAKE-AFILES ( --- ) SIZEOF FIELD TMP.DCT MAKE-DICTIONARY WRK.RPT ANCHOR @ NAME>RPT WRK.DCT HCB>N -EXT " .LAY" +EXT WRK.LAY NAME>HCB WRK.LAY 0 FMAKE DROP WRK.LAY FCLOSE DROP SIZEOF REPORT WRK.RPT MAKE-DICTIONARY WRK.RPT ANCHOR @ NAME>VIEW SIZEOF VIEW WRK.RPT MAKE-DICTIONARY MAKE-FLT MAKE-DAT ; \ rbmaint hs 10:19 01/20/88 : RBMAINT @MODE IF TITS 1 1 CURRENTW WND-GOTOXY FLD-ERASE WRK.DCT OPEN-DICTIONARY BEGIN PROCESS UNTIL MAKE-AFILES 0 0 GOTOXY THEN ;