home *** CD-ROM | disk | FTP | other *** search
- PRINT "FILE SET-UP PROGRAM OF 3-23-78"
- FIELDS = 20
- ZERO = 0: ONE = 1: TWO = 2
- SPARE = ZERO
- NUMERIC = ZERO: ALPHA = ONE
- DIM FIELD$(FIELDS),TYPE(FIELDS),WIDE(FIELDS),DATA$(FIELDS)
- DIM FEED(FIELDS),MIN(FIELDS),MAX(FIELDS)
- INPUT "DO YOU WANT INSTRUCTIONS";ANS$
- IF ANS$="NO" THEN 1100
- PRINT "THE PURPOSE OF THIS PROGRAM IS TO SET UP A FILE."
- PRINT "THIS INVOLVES DEFINING ALL HEADINGS AND FIELDS."
- PRINT "EXAMPLES OF FILES:"
- PRINT "A LIST OF ALL THE INTEGRATED CIRCUITS ON HAND, OR"
- PRINT "A LIST OF ALL THE SALES MADE ON A PARTICULAR DATE, OR"
- PRINT "A LIST OF ALL THE ITEMS SHIPPED IN ONE WEEK."
- PRINT "THE FILE IS MADE UP OF RECORDS, AND EACH RECORD"
- PRINT "IS MADE UP OF FIELDS. THE RECORD MIGHT BE ONE"
- PRINT "INVENTORY ITEM, OR ONE TRANSACTION. THE FIELD "
- PRINT "MIGHT BE A QUANTITY, A PRICE, OR A PART NUMBER."
- PRINT "WHEN THE FILE IS FIRST STARTED, IT IS NECESSARY TO"
- PRINT "DEFINE EACH FIELD IN THE RECORDS, AS TO NUMERICAL"
- PRINT "OR NON-NUMERICAL, WHAT THE NAME OF THE FIELD IS,"
- PRINT "AND WHAT THE COLUMN HEADING SHOULD BE FOR THE FIELD."
- PRINT "THERE ARE PRESENTLY FOUR TYPES OF FILES ALLOWED:"
- PRINT " TYPE 0 SEQUENTIAL"
- PRINT " TYPE 1 RANDOM"
- PRINT " TYPE 3 INDEXED-RANDOM"
- PRINT " TYPE 7 LINKED-INDEXED-RANDOM"
- PRINT "A SEQUENTIAL FILE IS NORMALLY USED FOR ITEMS THAT"
- PRINT "NEED NO CHANGES, SUCH AS A RECEIVING OR SHIPPING LOG."
- PRINT "A RANDOM FILE IS NOT AS COMPACT AS A SEQUENTIAL FILE,"
- PRINT "BUT IT HAS THE ADVANTAGE OF BEING EASY TO MAKE CHANGES."
- PRINT "AN INDEXED FILE ALLOWS QUICK ACCESS TO ANY ENTRY BY"
- PRINT "SPECIFYING A KEY FIELD, SUCH AS A PART NUMBER IN AN INVENTORY."
- PRINT "A LINKED FILE ALLOWS DELETIONS AND INSERTIONS "
- PRINT "WITHOUT HAVING TO READ AND WRITE THE WHOLE FILE."
- 1100 FILETYPE = ZERO REM START WITH THIS.
- CODE = ZERO REM ACCESS CODE.
- NHEAD = ZERO REM NUMBER OF HEADINGS.
- NIND = ZERO REM NUMBER OF INDEXES.
- RECNO = ONE REM RECORD NUMBER.
- INPUT "WHAT DO YOU WANT TO NAME THE FILE (UP TO 8 CHARS)";FILENAME$
- INPUT "DO YOU WANT RESTRICTIONS ON WHO CAN READ THIS FILE";ANS$
- IF ANS$ = "YES" THEN CODE=CODE+1
- INPUT "DO YOU WANT RESTRICTIONS ON WHO CAN CHANGE THIS FILE";ANS$
- IF ANS$ = "YES" THEN CODE=CODE+2
- 1105 INPUT "DO YOU WANT COLUMNS, WITH HEADINGS DEFINED";COL$
- IF COL$ = "YES" THEN \
- NHEAD = ONE :\
- INPUT "HOW MANY CHARS WIDE IS YOUR PRINTER PAPER";PAPER.WIDTH
- N=ONE:TOTAL.WIDTH = ZERO:HEADINGS$=""
- 1110 REM THIS IS WHERE THE FIELD DEFINING LOOP STARTS.
- MIN(N) = ZERO REM DEFAULT MINIMUM.
- MAX(N) = ZERO REM DEFAULT MAXIMUM.
- PRINT "WHAT IS THE NAME OF FIELD NUMBER ";N;
- INPUT FIELD$(N)
- PRINT "WILL ";FIELD$(N);" ALWAYS BE A NUMBER";
- INPUT ANS$
- IF ANS$="YES" THEN TYPE(N) = ZERO ELSE TYPE(N) = ONE
- 1115 IF COL$ <> "YES" THEN 1135 REM MUST BE FREE FORMAT.
- INPUT "HOW MANY CHARACTERS WIDE DO YOU WANT THIS FIELD";WIDE(N)
- TOTAL.WIDTH = TOTAL.WIDTH + WIDE(N)
- X = TOTAL.WIDTH - PAPER.WIDTH - N - ONE
- IF X <= ZERO THEN 1120
- PRINT "THE PAPER WIDTH HAS BEEN EXCEEDED BY ",X," CHARACTERS."
- INPUT "WANT TO USE A DIFFERENT WIDTH FOR THIS FIELD";ANS$
- IF ANS$="YES" THEN TOTAL.WIDTH=TOTAL.WIDTH-WIDE(N):GOTO 1115
- PRINT "OK THEN, WE'LL START ALL OVER."
- GOTO 1105
- 1120 PRINT "WHAT IS THE HEADING FOR THE ";FIELD$(N);" FIELD";
- INPUT HEADING$
- IF LEN(HEADING$)<=WIDE(N) THEN 1130
- PRINT "THAT HEADING IS TOO WIDE":GOTO 1120
- 1130 SPACES = WIDE(N) - LEN(HEADING$) + ONE
- FOR I = ONE TO SPACES
- HEADING$=HEADING$+" "
- NEXT I
- HEADINGS$=HEADINGS$+HEADING$
- PRINT "SO FAR YOUR HEADINGS LOOK LIKE THIS:"
- PRINT HEADINGS$
- 1135 IF COL$ = "YES" THEN 1137 REM MUST BE IN COLUMNS.
- WIDE(N) = ZERO
- FEED(N) = ZERO
- IF N = ONE THEN 1137 REM FIRST FIELD?
- PRINT "WILL ";FIELD$(N);" BE ON SAME LINE AS ";FIELD$(N-ONE);
- INPUT ANS$
- IF ANS$ = "NO" THEN FEED(N) = ONE
- 1137 IF TYPE(N) = ALPHA THEN 1138 REM SKIP IF ALPHANUMERIC.
- INPUT "MINIMUM VALUE";MIN(N)
- INPUT "MAXIMUM VALUE";MAX(N)
- 1138 INPUT "WANT TO DEFINE ANOTHER FIELD";ANS$
- IF ANS$ <> "NO" THEN N = N + ONE:GOTO 1110
- 1140 PRINT "WILL IT EVER BE NECESSARY TO MAKE CHANGES IN THIS"
- INPUT "FILE, BESIDES ADDING RECORDS TO THE END";ANS$
- IF ANS$ = "NO" THEN KIND$ = "SEQ" ELSE KIND$ = "RAN"
- RECLEN = TOTAL.WIDTH + 4 + N
- IF KIND$ = "RAN" THEN \
- FILETYPE = FILETYPE + ONE :\
- FILE FILENAME$(RECLEN) REM OPEN RANDOM FILE.
- IF KIND$ = "SEQ" THEN \
- FILE FILENAME$ :\ REM OPEN SEQ. FILE.
- GOTO 1144
- INPUT "DO YOU WANT AN INDEX FILE MADE";INDEX$
- IF INDEX$ = "NO" THEN 1144
- INDEXFILE$ = FILENAME$ + ".IND"
- FILE INDEXFILE$ REM OPEN INDEX FILE.
- NIND = ONE REM NUMBER OF INDEXES.
- FILETYPE = FILETYPE + TWO
- 1141 PRINT "HERE ARE THE FIELD NAMES:"
- FOR I = ONE TO N
- PRINT FIELD$(I)
- NEXT I
- INPUT "WHICH ONE MAKES THE INDEX";INDEX.FIELD$
- FOR INDFLD = ONE TO N
- IF FIELD$(INDFLD) = INDEX.FIELD$ THEN 1142
- NEXT INDFLD
- PRINT "TRY AGAIN"
- GOTO 1141
- 1142 PRINT #TWO;INDEX.FIELD$ REM HEADER FOR INDEX.
- INPUT "DO YOU WANT A LINKED FILE";LINKED$
- IF LINKED$ = "YES" THEN FILETYPE = FILETYPE + 4
- 1144 PRINT "HOW MANY LINES OF HEADING DO YOU WANT IN ADDITION"
- INPUT "TO POSSIBLE COLUMN HEADINGS";MHEAD
- NHEAD = NHEAD + MHEAD
- IF KIND$ = "RAN" THEN \
- PRINT #ONE,RECNO;RECLEN,N,NHEAD,NIND,FILETYPE,CODE,SPARE :\
- RECNO = RECNO + ONE
- IF LINKED$ = "YES" THEN \
- USED1=0: USEDL=0: FREE1=0: FREEL=0 :\
- PRINT #ONE,RECNO;USED1,USEDL,FREE1,FREEL,SPARE :\
- RECNO = RECNO + ONE
- IF KIND$ = "SEQ" THEN \
- PRINT #ONE;ZERO,N,NHEAD,NIND,FILETYPE,CODE,SPARE :\
- RECNO = RECNO + ONE
- FOR I = ONE TO MHEAD
- 1800 PRINT "HEADING LINE ";I;
- INPUT ANS$
- X = LEN(ANS$) - RECLEN - 4
- IF X > 0 THEN \
- PRINT "HEADING ";X;"CHARS TOO WIDE, TRY AGAIN." :\
- GOTO 1800
- IF KIND$ = "RAN" THEN \
- PRINT #ONE,RECNO;ANS$
- IF KIND$ = "SEQ" THEN \
- PRINT #ONE;ANS$
- RECNO = RECNO + ONE
- NEXT I
- IF COL$ <> "YES" THEN 1850
- IF KIND$ = "RAN" THEN \
- PRINT #ONE,RECNO;HEADINGS$
- IF KIND$ = "SEQ" THEN \
- PRINT #ONE;HEADINGS$
- RECNO = RECNO + ONE
- 1850 FOR I = ONE TO N
- IF KIND$ = "RAN" THEN \
- PRINT #ONE,RECNO;FIELD$(I),TYPE(I),WIDE(I),FEED(I), \
- MIN(I),MAX(I),SPARE
- IF KIND$ = "SEQ" THEN \
- PRINT #ONE;FIELD$(I),TYPE(I),WIDE(I),FEED(I), \
- MIN(I),MAX(I),SPARE
- RECNO = RECNO + ONE
- NEXT I
- 1900 CLOSE ONE
- IF INDEX$ = "YES" THEN \
- CLOSE TWO
- INPUT "WANT TO SET UP ANOTHER FILE";ANS$
- IF ANS$ = "YES" THEN 1100
- STOP
- END
-