home *** CD-ROM | disk | FTP | other *** search
- /GFILE updated 6/4/86 -- MAD
- ────────────────────────────── READ ASCII FILE ───────────────────────────
-
- First you should select the DataFlex database you wish to read data into.
- ________________________________________________
-
-
- NUMBER DATAFLEX FILENAME FILE ROOT NAME
- ====== ====================== ========================================
- __. ______________________ ________________________________________
- __. ______________________ ________________________________________
- __. ______________________ ________________________________________
- __. ______________________ ________________________________________
- __. ______________________ ________________________________________
- __. ______________________ ________________________________________
- __. ______________________ ________________________________________
- __. ______________________ ________________________________________
- __. ______________________ ________________________________________
- __. ______________________ ________________________________________
- __. ______________________ ________________________________________
- __. ______________________ ________________________________________
-
-
- Please enter the number of the file to read data into: __.
- (Next-key for more, Previous-key to start over. Help available)
- /FILEHELP HELP
- ╔═══════════════════════════════════════════════════════════════════════════╗
- ║ ------------------------- File selection help ------------------------- ║
- ║ ║
- ║ This utility will help you to build a program to read a standard ║
- ║ ASCII file into an existing DataFlex data file. ║
- ║ ║
- ║ In this section you must select the DataFlex file to receive the data. ║
- ║ You must enter the file number corresponding to the file you wish to use. ║
- ║ ║
- ║ If the file you want is not listed, press the NEXT RECORD key to see ║
- ║ more files. ║
- ║ ║
- ║ To repeat the list of files from the beginning, press the PREVIOUS RECORD ║
- ║ key. ║
- ║ ║
- ║ Press any key to return to the file selection menu. ║
- ╚═══════════════════════════════════════════════════════════════════════════╝
- /PARAM
- ────────────────────────── READ ASCII FILE ───────────────────────────
-
- This utility will help you to build a program to read a standard
- ASCII data file into an existing DataFlex data file.
-
-
- NAME OF THE DATAFLEX DATA FILE TO READ DATA INTO: ________
-
-
-
- Now provide the name of the ASCII data file to read from:
-
- READ FROM ASCII FILE: ________________________________________
-
-
-
- The program source file to be generated must be given a name.
- Enter the name to call the source file. BE CAREFUL not to call
- it by the same name as another program, or that file will be
- overwritten.
-
- PROGRAM FILE NAME: ________________________________________
- /FMAT
- ─────────────────────────── READ ASCII FILE ───────────────────────────
-
- Some ASCII files have each element on a separate line, such that each
- record is made up of multiple lines. This is a LINE-delimited file.
-
- Other files have all of the elements for each record on one line, with
- a comma between each elememt; text elements have quotes around them.
- This is a COMMA-delimited file.
-
- ENTER AN "L" IF YOUR ASCII FILE IS LINE-DELIMITED;
- OTHERWISE, ENTER A "C" FOR COMMA-DELIMITED: _
-
-
-
- You may select which elements in the input file will go into which
- DataFlex fields. Or, you may simply read the ASCII file directly into
- an identically-defined DataFlex file.
-
- In order to read directly into an identically-defined DataFlex file,
- from element to field on a one-to-one basis, your ASCII file must
- contain the correct number of elements.
-
- ARE YOU READING INTO AN IDENTICALLY-DEFINED DATAFLEX FILE? (Y/N): _
- /FMAT2
- ─────────────────────────── READ ASCII FILE ───────────────────────────
-
-
-
-
- Before you begin selecting into which DataFlex fields to read the ASCII
- file, you must know how many fields are in each record in the ASCII file.
-
-
-
-
- HOW MANY FIELDS IN EACH ASCII RECORD? __.
-
- /NAMES
- ────── READ ASCII FILE ────── FILE: __________
-
- FLD# NAME FLD# NAME FLD# NAME
- __. _______________ __. _______________ __. _______________
- __. _______________ __. _______________ __. _______________
- __. _______________ __. _______________ __. _______________
- __. _______________ __. _______________ __. _______________
- __. _______________ __. _______________ __. _______________
- __. _______________ __. _______________ __. _______________
- __. _______________ __. _______________ __. _______________
- __. _______________ __. _______________ __. _______________
- __. _______________ __. _______________ __. _______________
- __. _______________ __. _______________ __. _______________
- __. _______________ __. _______________ __. _______________
- __. _______________ __. _______________ __. _______________
- __. _______________ __. _______________ __. _______________
- __. _______________ __. _______________ __. _______________
- __. _______________ __. _______________ __. _______________
-
- FIELD# __. OF ASCII FILE GOES INTO DATAFLEX FIELD# __.
-
- Next-key for more fields Previous-key to start fields over
- RETURN to discard the ASCII field ESCAPE to exit {HELP AVAILABLE}
- /FIELDHELP HELP
- ───────────────────────────── READ ASCII FILE ─────────────────────────────
-
- Element assignment help
-
- ───────────────────────────────────────────────────────────────────────────
-
- In this section you must select where each field in the input file is to
- go in the DataFlex records which are being created.
-
- The "FIELD#" prompt refers to the INPUT data, starting at the first field
- (Number 1). Select the number of the element in __________ that should
- receive this data.
-
- If the field you want is NOT shown, you may press the NEXT RECORD key to
- see more fields. You may restart the field display by pressing the
- PREVIOUS RECORD key.
-
-
-
- Press any key to return to the Element Assignment screen.
- /GOCOMP
- ─────────────────────────────── READ ASCII FILE ───────────────────────────────
-
-
-
- Your program
-
-
-
- is now complete !
-
-
- You may compile it now or edit it first.
-
-
- Compile ? (Y/N) _
- /*
- // =========================================================================
- // THIS MODULE MAY BE DISTRIBUTED WITH RUNTIME LICENSES
- // =========================================================================
-
- // declarations, names, initializations
- PAGE SET FILEHELP AT 4 2 COLORS 1 1
- STRING TAGFILE 40 TAGNAME 40 ELEMENT 20 CMPILE 1 FLEXNAME 40 REM 2
- INTEGER FIELD#
- NUMBER LINEC
- INDICATE FIRST TRUE
- CHARACTER 47 TO REM
- APPEND REM REM
- MOVE 1 TO LINEC
- NAME NAMES.92 LINE
- NAME NAMES.93 ELEMENT#
- DISPLAY 'You must enter one of these numbers to continue.' TO GFILE.1
-
- // get file names
- GETNAME:
- MOVE 0 TO FILENUMBER
- NAMELP: BLANKFORM GFILE.2 THRU GFILE.38
- PAGE GFILE
-
- FOR WINDOWINDEX FROM 0 TO 33
- NEXT_ONE:
- FILELIST NEXT
- [FOUND] BEGIN
- FILELIST PATHNAME TO TAGFILE FLEXNAME
- IF TAGFILE EQ '' GOTO NEXT_ONE
- MOVE FILENUMBER TO GFILE.2&
- MOVE FLEXNAME TO GFILE.3&
- MOVE TAGFILE TO GFILE.4&
- CALC (WINDOWINDEX + 2) TO WINDOWINDEX
- END
- [FOUND] LOOP
- [NOT FOUND] MOVE '<<< NO MORE FILES >>>' TO GFILE.3&
-
- ACCNAME:
- BLANKFORM GFILE.38
- ACCEPT GFILE.38
- [KEY.NEXT][FOUND] GOTO NAMELP
- [KEY.NEXT] GOTO ACCNAME
- [KEY.PREVIOUS] GOTO GETNAME
- IF GFILE.38 EQ '' GOTO ACCNAME
- FILELIST GFILE.38
- FILELIST PATHNAME TO TAGFILE PARAM.1
- MOVE PARAM.1 TO FIELDHELP.1
- IF TAGFILE EQ '' BEGIN
- MOVE GFILE.1 TO GFILE.1 // light up message
- GOTO ACCNAME
- END
-
- // open tags
- INTEGER FLDNUM
- APPEND TAGFILE ".TAG"
- OPENTAG:
- INDICATE ENDTAG FALSE
- DIRECT_INPUT TAGFILE
- MOVE 0 TO FLDNUM
- [SEQEOF] BEGIN
- ERROR 101 "FILE NOT FOUND"
- GOTO ACCNAME
- END
- [FIRST] BEGIN
- ACCEPT PARAM.2 {CAPSLOCK,REQUIRED}
- ACCEPT PARAM.3 {CAPSLOCK,REQUIRED}
- ACCEPT FMAT.1 {CAPSLOCK,CHECK='L|C'}
- ACCEPT FMAT.2 {CAPSLOCK,CHECK='Y|N'}
- INDICATE COMMA AS FMAT.1 EQ 'C'
- DIRECT_OUTPUT PARAM.3
- WRITELN '/*'
- WRITELN 'CLEARSCREEN'
- WRITELN
- WRITELN 'STRING TEMSTR'
- WRITELN 'NUMBER RECS '
- WRITELN
- WRITELN 'DIRECT_INPUT "' PARAM.2 '"'
- WRITELN '[SEQEOF] ERROR 75 "' PARAM.2 '"'
- WRITELN '[SEQEOF] ABORT'
- WRITELN
- WRITELN 'OPEN ' PARAM.1
- WRITELN
- WRITELN 'REPEAT'
- IF FMAT.2 EQ 'Y' GOTO ONE_TO_ONE //skip selections
- ACCEPT FMAT2.1 {RANGE=1,255}
- END
-
-
-
- // read tags
- BLANKFORM NAMES
- PAGE NAMES
- MOVE PARAM.1 TO NAMES.1
- INDICATE FIRST FALSE
- DISTAG:
- BLANKFORM NAMES.2 THRU NAMES.91
- FOR WINDOWINDEX FROM 0 TO 89
- XTAG: READLN TAGNAME
- [SEQEOF] INDICATE ENDTAG TRUE
- [NOT SEQEOF] BEGIN
- IF TAGNAME LT 'A' GOTO XTAG // bypass "@" fields
- INCREMENT FLDNUM
- MOVE FLDNUM TO NAMES.2&
- MOVE TAGNAME TO NAMES.3&
- INCREMENT WINDOWINDEX
- END
- [NOT SEQEOF] LOOP
-
- // get line
- REPEAT
- MOVE LINEC TO LINE
- REPEAT
- ACCELEM: CLEARFORM ELEMENT#
- ACCEPT ELEMENT# {RANGE=0,255}
- [KEY.NEXT][ENDTAG] GOTO ACCELEM
- [KEY.NEXT] GOTO DISTAG
- [KEY.PREVIOUS] GOTO OPENTAG
- INDICATE BLANK AS ELEMENT# EQ 0
- [BLANK][NOT COMMA] WRITELN ' READLN TEMSTR'
- [BLANK][COMMA] WRITELN ' READ TEMSTR'
- [BLANK] GOTO ENDLOOP2
- MOVE 0 TO WINDOWINDEX
- FOR WINDOWINDEX FROM 0 TO 89
- INDICATE LASTIF FALSE
- IF NAMES.2& EQ ELEMENT# BEGIN
- CLEARFORM NAMES.2&
- MOVE NAMES.3& TO ELEMENT
- [COMMA] WRITELN ' READ ' PARAM.1 '.' ELEMENT
- [NOT COMMA] WRITELN ' READLN ' PARAM.1 '.' ELEMENT
- INCREMENT WINDOWINDEX
- INDICATE LASTIF TRUE
- GOTO ENDLOOP
- END
- INCREMENT WINDOWINDEX
- LOOP
- LOOP
- ENDLOOP:
- [NOT LASTIF] CLEARFORM ELEMENT#
- ENDLOOP2: CALC (LINEC+1) TO LINEC
- UNTIL LINEC GT FMAT2.1
- GOTO FINISH
-
- ONE_TO_ONE: //direct transfer to identically-defined file
- INDICATE FIRST FALSE
- REPEAT
- READLN TAGNAME
- [COMMA][NOT SEQEOF] WRITELN ' READ ' PARAM.1 '.' TAGNAME
- [NOT COMMA][NOT SEQEOF] WRITELN ' READLN ' PARAM.1 '.' TAGNAME
- UNTIL [SEQEOF]
-
- KEYPROC KEY.ESCAPE
- FINISH: CLEARSCREEN
- [FIRST] ABORT
- [COMMA] WRITELN ' READLN'
- WRITELN
- WRITELN ' [NOT SEQEOF] BEGIN'
- WRITELN ' SAVERECORD ' PARAM.1
- WRITELN ' CLEAR ' PARAM.1
- WRITELN ' SHOW "*"'
- WRITELN ' CALC (RECS + 1) TO RECS'
- WRITELN ' END'
- WRITELN
- WRITELN ' KEYCHECK BEGIN ' REM ' If a key has been pressed'
- WRITELN ' SHOWLN ' REM ' see if the operator wants to quit'
- WRITELN ' SHOWLN "A KEY HAS BEEN PRESSED WITH " RECS " RECORDS SAVED"'
- WRITELN ' SHOW "PRESS ANY KEY TO CONTINUE, ESCAPE TO CANCEL"'
- WRITELN ' INKEY TEMSTR'
- WRITELN ' [KEY.ESCAPE] ABORT'
- WRITELN ' END'
- WRITELN 'UNTIL [SEQEOF]'
- WRITELN
- WRITELN REM ' Every record has been loaded '
- WRITELN 'SHOWLN '
- WRITELN 'SHOWLN RECS " RECORDS HAVE BEEN ADDED TO ' PARAM.1 '"'
- WRITELN 'SHOW "PRESS ANY KEY TO CONTINUE "'
- WRITELN 'INKEY TEMSTR'
- WRITELN 'ABORT'
- [KEY.ESCAPE] ABORT
-
- // give operator option to compile generated code
- PAGE GOCOMP
- INTEGER TMP
- LENGTH PARAM.3 TO TMP
- GOTOXY 6 ((79-TMP) / 2)
- SHOW PARAM.3
- DISPLAY 'Y' TO GOCOMP.1
- ACCEPT GOCOMP.1 {CAPSLOCK,CHECK='YN'}
- IF GOCOMP.1 MATCH 'Y' RUNPROGRAM 'DFCOMP' PARAM.3
- ABORT
-
- // define action of function keys
-
- KEYPROC KEY.FIELD
- [FIRST] BACKFIELD
- RETURN
-
- KEYPROC KEY.HELP
- HELP
- ENTAGAIN
- RETURN
-
-
-