home *** CD-ROM | disk | FTP | other *** search
- DECLARE SUB PROSRC.1 ()
- DECLARE SUB PROSRC.2 ()
- DECLARE SUB PROSRC.3 ()
- DECLARE SUB PROSRC.9 ()
- DECLARE SUB PROSRC.CASE.1 ()
- DECLARE SUB PROSRC.CASE.2.1 ()
- DECLARE SUB PROSRC.CASE.2.2 ()
- DECLARE SUB PROSRC.CASE.3.1 ()
- DECLARE SUB PROSRC.CASE.3.3 ()
- DECLARE SUB PROSRC.CASE.3.4 ()
- DECLARE SUB PROSRC.CASE.3.5 ()
- DECLARE SUB PROSRC.CASE.4.1 ()
- DECLARE SUB PROSRC.CASE.4.2 ()
- DECLARE SUB PROSRC.CASE.5.0 ()
- DECLARE SUB PROSRC.CASE.6 ()
- DECLARE SUB PROSRC.CASE.7.1 ()
- DECLARE SUB PROSRC.CASE.7.2 ()
- DECLARE SUB PROSRC.INFO.1 (NS%, pf$)
- DECLARE SUB PROSRC.SCN.1 (NS%, pf$)
- DECLARE SUB PROGEN71.INFO.1 (NS%, pf$)
- DECLARE SUB noreport ()
- DECLARE SUB buildscreen ()
- DECLARE SUB clearscreen ()
- DECLARE SUB createdatafile ()
- DECLARE SUB genprogram ()
- DECLARE SUB initindex ()
- DECLARE SUB RecFieldselect (indexnum%, key$, MastRec%, IndexRec%, exitcode%)
- DECLARE SUB seldatafile ()
- DECLARE SUB PROGEN71.1 ()
- DECLARE SUB PROGEN71.2 ()
- DECLARE SUB PROGEN71.3 ()
- DECLARE SUB PROGEN71.9 ()
- DECLARE SUB PROGEN71.CASE.1 ()
- DECLARE SUB PROGEN71.CASE.2.1 ()
- DECLARE SUB PROGEN71.CASE.2.2 ()
- DECLARE SUB PROGEN71.CASE.3.1 ()
- DECLARE SUB PROGEN71.CASE.3.3 ()
- DECLARE SUB PROGEN71.CASE.3.4 ()
- DECLARE SUB PROGEN71.CASE.3.5 ()
- DECLARE SUB PROGEN71.CASE.4.1 ()
- DECLARE SUB PROGEN71.CASE.4.2 ()
- DECLARE SUB PROGEN71.CASE.5.0 ()
- DECLARE SUB PROGEN71.CASE.6 ()
- DECLARE SUB PROGEN71.CASE.7.1 ()
- DECLARE SUB PROGEN71.CASE.7.2 ()
- DECLARE SUB DispRecField (temp AS ANY)
- DECLARE SUB mainscreen ()
- DECLARE SUB maxfields ()
- DECLARE SUB nodata ()
- DECLARE SUB noscreen ()
- DECLARE SUB PROGEN71.SCN.1 (NS%, pf$)
- DECLARE FUNCTION strval$ (a%)
- DECLARE SUB PIM (cmd$, indexnum%, key$, MastRec%, CurrentIndexREC%)
- DECLARE SUB PIMClose (indexnum%, file$)
- DECLARE SUB PIMCreate (indexnum%, file$, keylength%, mfile$)
- DECLARE SUB PIMdelkey (IxNum%, temp$, MastRec%, IndexRec%)
- DECLARE SUB PIMOpen (indexnum%, file$)
- DECLARE SUB formatinfo ()
- DECLARE SUB proginfo1 ()
- DECLARE SUB proginfo2 ()
- DECLARE SUB PROBRO.1 ()
- DECLARE FUNCTION PIMstats% (indexnum%)
-
- DEFINT A-Z
-
- ' Microsoft BASIC 7.1, Professional Development System
- ' Copyright (C) 1987-1989, Microsoft Corporation
- '
- ' Microsoft QBX 7.1, Professional Development System
- ' Copyright (C) 1987-1989, Microsoft Corporation
- '
- ' PROGEN71.bas, PROGEN71.qlb
- ' 1991 by: RAYMOND E DIXON
- '
- ' RAYMOND E DIXON
- ' 11660 VC JOHNSON RD.
- ' Jacksonville, Fl. 32218
- '
- ' (904) 765-4048
- TYPE RecordType
- status AS STRING * 1 'First element is in use flag
- Num AS STRING * 3
- name AS STRING * 16 '(in order for alphabetical sort)
- type AS STRING * 1
- case AS STRING * 1
- key AS STRING * 1
- decimal AS STRING * 2
- length AS STRING * 2
- format AS STRING * 50
- frow AS STRING * 2
- fcol AS STRING * 2
- progname AS STRING * 8
- comment AS STRING * 30
- recnum AS INTEGER
- ppos AS STRING * 2
- pline AS STRING * 2
- DUM AS STRING * 10
- END TYPE
-
- COMMON SHARED masterFile$, numberoffields, ff, progfile$, startp
-
- ' $INCLUDE: 'PROLIB71.BI'
- STACK 4000
- '$DYNAMIC
-
- DIM SHARED scrnline$(25) ' Lines 1-24
- DIM SHARED RecField AS RecordType
- DIM SHARED formatsel1$(16)
- DIM SHARED formatsel2$(16)
- DIM SHARED fieldpointer%(25, 80) ' Frame for input markers
- DIM SHARED fl$(25) ' File array, 2nd Key Select Array
- DIM SHARED dialog$(20)
- DIM SHARED omenu$(10)
- DIM SHARED TestRecField AS RecordType
- DIM SHARED DispLine$(30)
- DIM SHARED Findex(50) AS RecordType
-
- fg = WHITE
- bg = BLUE
- rev = RED
-
- LOCATE 25, 1, 0, 0, 0
- COLOR WHITE, BLUE
-
- CONST RecFieldNameIDX = 1
- CONST RecFieldNumIDX = 2
- CONST datfile = 3
- CONST infofile = 4
- mainscreen
- MsgLine "Press " + CHR$(24) + " for last " + CHR$(25) + " for next ENTER to select", 25, 0, 7
-
- DrawBox 21, 22, 40, 3, 2, BLACK, WHITE, 1, BLACK, WHITE, 1
- CenterText "Select Program Database", 22, BLACK, WHITE
-
- redo:
-
- fl$ = "SAMPLE PROGRAM\"
- fl$ = fl$ + "USER PROGRAM\"
- fl$ = fl$ + "NEW PROGRAM\"
-
- Dopt = MenuWindow(0, 0, fl$, "SELECT ", BLACK, WHITE, RED, 0)
-
- 'Get the option
-
- SELECT CASE Dopt 'Select on choice
- CASE 1
- masterFile$ = "SAMPLE.FLD"
- CASE 2
- seldatafile
- CASE 3
- CLOSE
- createdatafile
- CASE ELSE
- END SELECT
-
- IF masterFile$ = "" THEN
- GOTO redo
- END IF
-
- NEWFILE:
-
- IF FileExists(masterFile$) = 0 THEN 'If no index then create
-
- PIMCreate RecFieldNameIDX, masterFile$, 16, masterFile$ 'Create a RecField date INDEX
- PIMCreate RecFieldNumIDX, masterFile$, 3, masterFile$ 'Create a RecField date INDEX
-
- END IF
-
- PIMOpen RecFieldNameIDX, masterFile$ 'Open Index
- PIMOpen RecFieldNumIDX, masterFile$ 'Open Index
-
- OPEN masterFile$ FOR RANDOM AS datfile LEN = LEN(RecField) 'Open the data file
-
- initindex
- delimit = INSTR(masterFile$, ".")
-
- IF delimit THEN
- RecField.progname = LEFT$(masterFile$, delimit - 1)
- ELSE
- RecField.progname = masterFile$
- END IF
-
- programname$ = RTRIM$(RecField.progname) + ".inf"
-
- IF FileExists(programname$) = 0 THEN 'If no index then create
- OPEN programname$ FOR OUTPUT AS infofile
- PRINT #infofile, numberoffields, numberofscreens, numberofreports
- CLOSE infofile
- ELSE
- OPEN programname$ FOR INPUT AS infofile
- INPUT #infofile, numberoffields, numberofscreens, numberofreports
- CLOSE infofile
- END IF
-
- DO
- mainscreen
- DrawBox 21, 22, 40, 3, 2, BLACK, WHITE, 1, BLACK, WHITE, 1
- CenterText " Current Data File : " + masterFile$, 22, BLACK, WHITE
-
- menu$ = "1 - Add a new RecField #\"
- menu$ = menu$ + "2 - Browse/Edit RecField #'s\"
- menu$ = menu$ + "3 - Print by RecField #\"
- menu$ = menu$ + "4 - Delete (remove) a RecField #\"
- menu$ = menu$ + "5 - Erase RecField datafile\"
- menu$ = menu$ + "6 - Change RecField datafile\"
- menu$ = menu$ + "7 - New RecField datafile (create)\"
- menu$ = menu$ + "8 - System Information\"
- menu$ = menu$ + "B - Generate BASIC Program\"
- menu$ = menu$ + "S - Generate SCREENS\"
- menu$ = menu$ + "R - Generate REPORT\"
- menu$ = menu$ + "Q - Quit Program\"
-
- mopt = MenuWindow(0, 0, menu$, "Main Menu", BLACK, WHITE, RED, 0)
-
- 'Get the option
-
- SELECT CASE mopt 'Select on choice
-
- CASE 1 'Insert a new NAME
- mainscreen
- IF numberoffields <= 10 THEN
- GOSUB InitRecField
- DispRecField RecField
- GOSUB RecFielddetails
- ELSE
- maxfields
- END IF
-
- CASE 2 'Browse through RecField date
-
- Imopt = 1
- mainscreen
- DO
- RecFieldselect RecFieldNumIDX, key$, curmasrec, IndexRec, exitcode
-
- IF exitcode = 0 THEN
- nodata
- EXIT DO
- END IF
-
- IF exitcode = 1 THEN
- EXIT DO
- END IF
-
- WHILE exitcode = 2
-
- GET #datfile, curmasrec, RecField
-
- DispRecField RecField
- ixv = RecFieldNumIDX
-
- BO$ = " Next Prev Search Edit Formats" + CHR$(255) + "information Menu "
-
- Imopt = MenuBar(25, 3, BO$, BLACK, WHITE, RED, Imopt)
-
- IF Imopt = 3 THEN
- exitcode = 0
- END IF
-
- IF Imopt = 4 THEN
-
- mopt = 2
-
- Oldname$ = RecField.name
- Oldnum$ = RecField.Num
-
- GOSUB RecFielddetails
-
- END IF
-
- IF Imopt = 5 THEN
-
- formatinfo
- proginfo1
- proginfo2
- mainscreen
-
- END IF
-
- IF Imopt = 6 THEN
- EXIT DO
- END IF
-
- IF Imopt = 1 THEN
- PIM "N", ixv, nul$, curmasrec, IndexRec
- END IF
-
- IF Imopt = 2 THEN
- PIM "P", ixv, nul$, curmasrec, IndexRec
- END IF
-
- WEND
- LOOP
-
- CASE 3 'PRINT DATA
-
- DO
- IF PIMstats(1) = 0 THEN
- DispLine$(1) = "There are RecFields in the database "
- DispLine$(2) = ""
- DispLine$(3) = "Press any key to continue"
- Message DispLine$(), 3, 3, BLACK, WHITE, BLACK, WHITE
-
- GOTO norec
-
- END IF
-
- DispLine$(1) = "Enter Starting RecField"
- DispLine$(2) = "Enter for all"
- ans$ = ""
-
- nl = LEN(RecField.Num)
-
- DialogBox DispLine$(), 1, 1, nl, BLACK, WHITE, BLACK, WHITE, 1, ans$, "", Exk
- key$ = ans$
- DispLine$(1) = "Print to Display or Printer"
- Ques$ = "(D/P)"
- answ$ = "DdPp"
- AskQuestion DispLine$(), 1, 1, 1, BLACK, WHITE, BLACK, WHITE, Ques$, answ$
-
- IF UCASE$(answ$) = "D" THEN
- output$ = "CONS:"
- CLS
- ELSE
- output$ = "LPT1:"
- IF CheckPrinter <> 1 THEN
- EXIT DO
- END IF
- END IF
-
- prt = FREEFILE
-
- OPEN output$ FOR OUTPUT AS #prt
- WIDTH #prt, 80
- IxNum = 2 'Print the DB in Last Name sequence
- PIM "S", IxNum, key$, MastRec, IndexRec
- tempindex = IndexRec
-
- 'No Ckeys in the index
-
- IF IndexRec THEN
- GET #datfile, MastRec, RecField
- pfn$ = RecField.name
- pfl$ = RecField.length
- pft$ = RecField.type
- pfk$ = RecField.key
- pfc$ = RecField.case
- pfd$ = RecField.decimal
- pff$ = RecField.format
- pfrow$ = RecField.frow
- pfcol$ = RecField.fcol
-
- PRINT #prt, "FIELD NAME " + " LENGTH " + " KEY " + " TYPE " + " CASE " + " DECIMAL " + "ROW-COL" + " FORMAT"
- PRINT #prt, STRING$(80, "-");
- PRINT #prt, pfn$ + " " + pfl$ + " " + pfk$ + " " + pft$ + " " + pfc$ + " " + pfd$ + " " + pfrow$ + " " + pfcol$ + " " + pff$
-
- DO WHILE IndexRec
-
- PIM "N", IxNum, key$, MastRec, IndexRec
- IF tempindex = IndexRec THEN
- EXIT DO
- END IF
-
- IF IndexRec > 0 THEN
- IF PrevMastRec = MastRec AND IndexRec = PrevIndexRec THEN
- EXIT DO
- ELSE
-
- GET #datfile, MastRec, RecField
-
- pfn$ = RecField.name
- pfl$ = RecField.length
- pft$ = RecField.type
- pfk$ = RecField.key
- pfc$ = RecField.case
- pfd$ = RecField.decimal
- pff$ = RecField.format
- pfrow$ = RecField.frow
- pfcol$ = RecField.fcol
-
- PRINT #prt, pfn$ + " " + pfl$ + " " + pfk$ + " " + pft$ + " " + pfc$ + " " + pfd$ + " " + pfrow$ + " " + pfcol$ + " " + pff$
-
- PrevMastRec = MastRec
- PrevIndexRec = IndexRec
-
- END IF
- END IF
- LOOP
-
- IF output$ = "LPT1:" THEN
- PRINT #prt, CHR$(12)
- ELSE
- waitkey 24, fg, bg
- END IF
- CLOSE #prt
- EXIT DO
- END IF
-
- LOOP
- norec:
- CASE 4 'Delete (remove) a field
-
- DO
- RecFieldselect RecFieldNumIDX, key$, curmasrec, IndexRec, exitcode
-
- IF exitcode = 0 THEN 'Index is Empty
- nodata
- EXIT DO
- END IF
-
- IF curmasrec > 0 AND IndexRec > 0 THEN
-
- IF curmasrec THEN
- GET #datfile, curmasrec, RecField 'Get the details,
- 'display the details
- DispRecField RecField
-
- DispLine$(1) = "YES, go ahead and delete displayed record : " + RecField.name
- DispLine$(2) = "NO, I don't want to delete displayed record : " + RecField.name
-
- Imopt = 1
- Ques$ = "(Y/N)"
- answ$ = "YyNn"
-
- AskQuestion DispLine$(), 2, 1, 2, BLACK, WHITE, BLACK, WHITE, Ques$, answ$
-
- IF UCASE$(answ$) = "Y" THEN
-
- Oldname$ = RecField.name
- Oldnum$ = RecField.Num
-
- MastRec = curmasrec
-
- Trim Oldname$
- Trim Oldnum$
-
- PIMdelkey RecFieldNumIDX, Oldnum$, MastRec, IndexRec
-
- MastRec = curmasrec
-
- PIMdelkey RecFieldNameIDX, Oldname$, MastRec, IndexRec
-
- GOSUB InitRecField 'Initialize NAME
-
- RecField.status = "F" 'Set flag to free
-
- PUT #datfile, MastRec, RecField 'Write blank Record
-
- END IF 'Done
- EXIT DO
- END IF
- ELSE
- EXIT DO
- END IF
- LOOP
-
- CASE 5 'DELETE ALL OF THE FILES
-
- DrawBox 21, 22, 40, 3, 2, BLACK, WHITE, 1, BLACK, WHITE, 1
-
- CenterText "Select File to Delete ", 22, BLACK, WHITE
- MsgLine "Press " + CHR$(24) + " for last " + CHR$(25) + " for next ENTER to select", 25, 0, 7
-
- mfile$ = SelFiles$("*.FLD")
-
- Trim mfile$
- masterFile$ = mfile$
-
- IF mfile$ <> "" THEN
- DispLine$(1) = "Delete " + mfile$ + ", Are You Sure ?"
- DispLine$(2) = "Yes to erase Field Database"
- Ques$ = "(Y/N)"
- ans$ = "YyNn"
-
- AskQuestion DispLine$(), 2, 1, 1, BLACK, WHITE, BLACK, WHITE, Ques$, ans$
-
- IF UCASE$(ans$) = "Y" THEN
-
- PIMClose RecFieldNameIDX, masterFile$
- PIMClose RecFieldNumIDX, masterFile$
-
- CLOSE
-
- delimit = INSTR(masterFile$, ".")
-
- IF delimit THEN
- masterFile$ = LEFT$(masterFile$, delimit - 1)
- END IF
-
- KILL masterFile$ + ".FLD"
- KILL masterFile$ + ".F1"
- KILL masterFile$ + ".F2"
- seldatafile
-
- IF masterFile$ = "" THEN
- createdatafile
- END IF
- GOTO NEWFILE
-
- END IF
- END IF
-
- CASE 6
-
- PIMClose RecFieldNameIDX, masterFile$
- PIMClose RecFieldNumIDX, masterFile$ 'Open Index
- CLOSE
- 'Get the option
-
- fl$ = "SAMPLE PROGRAM\"
- fl$ = fl$ + "USER PROGRAM\"
-
- Dopt = MenuWindow(0, 0, fl$, "SELECT", BLACK, WHITE, RED, 0)
-
- SELECT CASE Dopt 'Select on choice
- CASE 1
- masterFile$ = "SAMPLE.FLD"
- CASE 2
- seldatafile
- CASE ELSE
- END SELECT
-
- GOTO NEWFILE
-
- CASE 7
-
- PIMClose RecFieldNameIDX, masterFile$
- PIMClose RecFieldNumIDX, masterFile$
- CLOSE
- createdatafile
- GOTO NEWFILE
-
- CASE 8
-
- workREC& = LOF(datfile)
- LastREC = CINT(workREC& / LEN(RecField))
- DspEquipment
-
- CASE 9 'generate basic program
- CALL genprogram
-
- CASE 10 'generate screens
- 'CALL buildscreen
- RUN "proscn71"
- CASE 11 'generate screens
- 'CALL buildreport
- 'RUN "prorpt71"
- CASE 12 'QUIT
-
- PIMClose RecFieldNameIDX, masterFile$
- PIMClose RecFieldNumIDX, masterFile$
-
- OPEN programname$ FOR OUTPUT AS infofile
- PRINT #infofile, numberoffields, numberofscreens, numberofreports
- CLOSE
-
- EXIT DO
-
- CASE 99
- CASE ELSE
- END SELECT
- LOOP
-
- LOCATE 23, 1
- COLOR WHITE, BLACK
- CLS
- END 'End of program
-
- RecFielddetails: 'Get Details
-
- op = 2
- fg = BLACK
- bg = WHITE
-
- DO
-
- SELECT CASE op
-
- CASE 1
-
- pnc "ESC to exit PgDn TO update, " + CHR$(24) + " for prev " + CHR$(25) + " for next F1 edit help", 22, 10, 0, 7
-
- edit$ = RecField.Num
- Trim edit$
- getnum:
- LOCATE 8, 21
- format$ = STRING$(LEN(RecField.Num), "9")
- edit$ = FES(0, WHITE, BLACK, edit$, format$, 0, Ek, 1, 0, 1, 1, 1, 1, 1, 0)
-
- RecField.Num = edit$
-
- SELECT CASE Ek
- CASE 1
- op = 9
- CASE 5
- op = op + 1
- CASE 3
- op = op + 1
- CASE 4
- op = 10
- CASE 7
- op = 999
- END SELECT
-
- IF edit$ = "" AND Ek <> 7 THEN
- GOTO getnum
- END IF
-
- CASE 2
- MsgLine " ESC to exit PgDn TO update, " + CHR$(24) + " for prev " + CHR$(25) + " for next F1 edit help", 25, 0, 7
-
- op = 2
- edit$ = RecField.name
- Trim edit$
- getname:
- LOCATE 9, 21
- format$ = STRING$(LEN(RecField.name), "#")
- edit$ = FES(0, WHITE, BLACK, edit$, format$, 1, Ek, 1, 0, 1, 1, 1, 1, 1, 0)
-
- RecField.name = edit$
-
- IF edit$ = "" AND Ek <> 7 THEN
- GOTO getname
- END IF
-
- SELECT CASE Ek
- CASE 1
- op = 9
- CASE 5
- op = op + 1
- CASE 3
- op = op + 1
- CASE 4
- op = 10
- CASE 7
- op = 999
- END SELECT
-
- ' edit$ = RecField.frow
- ' Trim edit$
- ' pnc edit$, 16, 21, fg, bg
- ' RecField.frow = edit$
- ' edit$ = RecField.fcol
- ' Trim edit$
- ' RecField.fcol = edit$
- pnc RecField.frow, 16, 21, fg, bg
- pnc RecField.fcol, 17, 21, fg, bg
-
- CASE 3
-
- edit$ = RecField.key
- Trim edit$
- LOCATE 10, 21
- format$ = STRING$(LEN(RecField.key), "#")
- edit$ = FES(0, WHITE, BLACK, edit$, format$, 1, Ek, 1, 0, 1, 1, 1, 0, 1, 0)
-
- SELECT CASE Ek
- CASE 1
- op = op - 1
- CASE 5
- op = op + 1
- CASE 3
- op = op + 1
- CASE 4
- op = 10
- CASE 7
- op = 999
- END SELECT
-
- RecField.key = edit$
-
- CASE 4
-
- formatsel1$(1) = "@@@@@@@@@@@@@ ALPHA ONLY"
- formatsel1$(2) = "############# ALPHANUMERIC"
- formatsel1$(3) = "9999999999999 NUMERIC ONLY"
- formatsel1$(4) = "(999) 999-999 PHONE(10)"
- formatsel1$(5) = "999-9999 PHONE(7)"
- formatsel1$(6) = "999-99-9999 SS"
- formatsel1$(7) = "99999-9999 ZIP(9)"
- formatsel1$(8) = "99999 ZIP(5)"
- formatsel1$(9) = "19/39/99 mm/dd/yy"
- formatsel1$(10) = "99999 INTEGER"
- formatsel1$(11) = "9999999 LONG"
- formatsel1$(12) = "99999.99 SINGLE"
- formatsel1$(13) = "99999.99 DOUBLE"
- formatsel1$(14) = "99999.99 CURRENCY"
- formatsel1$(15) = "USER Format"
-
- rfl = 34 'VAL(LTRIM$(RecField.length))
-
- formatsel2$(1) = STRING$(rfl, "@")
- formatsel2$(2) = STRING$(rfl, "#")
- formatsel2$(3) = STRING$(rfl, "9")
- formatsel2$(4) = "(999) 999-9999"
- formatsel2$(5) = "999-9999"
- formatsel2$(6) = "999-99-9999"
- formatsel2$(7) = "99999-9999"
- formatsel2$(8) = "99999"
- formatsel2$(9) = "19/39/99"
- formatsel2$(10) = "99999"
- formatsel2$(11) = "99999"
- formatsel2$(12) = "999.99"
- formatsel2$(13) = "999.99"
- formatsel2$(14) = "999.99"
-
- nums = 15
-
- usel = SelBox(formatsel1$(), nums, 10, 26, BLACK, WHITE, RED)
- edit$ = formatsel2$(usel)
-
- SELECT CASE usel
- CASE 1
- RecField.format = formatsel2$(usel)
- RecField.type = "A"
-
- CASE 2
- RecField.format = formatsel2$(usel)
- RecField.type = "B"
-
- CASE 3
- RecField.format = formatsel2$(usel)
- RecField.type = "N"
- CASE 4
- RecField.length = LTRIM$(STR$(10))
- op = 8 'op + 1
- CASE 5
- RecField.length = LTRIM$(STR$(7))
- op = 8 'op + 1
- CASE 6
- RecField.length = LTRIM$(STR$(9))
- op = 8 'op + 1
- CASE 7
- RecField.length = LTRIM$(STR$(9))
- op = 8 'op + 1
- CASE 8
- RecField.length = LTRIM$(STR$(5))
- op = 8 'op + 1
- CASE 9
- RecField.length = LTRIM$(STR$(6))
- op = 8 'op + 1
- CASE 10
- RecField.type = "I"
- RecField.format = formatsel2$(usel)
-
- CASE 11
- RecField.type = "L"
- RecField.format = formatsel2$(usel)
-
- CASE 12
- RecField.type = "S"
- RecField.format = formatsel2$(usel)
-
- CASE 13
- RecField.type = "D"
- RecField.format = formatsel2$(usel)
-
- CASE 14
- RecField.type = "C"
- RecField.format = formatsel2$(usel)
-
- CASE 15
- RecField.length = LTRIM$(STR$(5))
- op = 8 'op + 1
- END SELECT
-
- format$ = STRING$(34, "#")
- Trim edit$
-
- newformat:
- LOCATE 11, 21
- pnc "Field Format: ", 11, 8, fg, bg
- edit$ = FES(0, WHITE, BLACK, edit$, format$, 0, Ek, 1, 0, 1, 1, 1, 0, 1, 1)
- pnc "Field Length: ", 12, 8, fg, bg
- pnc RecField.length, 12, 21, fg, bg
-
- RecField.format = edit$
-
- SELECT CASE Ek
- CASE 1
- op = op - 1
- CASE 5
- op = op + 1
- CASE 3
- op = op + 1
- CASE 4
- op = 10
- CASE 7
- op = 999
- END SELECT
-
- CASE 5
- getadd:
-
- edit$ = RecField.length
- Trim edit$
- LOCATE 12, 21
- format$ = "99"
-
- edit$ = FES(0, WHITE, BLACK, edit$, format$, 1, Ek, 1, 0, 1, 1, 1, 0, 1, 0)
-
- RecField.length = edit$
- Trim edit$
- rfl = VAL(edit$)
-
- formatsel$(1) = STRING$(rfl, "@")
- formatsel$(2) = STRING$(rfl, "#")
- formatsel$(3) = STRING$(rfl, "9")
-
- SELECT CASE usel
-
- CASE 1
- RecField.format = formatsel$(1)
- RecField.case = "A"
- CASE 2
- RecField.format = formatsel$(2)
- RecField.case = "B"
- CASE 3, 10, 11, 12, 13, 14
- RecField.format = formatsel$(3)
- RecField.case = "N"
- END SELECT
-
- pnc "Field Format: ", 11, 8, fg, bg
- pnc RecField.format, 11, 21, fg, bg
-
- SELECT CASE Ek
- CASE 1
- op = op - 1
- CASE 5
- op = op + 1
- CASE 3
- op = op + 1
- CASE 4
- op = 10
- CASE 7
- op = 999
- END SELECT
-
- CASE 6
-
- edit$ = RecField.type
- Trim edit$
- LOCATE 13, 21
- format$ = STRING$(LEN(RecField.type), "#")
- edit$ = FES(0, WHITE, BLACK, edit$, format$, 1, Ek, 1, 0, 1, 1, 1, 0, 1, 0)
- RecField.type = edit$
-
- 'SELECT CASE edit$
- 'CASE "N"
- ' op = 6
- ' RecField.case = "A"
- ' RecField.key = "N"
- 'CASE "D"
- 'END SELECT
-
- SELECT CASE Ek
- CASE 1
- op = op - 1
- CASE 5
- op = op + 1
- CASE 3
- op = op + 1
- CASE 4
- op = 10
- CASE 7
- op = 999
- END SELECT
-
- CASE 7
-
- edit$ = RecField.case
- Trim edit$
- LOCATE 14, 21
- format$ = STRING$(LEN(RecField.case), "#")
- edit$ = FES(0, WHITE, BLACK, edit$, format$, 1, Ek, 1, 0, 1, 1, 1, 0, 1, 0)
- RecField.case = edit$
-
- SELECT CASE Ek
- CASE 1
- op = op - 1
- CASE 5
- op = op + 1
- CASE 3
- op = op + 1
- CASE 4
- op = 10
- CASE 7
- op = 999
- END SELECT
-
- CASE 8
-
- edit$ = RecField.decimal
- Trim edit$
- LOCATE 15, 21
- format$ = "99"
-
- edit$ = FES(0, WHITE, BLACK, edit$, format$, 1, Ek, 1, 0, 1, 1, 1, 0, 1, 0)
-
- RecField.decimal = edit$
- Trim edit$
- IF LEN(edit$) THEN
- RecField.format = LEFT$(RecField.format, VAL(RecField.length) - VAL(RecField.decimal)) + "." + STRING$(VAL(RecField.decimal), "9")
- RecField.case = "A"
- END IF
-
- pnc "Field Format: ", 11, 8, fg, bg
- pnc RecField.format, 11, 21, fg, bg
-
- SELECT CASE Ek
- CASE 1
- op = op - 1
- CASE 5
- op = op + 1
- CASE 3
- op = op + 1
- CASE 4
- op = 10
- CASE 7
- op = 999
- END SELECT
-
- CASE 9
-
- edit$ = RecField.comment
- Trim edit$
- LOCATE 18, 21
- format$ = STRING$(LEN(RecField.comment), "#")
- edit$ = FES(0, WHITE, BLACK, edit$, format$, 0, Ek, 1, 0, 1, 1, 1, 0, 1, 0)
- RecField.comment = edit$
-
- SELECT CASE Ek
- CASE 1
- op = op - 1
- CASE 5
- op = 2 'OP + 1
- CASE 3
- op = 2 'OP + 1
- CASE 4
- op = 10
- CASE 7
- op = 999
- END SELECT
-
- CASE 10 'END REACHED
-
- test$ = RecField.name
- Trim test$
-
- IF LEN(test$) = 0 THEN
- op = 1
- MsgLine "NAME is key Field, must enter data ", 25, 0, 7
- GOTO getname
- END IF
-
- SELECT CASE mopt 'do option
-
- 'INSERT or Change record key
-
- CASE 1 'INSERT
- workREC& = LOF(datfile)
- FreeRec = 0
-
- IF workREC& THEN
- LastREC = CINT(workREC& / LEN(RecField))
- FOR lineNum = 1 TO LastREC
- GET #datfile, lineNum, TestRecField
- IF TestRecField.status = "F" THEN
- FreeRec = lineNum
- EXIT FOR
- END IF
- NEXT lineNum
- IF FreeRec = 0 THEN
- FreeRec = lineNum
- END IF
- ELSE
- FreeRec = 1
- END IF
-
- key$ = RecField.name
-
- PIM "A", RecFieldNameIDX, key$, FreeRec, IndexRec
- IF IndexRec = 0 THEN
- PRINT "Index failure"
- END
- END IF
-
- key$ = RecField.Num
-
- PIM "A", RecFieldNumIDX, key$, FreeRec, IndexRec
- IF IndexRec = 0 THEN
- PRINT "Index failure"
- END
- END IF
-
- RecField.status = "U"
- RecField.recnum = FreeRec
- PUT #datfile, FreeRec, RecField
-
- 'write to disk
-
- PIMClose RecFieldNameIDX, masterFile$
- PIMClose RecFieldNumIDX, masterFile$
-
- CLOSE
- GOTO NEWFILE
- EXIT DO 'INSERTED!
-
- CASE 2 'Edit, Update
-
- TemPrevMastRec = curmasrec
- MastRec = curmasrec
-
- Newname$ = RecField.name 'Need copy of key
-
- Trim Newname$
- Trim Oldname$
-
- IF Newname$ <> Oldname$ THEN 'Change Key
- PIM "S", RecFieldNameIDX, Oldname$, MasRECtemp, IndexRec
- DO
- IF MasRECtemp = MastRec THEN
- EXIT DO
- ELSE
- PIM "N", RecFieldNameIDX, Oldname$, MasRECtemp, IndexRec
- END IF
- LOOP
-
- PIM "D", RecFieldNameIDX, Oldname$, MasRECtemp, IndexRec
- PIM "A", RecFieldNameIDX, Newname$, MastRec, IndexRec
- END IF
-
- TemPrevMastRec = curmasrec
- MastRec = curmasrec
-
- Newnum$ = RecField.Num 'Need copy of key
-
- Trim Newnum$
- Trim Oldnum$
-
- IF Newnum$ <> Oldnum$ THEN 'Change Key
- PIM "S", RecFieldNumIDX, Oldnum$, MasRECtemp, IndexRec
- DO
- IF MasRECtemp = MastRec THEN
- EXIT DO
- ELSE
- PIM "N", RecFieldNumIDX, Oldnum$, MasRECtemp, IndexRec
- END IF
- LOOP
-
- PIM "D", RecFieldNumIDX, Oldnum$, MasRECtemp, IndexRec
- PIM "A", RecFieldNumIDX, Newnum$, MastRec, IndexRec
- END IF
-
- MastRec = TemPrevMastRec
- RecField.recnum = MastRec
- PUT #datfile, MastRec, RecField 'Write the new record
-
- EXIT DO
- CASE ELSE
- END SELECT
- CASE 999
- EXIT DO
- CASE ELSE
- END
- END SELECT
- LOOP
-
- RETURN
-
- InitRecField: 'Set to blanks
-
- RecField.name = ""
- RecField.Num = LTRIM$(STR$(numberoffields + 1))
- RecField.length = ""
- RecField.format = ""
- RecField.type = ""
- RecField.case = ""
- RecField.decimal = ""
- RecField.frow = ""
- RecField.fcol = ""
- RecField.comment = ""
- RecField.recnum = 0
-
- RETURN
-
- END
-
- REM $STATIC
- SUB createdatafile
-
- redofile:
-
- DrawBox 21, 22, 40, 3, 2, BLACK, WHITE, 1, BLACK, WHITE, 1
- CenterText "Enter Name For New Database", 22, BLACK, WHITE
-
- MsgOpt$(1) = "Enter new file specification"
- ans$ = ""
-
- DialogBox MsgOpt$(), 1, 1, 8, BLACK, WHITE, BLACK, WHITE, 1, ans$, "", Ek
- IF Ek = 7 THEN
- EXIT SUB
- END IF
- filespec$ = ans$
-
- delimit = INSTR(filespec$, ".")
-
- IF delimit THEN
- FileName$ = LEFT$(filespec$, delimit - 1)
- fileext$ = RIGHT$(filespec$, LEN(filespec$) - (delimit))
- ELSE
- FileName$ = filespec$
- fileext$ = "FLD"
- END IF
-
- IF LEN(filespec$) = 0 OR LEN(FileName$) > 8 OR LEN(fileext$) > 3 THEN
- MsgOpt$(1) = "You didn't enter a valid file specification."
- MsgOpt$(2) = ""
- MsgOpt$(3) = "Press any key to continue"
- Message MsgOpt$(), 3, 3, BLACK, WHITE + 8, BLACK, WHITE
- GOTO redofile
- END IF
- Trim FileName$
- masterFile$ = FileName$ + "." + fileext$
-
- END SUB
-
- SUB DispRecField (temp AS RecordType)
-
- 'Display details on screen
-
- fg = BLACK
- bg = WHITE
-
- TopRow = 7
- LeftCol = 5
- botrow = 20
- rightcol = 74
- FrameType = 2
-
- 'draw frame
-
- CALL drawwind(TopRow, LeftCol, botrow, rightcol, FrameType, 1)
- 'color frame
- CALL Colorwind(TopRow, LeftCol, botrow, rightcol, 0, 1, fg, bg)
-
- pnc "Field Name : ", 9, 8, fg, bg
- pnc "Key (Y/N) : ", 10, 8, fg, bg
- pnc "Field Format: ", 11, 8, fg, bg
- pnc "Field Length: ", 12, 8, fg, bg
- pnc "Type : ", 13, 8, fg, bg
- pnc "Case (U/L/A): ", 14, 8, fg, bg
- pnc "Number Dec : ", 15, 8, fg, bg
- pnc "Row Pos : ", 16, 8, fg, bg
- pnc "Col Pos : ", 17, 8, fg, bg
- pnc "Comment : ", 18, 8, fg, bg
- pnc "Program name: ", 19, 8, fg, bg
-
- pnc temp.name, 9, 21, fg, bg
- pnc temp.key, 10, 21, fg, bg
- pnc temp.format, 11, 21, fg, bg
- pnc temp.length, 12, 21, fg, bg
- pnc temp.type, 13, 21, fg, bg
- pnc temp.case, 14, 21, fg, bg
- pnc temp.decimal, 15, 21, fg, bg
- pnc temp.frow, 16, 21, fg, bg
- pnc temp.fcol, 17, 21, fg, bg
- pnc temp.comment, 18, 21, fg, bg
- pnc temp.progname, 19, 21, fg, bg
-
- END SUB
-
- SUB genprogram
-
- filespec$ = masterFile$
- delimit = INSTR(filespec$, ".")
-
- IF delimit THEN
- FileName$ = LEFT$(filespec$, delimit - 1)
- fileext$ = RIGHT$(filespec$, LEN(filespec$) - (delimit))
- ELSE
- FileName$ = filespec$
- fileext$ = ".BAS"
- END IF
-
- progfile$ = FileName$
-
- IF FileExists(progfile$ + ".SCR") THEN
- 'IF FileExists(progfile$ + ".RPT") THEN
- MsgLine "Creating BASIC program --> " + progfile$ + ".BAS", 25, BLACK, WHITE
-
- namelength% = 8
- Trim progfile$
-
- IF FileExists(progfile$ + ".DBF") THEN 'If no index then create
- KILL progfile$ + ".DBF"
- END IF
-
- IF LEN(progfile$) THEN
- ff = FREEFILE
-
- OPEN "O", ff, progfile$ + ".bas"
- CALL Trim(tit$)
-
- initindex
-
- startp = 12 - (numberoffields \ 2)
-
- ' Findex(Record).num
- ' Findex(Record).Name
- ' Findex(Record).type
- ' Findex(Record).case
- ' Findex(Record).key
- ' Findex(Record).decimal
- ' Findex(Record).length
- ' Findex(Record).format
- ' Findex(Record).frow
- ' Findex(Record).fcol
- ' Findex(Record).comment
- ' Findex(Record).progname
-
- CALL PROSRC.1
-
- FOR j% = 1 TO numberoffields
- w$ = Findex(j%).name
- CALL Trim(w$)
- IF LEN(w$) THEN
- IF Findex(j%).type = "I" THEN
- PRINT #ff, " " + w$ + " AS INTEGER"
- ELSEIF Findex(j%).type = "L" THEN
- PRINT #ff, " " + w$ + " AS LONG"
- ELSEIF Findex(j%).type = "S" THEN
- PRINT #ff, " " + w$ + " AS SINGLE"
- ELSEIF Findex(j%).type = "D" THEN
- PRINT #ff, " " + w$ + " AS DOUBLE"
- ELSEIF Findex(j%).type = "C" THEN
- PRINT #ff, " " + w$ + " AS CURRENCY"
- ELSE
- PRINT #ff, " " + w$ + " AS STRING * " + Findex(j%).length
- END IF
- END IF
- NEXT j%
-
- CALL PROSRC.2
-
- PRINT #ff, " CONST keyindex = 1"
- PRINT #ff, " masterfile$ = " + CHR$(34) + progfile$ + ".DBF" + CHR$(34)
-
- CY = 1
-
- PRINT #ff, ""
- PRINT #ff, "NEWFILE:"
- PRINT #ff, ""
-
- ' CREATE INDEXES HERE
-
- PRINT #ff, " IF FileExists(masterfile$) = 0 THEN 'If no index then create"
- PRINT #ff, " OPEN masterfile$ FOR ISAM Recordtype " + CHR$(34) + "database" + CHR$(34) + " AS keyindex 'Open the data file"
- PRINT #ff, ""
-
- CY = 1
-
- FOR ntc = 1 TO numberoffields
- IF Findex(ntc).key = "Y" THEN
- PRINT #ff, " Createindex KeyIndex," + CHR$(34) + "Index" + RTRIM$(Findex(ntc).name) + CHR$(34) + ",0," + CHR$(34) + RTRIM$(Findex(ntc).name) + CHR$(34) 'Create INDEX " + Findex(NTC).name
- CY = CY + 1
- END IF
- NEXT ntc
-
- PRINT #ff, " ELSE"
- PRINT #ff, " OPEN masterfile$ FOR ISAM Recordtype " + CHR$(34) + "database" + CHR$(34) + " AS keyindex 'Open the data file"
- PRINT #ff, " END IF"
- PRINT #ff, ""
-
- CALL PROSRC.3
-
- PROSRC.CASE.1
-
- PROSRC.CASE.2.1
-
- PRINT #ff, ""
- CY = 1
-
- FOR ntc = 1 TO numberoffields
- IF Findex(ntc).key = "Y" THEN
-
- PRINT #ff, " sf$(" + STR$(CY) + ") = " + CHR$(34) + LEFT$(Findex(ntc).name, LEN(Findex(ntc).name) - 1) + CHR$(34)
-
- CY = CY + 1
- END IF
- NEXT ntc
-
- IF CY <= 10 THEN
- dl = CY - 1
- ELSE
- dl = 10
- END IF
-
- PRINT #ff, ""
- PRINT #ff, " sf = selbox(sf$()," + STR$(CY - 1) + "," + STR$(dl) + ",16, black, white, RED )"
- PRINT #ff, " SELECT CASE SF"
- PRINT #ff, ""
-
- CY = 1
-
- FOR ntc = 1 TO numberoffields
- IF Findex(ntc).key = "Y" THEN
- PRINT #ff, " CASE " + STR$(CY)
- PRINT #ff, " key$= string$(len(RecField." + RTRIM$(Findex(ntc).name) + ")," + CHR$(34) + " " + CHR$(34) + ")"
- PRINT #ff, " setindex KeyIndex, " + CHR$(34) + "Index" + RTRIM$(Findex(ntc).name) + CHR$(34)
- PRINT #ff, " nameofindex$ = " + CHR$(34) + "Index" + RTRIM$(Findex(ntc).name) + CHR$(34)
- CY = CY + 1
- END IF
- NEXT ntc
-
- PRINT #ff, " END SELECT"
- PRINT #ff, ""
-
- PROSRC.CASE.2.2
- PROSRC.CASE.3.1
-
- CY = 1
-
- FOR ntc = 1 TO numberoffields
- IF Findex(ntc).key = "Y" THEN
-
- PRINT #ff, " sf$(" + STR$(CY) + ") = " + CHR$(34) + LEFT$(Findex(ntc).name, LEN(Findex(ntc).name) - 1) + CHR$(34)
- PRINT #ff, " captal sf$(" + STR$(CY) + ")"
-
- CY = CY + 1
- END IF
- NEXT ntc
-
- IF CY <= 10 THEN
- dl = CY - 1
- ELSE
- dl = 10
- END IF
- PRINT #ff, ""
- PRINT #ff, " sf = selbox(sf$()," + STR$(CY - 1) + "," + STR$(dl) + ",16, black, white, RED )"
- PRINT #ff, ""
- PRINT #ff, " SELECT CASE SF"
-
- CY = 1
-
- FOR ntc = 1 TO numberoffields
- IF Findex(ntc).key = "Y" THEN
- PRINT #ff, " CASE " + STR$(CY)
- PRINT #ff, " key$= string$(len(RecField." + RTRIM$(Findex(ntc).name) + ")," + CHR$(34) + " " + CHR$(34) + ")"
- PRINT #ff, " setindex KeyIndex, " + CHR$(34) + "Index" + RTRIM$(Findex(ntc).name) + CHR$(34)
- PRINT #ff, " nameofindex$ = " + CHR$(34) + "Index" + RTRIM$(Findex(ntc).name) + CHR$(34)
- CY = CY + 1
- END IF
- NEXT ntc
-
- PRINT #ff, " END SELECT"
-
- PRINT #ff, ""
-
- PROSRC.CASE.3.3
-
- FOR j% = 1 TO numberoffields
-
- w$ = Findex(j%).name
- F$ = Findex(j%).format
- T$ = Findex(j%).type
- d$ = w$ + ":"
-
- CALL Trim(w$)
- CALL Trim(F$)
- CALL Trim(T$)
-
- IF LEN(w$) THEN
- IF j% = 1 THEN
-
- SELECT CASE T$
- CASE "N"
- PRINT #ff, " lp$ = userNformat((RTRIM$(RecField." + w$ + "))," + CHR$(34) + F$ + CHR$(34) + ") + " + CHR$(34) + " " + CHR$(34)
- CASE "I", "L", "S", "D", "C"
- PRINT #ff, " lp$ = userNformat((RTRIM$(STR$(RecField." + w$ + ")))," + CHR$(34) + F$ + CHR$(34) + ") + " + CHR$(34) + " " + CHR$(34)
- CASE ELSE
- PRINT #ff, " lp$ = userSformat((RTRIM$(RecField." + w$ + "))," + CHR$(34) + F$ + CHR$(34) + ") + " + CHR$(34) + " " + CHR$(34)
- END SELECT
-
- ELSE
-
- SELECT CASE T$
- CASE "N"
- PRINT #ff, " lp$ = lp$ + userNformat((RTRIM$(RecField." + w$ + "))," + CHR$(34) + F$ + CHR$(34) + ") + " + CHR$(34) + " " + CHR$(34)
- CASE "I", "L", "S", "D", "C"
- PRINT #ff, " lp$ = lp$ + userNformat((RTRIM$(STR$(RecField." + w$ + ")))," + CHR$(34) + F$ + CHR$(34) + ") + " + CHR$(34) + " " + CHR$(34)
- CASE ELSE
- PRINT #ff, " lp$ = lp$ + userSformat((RTRIM$(RecField." + w$ + "))," + CHR$(34) + F$ + CHR$(34) + ") + " + CHR$(34) + " " + CHR$(34)
- END SELECT
- END IF
- END IF
-
- NEXT j%
-
- PROSRC.CASE.3.4
-
- FOR j% = 1 TO numberoffields
-
- w$ = Findex(j%).name
- F$ = Findex(j%).format
- T$ = Findex(j%).type
- d$ = w$ + ":"
-
- CALL Trim(w$)
- CALL Trim(F$)
- CALL Trim(T$)
-
- IF LEN(w$) THEN
- IF j% = 1 THEN
-
- SELECT CASE T$
- CASE "N"
- PRINT #ff, " lp$ = userNformat((RTRIM$(RecField." + w$ + "))," + CHR$(34) + F$ + CHR$(34) + ") + " + CHR$(34) + " " + CHR$(34)
- CASE "I", "L", "S", "D", "C"
- PRINT #ff, " lp$ = userNformat((RTRIM$(STR$(RecField." + w$ + ")))," + CHR$(34) + F$ + CHR$(34) + ") + " + CHR$(34) + " " + CHR$(34)
- CASE ELSE
- PRINT #ff, " lp$ = userSformat((RTRIM$(RecField." + w$ + "))," + CHR$(34) + F$ + CHR$(34) + ") + " + CHR$(34) + " " + CHR$(34)
- END SELECT
-
- ELSE
-
- SELECT CASE T$
- CASE "N"
- PRINT #ff, " lp$ = lp$ + userNformat((RTRIM$(RecField." + w$ + "))," + CHR$(34) + F$ + CHR$(34) + ") + " + CHR$(34) + " " + CHR$(34)
- CASE "I", "L", "S", "D", "C"
- PRINT #ff, " lp$ = lp$ + userNformat((RTRIM$(STR$(RecField." + w$ + ")))," + CHR$(34) + F$ + CHR$(34) + ") + " + CHR$(34) + " " + CHR$(34)
- CASE ELSE
- PRINT #ff, " lp$ = lp$ + userSformat((RTRIM$(RecField." + w$ + "))," + CHR$(34) + F$ + CHR$(34) + ") + " + CHR$(34) + " " + CHR$(34)
- END SELECT
-
- END IF
- END IF
-
- NEXT j%
-
- PROSRC.CASE.3.5
- PROSRC.CASE.4.1
-
- PRINT #ff, " MsgLine " + CHR$(34) + "Press " + CHR$(24) + " for last " + CHR$(25) + " for next ENTER to select" + CHR$(34) + ",25 , 0, 7"
- PRINT #ff, " DrawBox 21, 22, 40, 3, 2, black, white, 1, black, white, 1"
- PRINT #ff, " CenterText " + CHR$(34) + "Select RecField Database" + CHR$(34) + ", 22, black, white"
- PRINT #ff, ""
-
- CY = 1
-
- FOR ntc = 1 TO numberoffields
- IF Findex(ntc).key = "Y" THEN
-
- PRINT #ff, " sf$(" + STR$(CY) + ") = " + CHR$(34) + LEFT$(Findex(ntc).name, LEN(Findex(ntc).name) - 1) + CHR$(34)
-
- CY = CY + 1
- END IF
- NEXT ntc
-
- IF CY <= 10 THEN
- dl = CY - 1
- ELSE
- dl = 10
- END IF
- PRINT #ff, ""
- PRINT #ff, " sf = selbox(sf$()," + STR$(CY - 1) + "," + STR$(dl) + ",16, black, white, RED )"
- PRINT #ff, ""
- PRINT #ff, " SELECT CASE SF"
-
- CY = 1
-
- FOR ntc = 1 TO numberoffields
- IF Findex(ntc).key = "Y" THEN
- PRINT #ff, " CASE " + STR$(CY)
- PRINT #ff, " key$= string$(len(RecField." + RTRIM$(Findex(ntc).name) + ")," + CHR$(34) + " " + CHR$(34) + ")"
- PRINT #ff, " setindex KeyIndex, " + CHR$(34) + "Index" + RTRIM$(Findex(ntc).name) + CHR$(34)
- PRINT #ff, " nameofindex$ = " + CHR$(34) + "Index" + RTRIM$(Findex(ntc).name) + CHR$(34)
- CY = CY + 1
- END IF
- NEXT ntc
-
- PRINT #ff, ""
- PRINT #ff, " END SELECT"
- PROSRC.CASE.4.2
-
- PRINT #ff, ""
-
- PROSRC.CASE.5.0
- PROSRC.CASE.6
- PROSRC.CASE.7.1
- PROSRC.CASE.7.2
-
- FOR sc = 1 TO numberoffields
-
- SELECT CASE sc
- CASE 1
- PRINT #ff, "getfieldinfo: ' prints screens and gets record info"
- PRINT #ff, ""
- PRINT #ff, " op = 1"
- PRINT #ff, ""
- PRINT #ff, " DO ' loop until page down or esc key"
- PRINT #ff, ""
- PRINT #ff, " pnc " + CHR$(34) + "ESC to exit PgDn TO update, " + CHR$(24) + " for prev " + CHR$(25) + " for next F1 edit help" + CHR$(34) + ", 25, 10, 0, 7 "
- PRINT #ff, ""
- PRINT #ff, " SELECT CASE OP"
- END SELECT
-
- PRINT #ff, ""
- PRINT #ff, " CASE" + STR$(sc) + " '" + Findex(sc).comment
-
- SELECT CASE sc
-
- CASE 1, 19, 37, 55, 73, 91, 109, 127, 145, 163, 181, 199, 217, 235, 253
-
- PRINT #ff, ""
- PRINT #ff, " CALL " + progfile$ + ".scn" + LTRIM$(STR$((sc \ 18) + 1))
- PRINT #ff, " CALL " + progfile$ + ".info" + LTRIM$(STR$((sc \ 18) + 1))
-
- END SELECT
-
- PRINT #ff, ""
- PRINT #ff, " LOCATE " + Findex(sc).frow + "," + Findex(sc).fcol
-
- fm$ = Findex(sc).format
- Trim fm$
-
- PRINT #ff, " format$ = " + CHR$(34) + fm$ + CHR$(34)
-
- SELECT CASE Findex(sc).case
- CASE "U"
- selcase = 1
- CASE "L"
- selcase = 2
- CASE ELSE
- selcase = 0
- END SELECT
-
- SELECT CASE Findex(sc).type
-
- CASE "I", "L", "S", "D", "C"
-
- PRINT #ff, " edit$ = str$(RecField." + RTRIM$(Findex(sc).name) + ")"
- PRINT #ff, " Trim edit$"
- PRINT #ff, " edit$ = FEN(0, WHITE, BLACK, edit$, format$, Ek, 0, 1, 1, 1, 1, 1, 0)"
- PRINT #ff, " Trim edit$"
- PRINT #ff, " RecField." + RTRIM$(Findex(sc).name) + "= VAL(edit$)"
-
- CASE "N"
-
- PRINT #ff, " edit$ = RecField." + RTRIM$(Findex(sc).name)
- PRINT #ff, " Trim edit$"
- PRINT #ff, " edit$ = FEN(0, WHITE, BLACK, edit$, format$, Ek, 0, 1, 1, 1, 1, 1, 0)"
- PRINT #ff, " RecField." + RTRIM$(Findex(sc).name) + "= edit$"
-
- CASE ELSE
-
- PRINT #ff, " edit$ = RecField." + RTRIM$(Findex(sc).name)
- PRINT #ff, " Trim edit$"
- PRINT #ff, " edit$ = FES(0, WHITE, BLACK, edit$, format$," + STR$(selcase) + ", Ek, 1, 0, 1, 1, 1, 0, 1, 0)"
- PRINT #ff, " RecField." + RTRIM$(Findex(sc).name) + "= edit$"
- END SELECT
- PRINT #ff, ""
- PRINT #ff, " SELECT CASE Ek ' get exit key"
- PRINT #ff, " CASE 1"
- PRINT #ff, " op = op - 1 ' goto previous field"
- PRINT #ff, " CASE 5"
- PRINT #ff, " op = op + 1 ' goto next field"
- PRINT #ff, " CASE 3"
- PRINT #ff, " op = op + 1"
- PRINT #ff, " CASE 4"
- PRINT #ff, " op = " + STR$(numberoffields + 1) + " 'page down so update"
- PRINT #ff, " CASE 7"
- PRINT #ff, " op = 999 'ESC key so exit"
- PRINT #ff, " END SELECT"
-
- NEXT sc
-
- PRINT #ff, ""
- PRINT #ff, " CASE " + STR$(numberoffields + 1) + " 'END REACHED"
- PRINT #ff, ""
- PRINT #ff, " SELECT CASE mopt 'do option"
- PRINT #ff, ""
- PRINT #ff, " 'INSERT or Change record key"
- PRINT #ff, ""
- PRINT #ff, " CASE 1 'INSERT"
- PRINT #ff, ""
- PRINT #ff, " INSERT keyindex, RecField"
- PRINT #ff, " CHECKPOINT"
- PRINT #ff, " EXIT DO 'INSERTED!"
- PRINT #ff, ""
- PRINT #ff, " CASE 2 'Edit, Update"
- PRINT #ff, ""
- PRINT #ff, " UPDATE keyindex, RecField"
- PRINT #ff, " CHECKPOINT ' update isam record"
- PRINT #ff, " EXIT DO"
- PRINT #ff, " CASE ELSE"
- PRINT #ff, " END SELECT"
- PRINT #ff, ""
- PRINT #ff, " CASE 999"
- PRINT #ff, " EXIT DO"
- PRINT #ff, " CASE ELSE"
- PRINT #ff, " END"
- PRINT #ff, " END SELECT"
- PRINT #ff, " LOOP"
- PRINT #ff, " RETURN"
- PRINT #ff, ""
- PRINT #ff, "InitRecField:"
-
- CY = 1
-
- FOR ntc = 1 TO numberoffields
- T$ = Findex(ntc).type
- CALL Trim(T$)
- SELECT CASE T$
- CASE "I", "L", "S", "D", "C"
- PRINT #ff, " RecField." + RTRIM$(Findex(ntc).name) + " = 0"
- CASE ELSE
- PRINT #ff, " RecField." + RTRIM$(Findex(ntc).name) + " = " + CHR$(34) + CHR$(34)
- END SELECT
- CY = CY + 1
- NEXT ntc
-
- PRINT #ff, "RETURN"
-
- FOR NS = 1 TO (numberoffields \ 18) + 1
-
- PROSRC.SCN.1 NS, progfile$
- ' screen
- ffs = FREEFILE
- OPEN "r", ffs, progfile$ + ".SCR", 80
- FIELD #ffs, 80 AS s1$
- FOR j% = 1 TO 24
- GET #ffs, j%
- scrnline$(j%) = s1$
- NEXT j%
- CLOSE ffs
-
- initindex
-
- FOR j% = 1 TO 24
- w$ = scrnline$(j%)
- CALL Trim(w$)
-
- IF LEN(w$) THEN
- w% = INSTR(scrnline$(j%), w$)
- PRINT #ff, " pnc " + CHR$(34) + w$ + CHR$(34) + "," + strval$(j%) + "," + strval$(w%) + ",fg,bg"
- END IF
- NEXT j%
-
- PRINT #ff, " end sub ' " + progfile$
- PROSRC.INFO.1 NS, progfile$
-
- FOR j% = 1 TO numberoffields
-
- w$ = Findex(j%).name
- F$ = Findex(j%).format
- T$ = Findex(j%).type
- d$ = w$ + ":"
-
- CALL Trim(w$)
- CALL Trim(F$)
- CALL Trim(T$)
-
- IF LEN(w$) THEN
-
- PRINT #ff, " fg = black" ' PNC " + CHR$(34) + d$ + CHR$(34) + "," + LTRIM$(STR$(j%)) + " + startp ,17,fg,bg"
- PRINT #ff, " bg = white"
- SELECT CASE T$
- CASE "N"
- PRINT #ff, " PNC userNformat ((RTRIM$(RecField." + w$ + "))," + CHR$(34) + F$ + CHR$(34) + ")," + Findex(j%).frow + "," + Findex(j%).fcol + ", fg, bg"
- CASE "I", "L", "S", "D", "C"
- PRINT #ff, " PNC userNformat ((RTRIM$(STR$(RecField." + w$ + ")))," + CHR$(34) + F$ + CHR$(34) + ")," + Findex(j%).frow + "," + Findex(j%).fcol + ", fg, bg"
- CASE ELSE
- PRINT #ff, " PNC userSformat ((RTRIM$(RecField." + w$ + "))," + CHR$(34) + F$ + CHR$(34) + ")," + Findex(j%).frow + "," + Findex(j%).fcol + ", fg, bg"
- END SELECT
- END IF
- NEXT j%
-
- PRINT #ff, " end sub ' " + progfile$
- NEXT NS
-
- CALL PROSRC.9
- CALL PROBRO.1
-
- PRINT #ff, "getreinfo: 'add if more than key RecField is displayed"
- PRINT #ff, ""
- PRINT #ff, " RETRIEVE indexnum, RecField"
-
- FOR j% = 1 TO numberoffields
-
- w$ = Findex(j%).name
- F$ = Findex(j%).format
- T$ = Findex(j%).type
- d$ = w$ + ":"
-
- CALL Trim(w$)
- CALL Trim(F$)
- CALL Trim(T$)
-
- IF LEN(w$) THEN
- IF j% = 1 THEN
- SELECT CASE T$
- CASE "N"
- PRINT #ff, " dl$ = userNformat((RTRIM$(RecField." + w$ + "))," + CHR$(34) + F$ + CHR$(34) + ") + " + CHR$(34) + " " + CHR$(34)
- CASE "I", "L", "S", "D", "C"
- PRINT #ff, " dl$ = userNformat((RTRIM$(STR$(RecField." + w$ + ")))," + CHR$(34) + F$ + CHR$(34) + ") + " + CHR$(34) + " " + CHR$(34)
- CASE ELSE
- PRINT #ff, " dl$ = userSformat((RTRIM$(RecField." + w$ + "))," + CHR$(34) + F$ + CHR$(34) + ") + " + CHR$(34) + " " + CHR$(34)
- END SELECT
- ELSE
- SELECT CASE T$
- CASE "N"
- PRINT #ff, " dl$ = dl$ + userNformat((RTRIM$(RecField." + w$ + "))," + CHR$(34) + F$ + CHR$(34) + ") + " + CHR$(34) + " " + CHR$(34)
- CASE "I", "L", "S", "D", "C"
- PRINT #ff, " dl$ = dl$ + userNformat((RTRIM$(STR$(RecField." + w$ + ")))," + CHR$(34) + F$ + CHR$(34) + ") + " + CHR$(34) + " " + CHR$(34)
- CASE ELSE
- PRINT #ff, " dl$ = dl$ + userSformat((RTRIM$(RecField." + w$ + "))," + CHR$(34) + F$ + CHR$(34) + ") + " + CHR$(34) + " " + CHR$(34)
- END SELECT
- END IF
- 'END IF
- END IF
-
- NEXT j%
-
- PRINT #ff, " DispLine$ = LEFT$(Dl$,70)"
- PRINT #ff, ""
- PRINT #ff, " RETURN"
- PRINT #ff, " END SUB"
-
- CLOSE ff
-
- MsgLine "Creating BAT file --> CREATE.BAT", 12, BLACK, WHITE
-
- ff = FREEFILE
- Trim progfile$
-
- OPEN "O", ff, "CREATE.BAT"
- PRINT #ff, "REM compile and link " + progfile$ + ".BAS"
- PRINT #ff, "BC /O/X/FS " + progfile$ + ".bas;"
- PRINT #ff, "LINK /EX " + progfile$ + "," + progfile$ + ".exe,, prolib71.lib;"
- PRINT #ff, "ERASE " + progfile$ + ".obj"
-
- CLOSE ff
-
- MsgLine "Creating BAT file --> EDIT.BAT", 12, BLACK, WHITE
-
- ff = FREEFILE
- Trim progfile$
-
- OPEN "O", ff, "EDIT.BAT"
- PRINT #ff, "REM editing " + progfile$ + ".BAS"
- PRINT #ff, "QBX " + progfile$ + " /Lprolib71"
- CLOSE ff
- END IF
- 'ELSE
- 'noreport
- 'END IF
- ELSE
- noscreen
- END IF
-
- END SUB
-
- SUB initindex STATIC
-
- DIM TempField AS RecordType
-
- FOR j% = 1 TO 24
- FOR k% = 1 TO 80
- fieldpointer%(j%, k%) = 0
- NEXT k%
- NEXT j%
-
- LastREC = LOF(datfile) \ LEN(TempField)
-
- numberoffields = 0
- FOR record = 1 TO LastREC
-
- ' Read a record from the file and put each field in the array.
-
- GET #datfile, record, TempField
-
-
- IF TempField.status = "U" THEN
-
- Findex(record).status = TempField.status
- Findex(record).Num = TempField.Num
- Findex(record).name = TempField.name
- Findex(record).type = TempField.type
- Findex(record).case = TempField.case
- Findex(record).key = TempField.key
- Findex(record).decimal = TempField.decimal
- Findex(record).length = TempField.length
- Findex(record).format = TempField.format
- Findex(record).frow = TempField.frow
- Findex(record).fcol = TempField.fcol
- Findex(record).comment = TempField.comment
- Findex(record).progname = TempField.progname
- Findex(record).recnum = record
-
- fl$ = TempField.format
- Trim fl$
- FOR fieldREC% = VAL(TempField.fcol) TO VAL(TempField.fcol) + LEN(fl$) - 1
- fieldpointer%(VAL(TempField.frow), fieldREC%) = record
- NEXT
-
- numberoffields = numberoffields + 1
-
- END IF
-
- NEXT record
-
- END SUB
-
- '
- SUB RecFieldselect (indexnum, key$, MastRec, IndexRec, exitcode) STATIC
-
- fg = WHITE
- bg = BLUE
-
- REDIM dg$(5)
- REDIM TempMasREC(10)
- REDIM TempIdxREC(10)
-
- CONST CORRUPT = "Error: PIM Index Corrupt"
- CONST EX$ = " ESC = Exit ENTER = Select ? = Key search " ' F1 = Options "
-
- 'define select option window
-
- row = 6
- col = 3
- lin = 10
- numofsel = 0
-
- exitcode = 0 'What's selected
- bodertype = 2 'Border typeincode
-
- Nf = BLACK 'Normal Foreground
- Nb = WHITE 'Normal Background
- sf = WHITE + 8 'Select Foreground
- SB = BLACK 'Select Background
- ff = YELLOW 'Frame Foreground
- Fb = BLACK 'Frame Background
-
- 'end of select option's
-
- MsgLine EX$, 25, 0, 7
-
- restart:
-
- IF PIMstats(indexnum) = 0 THEN 'No keys in the index
- curmasrec = 0
- IndexRec = 0
- exitcode = 0 'code No keys in the Index
- EXIT SUB
- END IF
-
- KeyLen = 20
- skey$ = "FIELD NAME"
- dg$(1) = "Enter FIELD NAME"
- dg$(2) = "An exact match is not needed."
-
- height = lin
- startpos = height
- col = 80 / 2 - KeyLen / 2
- dwidth = KeyLen 'Maximum(KeyLen, LEN(Ex$))
-
- Trim dg$(1)
- Trim dg$(2)
-
- Dwidth2 = dwidth
- dwidth = dwidth + 4
-
- totalheight = height + 2 'Scroll box height (plus borders)
- totalheight = totalheight + 2 'Quit Box + ESC + lineNum
- checkheight = totalheight + row - 1 'Check the complete height
-
- IF checkheight > MAXROW THEN
- curmasrec = 0
- IndexRec = 0
- EXIT SUB
- END IF
-
- CheckWidth = dwidth + col - 1
-
- IF CheckWidth > 80 THEN
- curmasrec = 0
- IndexRec = 0
- EXIT SUB
- END IF
- 'Save Screen
-
- GetBackground row, col, row + totalheight + 2, col + dwidth + 1, buf$
- DrawBox row, col, dwidth, totalheight, bodertype, ff, Fb, 1, Nf, Nb, 0
-
- Crow = row + height + 1
- Ccol = col + 2
- Acc$ = STRING$(dwidth - 2, 196)
-
- pnc Acc$, Crow, Ccol - 1, ff, Fb
-
- Crow = row + height + 2
- kcol = Ccol + KeyLen / 2 - LEN(skey$) / 2
-
- pnc skey$, Crow, kcol, ff, Fb
-
- GOSUB homeCkeys 'Display from the top
- GOSUB DisplayCkeys 'Display the Ckeys
- CurrentROW = 1 'Current Row
-
- DO 'Loop
- Acc$ = DispLine$(CurrentROW)
-
- IF LEN(Acc$) < Dwidth2 - 2 THEN
- Acc$ = Acc$ + STRING$(Dwidth2 - LEN(Acc$), 32)
- END IF
-
- Crow = CurrentROW + row
- pnc Acc$, Crow, Ccol, sf, SB
-
- kbd$ = ""
-
- WHILE kbd$ = ""
- kbd$ = INKEY$
- WEND
-
- IF LEN(kbd$) = 1 THEN
- useroption = ASC(RIGHT$(kbd$, 1))
-
- SELECT CASE useroption
-
- CASE 63 '? search key
-
- DialogBox dg$(), 1, 1, 20, ff, Fb, Nf, Nb, 1, ans$, "", Exk
-
- key$ = ans$
- 'IndexFind
- PIM "S", indexnum, key$, MastRec, IndexRec
-
- IF IndexRec THEN
- GOSUB getrecinfo
- DispLine$(1) = DispLine$
- TempMasREC(1) = ABS(MastRec)
- TempIdxREC(1) = IndexRec
-
- ELSE
- PRINT CORRUPT
- END
- END IF
-
- PrevMastRec = MastRec
- PrevIndexRec = IndexRec
-
- GOSUB GetNextCten
- CurrentROW = 1
- GOSUB DisplayCkeys
-
- CASE 48 TO 57, 65 TO 90, 97 TO 122 'first letter search
- 'IndexFind
- key$ = UCASE$(CHR$(useroption))
-
- PIM "S", indexnum, key$, MastRec, IndexRec
-
- IF IndexRec THEN
- GOSUB getrecinfo
- DispLine$(1) = DispLine$
- TempMasREC(1) = ABS(MastRec)
- TempIdxREC(1) = IndexRec
-
- ELSE
- PRINT CORRUPT
- END
- END IF
-
- PrevMastRec = MastRec
- PrevIndexRec = IndexRec
-
- GOSUB GetNextCten
- CurrentROW = 1
- GOSUB DisplayCkeys
-
- CASE 27 'ESCAPE
- key$ = ""
- MastRec = 0
- IndexRec = 0
- exitcode = 1 ' ESC
- EXIT DO
-
- CASE 13 'RETURN
- key$ = DispLine$(CurrentROW)
- MastRec = TempMasREC(CurrentROW)
- IndexRec = TempIdxREC(CurrentROW)
- exitcode = 2 ' RETURN
- EXIT DO
-
- CASE ELSE
- END SELECT
-
- END IF
-
- IF LEN(kbd$) = 2 THEN
- useroption = ASC(RIGHT$(kbd$, 1))
-
- SELECT CASE useroption
-
- CASE 59
-
- Fkey = useroption - 58
- IF numofsel >= Fkey THEN
- exitcode = Fkey
- key$ = DispLine$(CurrentROW)
- MastRec = TempMasREC(CurrentROW)
- IndexRec = TempIdxREC(CurrentROW)
-
- menu$ = "1 - Search by NAME\"
- menu$ = menu$ + "2 - Search by length\"
-
- indexnum = MenuWindow(0, 0, menu$, "Search option", BLACK, WHITE, RED, 0)
-
- PutBackground row, col, buf$
- buf$ = ""
- MsgLine EX$, 25, 0, 7
-
- GOTO restart
- END IF
-
- CASE 71 'Home
- CurrentROW = 1
- GOSUB homeCkeys
- GOSUB DisplayCkeys
-
- CASE 81 'pg Down
- CurrentROW = 1
- FOR lineNum = 1 TO height
- TempMasREC(lineNum) = 0
- TempIdxREC(lineNum) = 0
- PrevMastRec = 0
- DispLine$(lineNum) = STRING$(KeyLen, 32)
- NEXT lineNum
-
- PIM "N", indexnum, key$, MastRec, IndexRec
-
- IF IndexRec THEN
- GOSUB getrecinfo
- DispLine$(1) = DispLine$
- TempMasREC(1) = MastRec
- TempIdxREC(1) = IndexRec
-
- ELSE
- PRINT CORRUPT
- END
- END IF
-
- PrevMastRec = MastRec
- PrevIndexRec = IndexRec
-
- GOSUB GetNextCten
- GOSUB DisplayCkeys
-
- CASE 73 'pg Up
- CurrentROW = 1
- GOSUB GetLastCpage
- GOSUB DisplayCkeys
-
- CASE 79 'End
- IF startpos >= height THEN
- CurrentROW = 1
- GOSUB endCkeys
- GOSUB DisplayCkeys
- END IF
- CASE 80 'Down Arrow
- CurrentROW = CurrentROW + 1
- IF CurrentROW > height THEN
- CurrentROW = CurrentROW - 1
-
- IF TempIdxREC(height) <> 0 THEN
- key$ = DispLine$(height)
- MastRec = TempMasREC(height)
- IndexRec = TempIdxREC(height)
- PrevIndexRec = IndexRec
- 'IndexNext
- PIM "N", indexnum, key$, MastRec, IndexRec
-
- IF IndexRec <> 0 THEN
- IF PrevIndexRec <> IndexRec THEN
- FOR lineNum = 1 TO height - 1
- TempIdxREC(lineNum) = TempIdxREC(lineNum + 1)
- TempMasREC(lineNum) = TempMasREC(lineNum + 1)
- DispLine$(lineNum) = DispLine$(lineNum + 1)
- NEXT lineNum
- GOSUB getrecinfo
- DispLine$(height) = DispLine$
- TempMasREC(height) = MastRec
- TempIdxREC(height) = IndexRec
- END IF
- END IF
- END IF
- ELSE
- IF TempIdxREC(CurrentROW) = 0 THEN
- CurrentROW = CurrentROW - 1
- END IF
- END IF
- GOSUB DisplayCkeys
-
- CASE 72 'Up Arrow
- CurrentROW = CurrentROW - 1
- IF CurrentROW < 1 THEN
- CurrentROW = CurrentROW + 1
-
- IF TempIdxREC(1) <> 0 THEN
- key$ = DispLine$(1)
- MastRec = TempMasREC(1)
- IndexRec = TempIdxREC(1)
- PrevIndexRec = IndexRec
- 'IndexPrevious
- PIM "P", indexnum, key$, MastRec, IndexRec
-
- IF IndexRec <> 0 THEN
- IF PrevIndexRec <> IndexRec THEN
- FOR lineNum = height TO 2 STEP -1
- TempIdxREC(lineNum) = TempIdxREC(lineNum - 1)
- TempMasREC(lineNum) = TempMasREC(lineNum - 1)
- DispLine$(lineNum) = DispLine$(lineNum - 1)
- NEXT lineNum
- GOSUB getrecinfo
- DispLine$(1) = DispLine$
- TempMasREC(1) = MastRec
- TempIdxREC(1) = IndexRec
- END IF
- END IF
- END IF
- ELSE
- IF TempIdxREC(CurrentROW) = 0 THEN
- CurrentROW = CurrentROW + 1
- END IF
- END IF
- GOSUB DisplayCkeys
-
- CASE ELSE
- END SELECT
- END IF
- LOOP
-
- 'Restore Screen
-
- PutBackground row, col, buf$
- buf$ = ""
- EXIT SUB
-
- DisplayCkeys:
-
- FOR lineNum = 1 TO height
- Acc$ = DispLine$(lineNum)
- IF LEN(Acc$) < Dwidth2 THEN
- Acc$ = Acc$ + STRING$(Dwidth2 - LEN(Acc$), 32)
- END IF
- Crow = row + lineNum
- pnc Acc$, Crow, Ccol, Nf, Nb
- NEXT lineNum
- startpos = lineNum
- RETURN
-
- homeCkeys:
-
- FOR lineNum = 1 TO height
- TempMasREC(lineNum) = 0
- TempIdxREC(lineNum) = 0
- PrevMastRec = 0
- DispLine$(lineNum) = STRING$(KeyLen, 32)
- NEXT lineNum
-
- PIM "F", indexnum, key$, MastRec, IndexRec
-
- IF IndexRec THEN
-
- GOSUB getrecinfo
- DispLine$(1) = DispLine$
- TempMasREC(1) = MastRec
- TempIdxREC(1) = IndexRec
-
- ELSE
- PRINT CORRUPT
- END
- END IF
-
- PrevMastRec = MastRec
- PrevIndexRec = IndexRec
-
- CurrentROW = 1
-
- GetNextCten:
-
- FOR lineNum = 2 TO height
- TempMasREC(lineNum) = 0
- TempIdxREC(lineNum) = 0
- DispLine$(lineNum) = STRING$(KeyLen, 32)
- NEXT lineNum
-
- FOR lineNum = 2 TO height
- DispLine$(lineNum) = STRING$(KeyLen, 32)
- TempMasREC(lineNum) = 0
- TempIdxREC(lineNum) = 0
-
- PIM "N", indexnum, key$, MastRec, IndexRec
-
- IF IndexRec > 0 THEN
- IF PrevMastRec = MastRec AND IndexRec = PrevIndexRec THEN
- EXIT FOR
- ELSE
- GOSUB getrecinfo
- DispLine$(lineNum) = DispLine$
- TempMasREC(lineNum) = MastRec
- TempIdxREC(lineNum) = IndexRec
- PrevMastRec = MastRec
- PrevIndexRec = IndexRec
-
- END IF
- ELSE
- EXIT FOR
- END IF
- NEXT lineNum
-
- RETURN
-
- endCkeys:
- dsppos = 1
- FOR lineNum = 1 TO height
- TempMasREC(lineNum) = 0
- TempIdxREC(lineNum) = 0
- DispLine$(lineNum) = STRING$(KeyLen, 32)
- NEXT lineNum
-
- PIM "L", indexnum, key$, MastRec, IndexRec
-
- IF IndexRec THEN
-
- GOSUB getrecinfo
- DispLine$(height) = DispLine$
- TempMasREC(height) = MastRec
- TempIdxREC(height) = IndexRec
- ELSE
- PRINT CORRUPT
- END
- END IF
-
- PrevMastRec = MastRec
- PrevIndexRec = IndexRec
- CurrentROW = 1
-
- GetPreviousCten:
-
- FOR lineNum = 1 TO height - 1
- TempMasREC(lineNum) = 0
- TempIdxREC(lineNum) = 0
- DispLine$(lineNum) = STRING$(KeyLen, 32)
- NEXT lineNum
- startpos = 1
- FOR lineNum = height - 1 TO 1 STEP -1
-
- DispLine$(lineNum) = STRING$(KeyLen, 32)
-
- PIM "P", indexnum, key$, MastRec, IndexRec
-
- IF IndexRec > 0 THEN
- IF PrevIndexRec = IndexRec AND PrevMastRec = MastRec THEN
-
- EXIT FOR
- ELSE
- startpos = startpos + 1
- GOSUB getrecinfo
- DispLine$(lineNum) = DispLine$
- TempMasREC(lineNum) = MastRec
- TempIdxREC(lineNum) = IndexRec
- PrevMastRec = MastRec
- PrevIndexRec = IndexRec
- startrpos = startpos + 1
-
- END IF
- ELSE
-
- EXIT FOR
- END IF
- NEXT lineNum
-
- RETURN
-
- GetnextCpage:
-
- key$ = DispLine$(height)
- MastRec = TempMasREC(height)
-
- FOR lineNum = 1 TO 2
- TempMasREC(lineNum) = 0
- TempIdxREC(lineNum) = 0
- PrevMastRec = 0
- DispLine$(lineNum) = STRING$(KeyLen, 32)
- NEXT lineNum
-
- PIM "N", indexnum, key$, MastRec, IndexRec
-
- IF IndexRec THEN
- GOSUB getrecinfo
- DispLine$(1) = DispLine$
- TempMasREC(1) = MastRec
- TempIdxREC(1) = IndexRec
- ELSE
- GOTO endCkeys
- RETURN
- END IF
-
- PrevMastRec = MastRec
- PrevIndexRec = IndexRec
- CurrentROW = 1
-
- GetNextCpg:
-
- FOR lineNum = 2 TO height
- TempMasREC(lineNum) = 0
- TempIdxREC(lineNum) = 0
- DispLine$(lineNum) = STRING$(KeyLen, 32)
- NEXT lineNum
-
- FOR lineNum = 2 TO height
- DispLine$(lineNum) = STRING$(KeyLen, 32)
- TempMasREC(lineNum) = 0
- TempIdxREC(lineNum) = 0
-
- 'get Next record
- PIM "N", indexnum, key$, MastRec, IndexRec
- IF IndexRec > 0 THEN
- IF PrevMastRec = MastRec AND IndexRec = PrevIndexRec THEN
- GOTO endCkeys
-
- ELSE
- GOSUB getrecinfo
- DispLine$(lineNum) = DispLine$
- TempMasREC(lineNum) = MastRec
- TempIdxREC(lineNum) = IndexRec
- PrevMastRec = MastRec
- PrevIndexRec = IndexRec
-
- END IF
- ELSE
-
- GOTO endCkeys
-
- END IF
-
- NEXT lineNum
-
- RETURN
-
- GetLastCpage:
-
- key$ = DispLine$(1)
- MastRec = TempMasREC(1)
-
- FOR lineNum = 1 TO height
- TempMasREC(lineNum) = 0
- TempIdxREC(lineNum) = 0
- DispLine$(lineNum) = STRING$(KeyLen, 32)
- NEXT lineNum
-
- PIM "P", indexnum, key$, MastRec, IndexRec
-
- IF IndexRec THEN
-
- GOSUB getrecinfo
- DispLine$(height) = DispLine$
- TempMasREC(height) = MastRec
- TempIdxREC(height) = IndexRec
- ELSE
- GOTO homeCkeys
- END IF
-
- PrevMastRec = MastRec
- PrevIndexRec = IndexRec
- CurrentROW = 1
-
- GetLastCpg:
-
- FOR lineNum = 1 TO height - 1
- TempMasREC(lineNum) = 0
- TempIdxREC(lineNum) = 0
- DispLine$(lineNum) = STRING$(KeyLen, 32)
- NEXT lineNum
-
- FOR lineNum = height - 1 TO 1 STEP -1
- DispLine$(lineNum) = STRING$(KeyLen, 32)
-
- PIM "P", indexnum, key$, MastRec, IndexRec
-
- IF IndexRec > 0 THEN
- IF PrevIndexRec = IndexRec AND PrevMastRec = MastRec THEN
- GOTO homeCkeys
- ELSE
- GOSUB getrecinfo
- DispLine$(lineNum) = DispLine$
- TempMasREC(lineNum) = MastRec
- TempIdxREC(lineNum) = IndexRec
- PrevMastRec = MastRec
- PrevIndexRec = IndexRec
-
- END IF
- END IF
- NEXT lineNum
-
- RETURN
-
- getrecinfo: 'add if more than key RecField is displayed
- '
- GET #datfile, MastRec, RecField
-
- cnam$ = RecField.name
- Cnum$ = RecField.Num
- 'RecField.progname
- 'RecField.length
- cph1$ = RecField.format
- 'trim tint$
- 'RecField.type
- 'RecField.case
- 'RecField.decimal
- 'RecField.comment
- 'RecField.frow
- tcap$ = RecField.fcol
-
- ' IF indexnum = 1 THEN
- DispLine$ = cnam$ 'add$' + " " + cph1$
- ' ELSE
- ' DispLine$ = cln$ + " " + tcap$
- ' END IF
- RETURN
-
- END SUB
-
- SUB seldatafile
- mainscreen
- MsgLine "Press " + CHR$(24) + " for last " + CHR$(25) + " for next ENTER to select", 25, 0, 7
-
- DrawBox 21, 22, 40, 3, 2, BLACK, WHITE, 1, BLACK, WHITE, 1
- CenterText "Select RecField Database", 22, BLACK, WHITE
- tryagian:
- filespec$ = SelFiles$("*.FLD")
- delimit = INSTR(filespec$, ".")
-
- IF delimit THEN
- FileName$ = LEFT$(filespec$, delimit - 1)
- fileext$ = RIGHT$(filespec$, LEN(filespec$) - (delimit))
- ELSE
- FileName$ = filespec$
- fileext$ = ".FLD"
- END IF
-
- Trim FileName$
- IF FileName$ = "" THEN
- masterFile$ = ""
- ELSE
- masterFile$ = FileName$ + "." + fileext$
- END IF
-
- END SUB
-
-