4000 REM DFSTRUCTURE PROGRAM 1.0 - DATAFILE UTILITY BY MIKE KONSHAK (C)1985 4002 POKE53281,0:POKE53280,8:PRINT"[158]" 4004 REM----DIM ARRAYS 4006 DIM F$(25),T%(25),L%(25),ML$(9,4) 4008 DIM F(17),C$(17,15),PC(18),TT$(5),HC$(17) 4010 FORI=1TO50:S$=S$+CHR$(32):D$=D$+".":B$=B$+"-":NEXTI 4012 GOTO4032 4014 REM----DISK ERROR CHECK 4016 INPUT#15,EN,EM$,ET,ES:IFEN<20OREN=62THENET=0:RETURN 4018 PRINT" [150]DISK ERROR[146]"EN"[157], "EM$","ET"[157],"ES"[158]":ET=8 4020 PRINT" PRESS [153]ANY KEY[158][146] TO CONTINUE":GOSUB4026 4022 CLOSE5:CLOSE15:CLOSE4:RETURN 4024 REM----GET 4026 GETA$:IFA$=""THEN4026 4028 RETURN 4030 REM----OPENING SCREEN 4032 PRINT"[147]  DATAFILE STRUCTURE DUMP [146]" 4034 PRINT" THIS PROGRAM WILL READ AND DISPLAY" 4036 PRINT" THE STRUCTURE OF DATAFILES AND" 4038 PRINT" PRINTER FORMAT FILES CREATED BY:" 4040 PRINT" DATAFILE[146] AND ITS SUBPROGRAMS:" 4042 PRINT" DFREPORT[146] AND DFMAIL[146]," 4044 PRINT" AS WELL AS THE COMPANION PROGRAM:" 4046 PRINT" DFCALC[146]" 4048 PRINT" THE DATAFILE[146] SERIES IS WRITTEN BY:" 4050 PRINT" MIKE KONSHAK" 4052 PRINT" 4821 HARVEST COURT" 4054 PRINT" COLORADO SPRINGS, CO. 80917" 4056 PRINT" AND PUBLISHED IN RUN MAGAZINE[146]" 4058 PRINT" PRESS [153]ANY KEY[158][146] TO CONTINUE":GOSUB4026 4060 REM----SELECTION SCREEN 4062 PRINT"[147]  DATAFILE OR FORMAT FILE SELECTION [146]" 4064 PRINT" D[146]ATAFILE RECORD FILES" 4066 PRINT" R[146]EPORT FORMAT FILES" 4068 PRINT" M[146]AILING LABEL FORMAT FILES" 4070 PRINT" C[146]ALCULATED REPORT FORMAT FILES" 4072 PRINT" N[146]ON-DATAFILE SEQUENTIAL FILE" 4074 PRINT" $[146] DISK DIRECTORY" 4076 PRINT" Q[146]UIT PROGRAM" 4078 PRINT"  PRESS THE APPROPRIATE KEY [146]" 4080 GOSUB4026:K=0:IFA$="Q"THENPRINT"[147]":END 4082 IFA$="D"THENK=1 4084 IFA$="R"THENK=2 4086 IFA$="M"THENK=3 4088 IFA$="C"THENK=4 4090 IFA$="N"THENK=5 4092 IFA$="$"THEN4494 4094 IFK<=0ORK>5THEN4080 4096 REM----GET NAME OF FILE 4098 PRINT" ENTER NAME OF SEQUENTIAL FILE:" 4100 PRINT" ? "NF$:INPUT"[145] ";NF$:IFNF$=""THEN4062 4102 FL=0:ONKGOTO4106,4188,4270,4328,4416 4104 REM----READ DATAFILE SEQ FILE 4106 OPEN15,8,15 4108 OPEN5,8,5,"0:DF] "+NF$+",S,R":GOSUB4016:IFET=8THEN4062 4110 IFEN=62THENGOSUB4018:GOTO4062 4112 INPUT#5,R,F,X:GOSUB4016:IFET=8THEN4062 4114 IFFL=1THEN4118 4116 : 4118 FORI=1TOF:INPUT#5,F$(I),L%(I):NEXTI:GOSUB4016:IFET=8THEN4062 4120 IFFL=1THEN4154 4122 PRINT"[147][158]  STRUCTURE OF DATAFILE "NF$ 4124 PRINT"[158] # RECORDS POSSIBLE IN FILE "R 4126 PRINT"[158] # RECORDS IN CURRENT FILE "X 4128 PRINT"[158] # FIELDS IN EACH RECORD "F 4130 PRINT"[158]  # TITLE OF FIELDS LENGTH" 4132 FORI=1TOF 4134 PRINT"[158] "I"[146]"TAB(6)LEFT$(F$(I)+D$,27)TAB(33)L%(I) 4136 NEXTI 4138 PRINT"[158] S[146]CAN RECORDS P[146]RINT STRUCTURE E[146]XIT" 4140 GOSUB4026:IFA$="E"THENCLOSE5:CLOSE15:GOTO4062 4142 IFA$="P"THEN4170 4144 IFA$="S"THEN4150 4146 GOTO4140 4148 REM----SCAN RECORDS 4150 PRINT" PRESS CTRL[146] SLOW F7[146] START/STOP F1[146] EXIT":GOSUB4026 4152 IFFL=1THEN4106 4154 FORI=1TOX:PRINT"[158] RECORD "I 4156 FORJ=1TOF:INPUT#5,REC$:PRINT"[158] "J""REC$:NEXTJ 4158 GETA$:IFA$="[133]"THEN4166:REM F1 4160 IFA$="[136]"THENGOSUB4026:REM F7 4162 NEXTI 4164 PRINT"[158] PRESS ANY KEY[146] TO CONTINUE":GOSUB4026 4166 CLOSE5:CLOSE15:FL=1:GOTO4122 4168 REM----PRINT DATAFILE STRUCTURE 4170 OPEN4,4:PRINT#4," STRUCTURE FOR DATAFILE ** "NF$" **" 4172 PRINT#4,B$:PRINT#4,"# RECORDS POSSIBLE IN FILE:"R 4174 PRINT#4,"# RECORDS IN CURRENT FILE :"X 4176 PRINT#4,"# FIELDS IN EACH RECORD :"F:PRINT#4,B$ 4178 PRINT#4," # TITLE OF FIELDS LENGTH":PRINT#4,B$ 4180 FORI=1TOF 4182 PRINT#4,ILEFT$(F$(I)+D$,27)L%(I) 4184 NEXTI:PRINT#4,B$:PRINT#4:CLOSE4:GOTO4122 4186 REM----READ DFREPORT STRUCTURE 4188 OPEN15,8,15 4190 OPEN5,8,5,"0:RP] "+NF$+",S,R":GOSUB4016:IFET=8THEN4062 4192 IFEN=62THENGOSUB4018:GOTO4062 4194 INPUT#5,PW,NL,NC:GOSUB4016:IFET=8THEN4062 4196 FORI=1TONL:INPUT#5,TT$(I):NEXTI:GOSUB4016:IFET=8THEN4062 4198 FORI=1TONC:INPUT#5,PC(I),HC$(I) 4200 FORJ=1TO3:INPUT#5,ML$(I,J):NEXTJ:NEXTI:GOSUB4016:IFET=8THEN4062 4202 INPUT#5,A1$:GOSUB4016:IFET=8THEN4062 4204 CLOSE5:CLOSE15 4206 REM----DISPLAY DFREPORT STRUCTURE 4208 PRINT"[147][158] STRUCTURE OF DFREPORT FORMAT:"NF$ 4210 PRINT"[158] # LINES IN REPORT TITLE "NL 4212 FORI=1TONL:PRINT"[158] "I;"[146]"TT$(I):NEXTI 4214 PRINT"[158] # COLUMNS IN REPORT "NC 4216 PRINT"[158]  # POS COLUMN HEADER CONTENTS " 4218 FORI=1TONC 4220 PRINT"[158] "I"[146]"TAB(2)PC(I)TAB(8)LEFT$(HC$(I),18); 4222 PRINTTAB(27)"[158]FIELDS:"ML$(I,1)"+"ML$(I,2)"+"ML$(I,3) 4224 NEXTI:IFA1$<>"1"THEN4228 4226 PRINT"[158] COLUMN"NC"[157][158], IS TO BE TOTALED":GOTO4230 4228 PRINT"[158] NO TOTALING OF COLUMNS" 4230 PRINT"[158] P[146]RINT STRUCTURE E[146]XIT" 4232 GOSUB4026:IFA$="E"THEN4062 4234 IFA$="P"THEN4240 4236 GOTO4232 4238 REM----PRINT DFREPORT STRUCTURE 4240 OPEN4,4 4242 PRINT#4," STRUCTURE OF DFREPORT FORMAT ** "NF$" **" 4244 PRINT#4,B$:PRINT#4,"# LINES IN REPORT TITLE:"NL:PRINT#4,B$ 4246 FORI=1TONL:PRINT#4,"TITLE"I;": "TT$(I):NEXTI:PRINT#4,B$ 4248 PRINT#4,"# COLUMNS IN REPORT :"NC:PRINT#4,B$ 4250 PRINT#4," # POS HEADER CONTENTS":PRINT#4,B$ 4252 FORI=1TONC 4254 PRINT#4,RIGHT$(S$+STR$(I),3)+RIGHT$(S$+STR$(PC(I)),4); 4256 PRINT#4,".."LEFT$(HC$(I)+D$,20); 4258 PRINT#4,"DATAFILE FIELDS:"ML$(I,1)"+"ML$(I,2)"+"ML$(I,3) 4260 NEXTI:PRINT#4,B$:IFA1$<>"1"THEN4264 4262 PRINT#4,"COLUMN"NC", IS TO BE TOTALED":GOTO4266 4264 PRINT#4,"NO TOTALING OF LAST COLUMN" 4266 PRINT#4,B$:PRINT#4:CLOSE4:GOTO4232 4268 REM----READ DFMAIL STRUCTURE 4270 OPEN15,8,15 4272 OPEN5,8,5,"0:ML] "+NF$+",S,R":GOSUB4016:IFET=8THEN4062 4274 IFEN=62THENGOSUB4018:GOTO4062 4276 INPUT#5,RW:GOSUB4016:IFET=8THEN4062 4278 FORI=1TORW 4280 FORJ=1TO3:INPUT#5,ML$(I,J):NEXTJ:NEXTI:GOSUB4016:IFET=8THEN4062 4282 CLOSE5:CLOSE15 4284 REM----DISPLAY DFMAIL STRUCTURE 4286 PRINT"[147][158]  STRUCTURE OF DFMAIL FORMAT:"NF$ 4288 PRINT"[158] # ROWS ON LABEL "RW 4290 PRINT"[158]  # CONTENTS OF ROW (DATAFILE FIELDS)" 4292 FORI=1TORW 4294 PRINT"[158] "I"[146]"; 4296 PRINTTAB(6)ML$(I,1)"+"ML$(I,2)"+"ML$(I,3) 4298 NEXTI 4300 PRINT"[158] P[146]RINT STRUCTURE E[146]XIT" 4302 GOSUB4026:IFA$="E"THEN4062 4304 IFA$="P"THEN4310 4306 GOTO4286 4308 REM----PRINT DFMAIL STRUCTURE 4310 OPEN4,4 4312 PRINT#4," STRUCTURE OF DFMAIL FORMAT ** "NF$" **" 4314 PRINT#4,B$:PRINT#4,"# ROWS ON LABEL:"RW:PRINT#4,B$ 4316 PRINT#4," # CONTENTS OF LABEL (DATAFILE FIELDS)":PRINT#4,B$ 4318 FORI=1TORW 4320 PRINT#4,RIGHT$(S$+STR$(I),3)+" "ML$(I,1)"+"ML$(I,2)"+"ML$(I,3) 4322 NEXTI:PRINT#4,B$ 4324 PRINT#4:CLOSE4:GOTO4286 4326 REM----READ DFCALC STRUCTURE 4328 OPEN15,8,15 4330 OPEN5,8,5,"0:CR] "+NF$+",S,R":GOSUB4016:IFET=8THEN4062 4332 IFEN=62THENGOSUB4018:GOTO4062 4334 INPUT#5,PW,NL,NC:GOSUB4016:IFET=8THEN4062 4336 FORI=1TONL:INPUT#5,TT$(I):NEXTI:GOSUB4016:IFET=8THEN4062 4338 FORI=1TONC:INPUT#5,PC(I),HC$(I) 4340 FORJ=0TO14:INPUT#5,C$(I,J):NEXTJ:NEXTI:GOSUB4016:IFET=8THEN4062 4342 CLOSE5:CLOSE15 4344 REM----DISPLAY DFCALC STRUCTURE 4346 PRINT"[147][158]  STRUCTURE OF DFCALC FORMAT:"NF$ 4348 PRINT"[158] # LINES IN REPORT TITLE "NL 4350 FORI=1TONL:PRINT"[158] "I;"[146]"TT$(I):NEXTI 4352 PRINT"[158] # COLUMNS IN REPORT "NC 4354 PRINT"[158]  # POS HEADER " 4356 FORI=1TONC 4358 PRINT"[158] "I"[146]"TAB(5)PC(I)TAB(10)HC$(I) 4360 NEXTI 4362 PRINT"[158] PRESS ANY KEY[146] TO SEE MORE":GOSUB4026 4364 PRINT"[147][158]  STRUCTURE OF DFCALC FORMAT:"NF$ 4366 PRINT"[158]  # CONTENTS/EQUATION J EOC" 4368 FORI=1TONC 4370 PRINT"[158] "I"[146]"TAB(5)C$(I,1)TAB(9)C$(I,14); 4372 PRINTTAB(34)C$(I,0)TAB(38)C$(I,13) 4374 NEXTI 4376 PRINT"[158] S[146]EE LAST P[146]RINT STRUCTURE E[146]XIT" 4378 GOSUB4026:IFA$="E"THEN4062 4380 IFA$="S"THEN4346 4382 IFA$="P"THEN4388 4384 GOTO4378 4386 REM----PRINT DFCALC STRUCTURE 4388 OPEN4,4:C$=LEFT$(B$+B$,71) 4390 PRINT#4," STRUCTURE OF DFCALC FORMAT ** "NF$" **" 4392 PRINT#4,C$:PRINT#4,"# LINES IN REPORT TITLE:"NL:PRINT#4,C$ 4394 FORI=1TONL:PRINT#4,"TITLE"I;": "TT$(I):NEXTI:PRINT#4,C$ 4396 PRINT#4,"# COLUMNS IN REPORT:"NC:PRINT#4,C$ 4398 PRINT#4," # POS HEADER CONTENTS"; 4400 PRINT#4,"/EQUATION JUST EOC":PRINT#4,C$ 4402 FORI=1TONC 4404 PRINT#4,RIGHT$(S$+STR$(I),3)+RIGHT$(S$+STR$(PC(I)),4); 4406 PRINT#4,".."LEFT$(HC$(I)+D$,20)+LEFT$(C$(I,1)+D$,3); 4408 PRINT#4,LEFT$(C$(I,14)+D$,31)+LEFT$(C$(I,0)+D$,6)+C$(I,13) 4410 NEXTI:PRINT#4,C$ 4412 CLOSE4:GOTO4364 4414 REM----READ GENERIC SEQUENTIAL FILE 4416 OPEN15,8,15 4418 OPEN5,8,5,"0:"+NF$+",S,R":GOSUB4016:IFET=8THEN4062 4420 IFEN=62THENGOSUB4018:GOTO4062 4422 CLOSE5:CLOSE15 4424 PRINT"[147] GENERIC SEQUENTIAL FILE READER[146]" 4426 PRINT" DATA FROM FILE CHOSEN WILL BE PRINTED" 4428 PRINT" IN ONE COLUMN, AS THE FILE IS READ." 4430 PRINT" SEND TO S[146]CREEN OR P[146]RINTER? OR E[146]XIT" 4432 GOSUB4026:IFA$="E"THEN4062 4434 IFA$="S"THEN4442 4436 IFA$="P"THEN4464 4438 GOTO4432 4440 REM----SCREEN PRINT 4442 PRINT"[147] PRESS CTRL[146] SLOW F7[146] START/STOP F1[146] EXIT":GOSUB4026 4444 OPEN15,8,15 4446 OPEN5,8,5,"0:"+NF$+",S,R":GOSUB4016:IFET=8THEN4062 4448 IFEN=62THENGOSUB4018:GOTO4062 4450 GET#5,Z$:IFST<>0THEN4460 4452 PRINTZ$; 4454 GETA$:IFA$="[136]"THENGOSUB4026 4456 IFA$="[133]"THENGOTO4460 4458 GOTO4450 4460 CLOSE5:CLOSE15 4462 GOTO4488 4464 REM----HARDCOPY 4466 OPEN4,4:OPEN15,8,15 4468 OPEN5,8,5,"0:"+NF$+",S,R":GOSUB4016:IFET=8THEN4062 4470 IFEN=62THENGOSUB4018:GOTO4062 4472 PRINT"[147] PRESS CTRL[146] SLOW F7[146] START/STOP F1[146] EXIT[145]":GOSUB4026 4474 PRINT#4,"SEQUENTIAL FILE ** "NF$" **":PRINT#4,B$ 4476 GET#5,Z$:IFST<>0THEN4486 4478 PRINT#4,Z$; 4480 GETA$:IFA$="[136]"THENGOSUB4026 4482 IFA$="[133]"THENGOTO4486 4484 GOTO4476 4486 PRINT#4,B$ 4488 CLOSE5:CLOSE15:CLOSE4 4490 PRINT" PRESS ANY KEY[146] TO CONTINUE ":GOSUB4026:GOTO4424 4492 REM----DIRECTORY 4494 OPEN15,8,15:OPEN5,8,0,"$0":PRINT"[147]":GOSUB4016:IFET=8THEN4062 4496 GET#5,A1$,A2$ 4498 GET#5,A1$,A2$ 4500 GET#5,A1$,A2$ 4502 IFA1$<>""THENA0=ASC(A1$) 4504 IFA2$<>""THENA0=A0+ASC(A2$)*256 4506 PRINTMID$(STR$(A0),2);TAB(3); 4508 GET#5,A2$:IFST<>0THEN4526 4510 IFA2$<>CHR$(34)THEN4508 4512 GET#5,A2$:IFA2$<>CHR$(34)THENPRINT""A2$"[146]";:GOTO4512 4514 GET#5,A2$:IFA2$=CHR$(32)THEN4514 4516 PRINTTAB(20);:A3$="" 4518 A3$=A3$+A2$:GET#5,A2$:IFA2$<>""THEN4518 4520 PRINTLEFT$(A3$,3) 4522 GETA$:IFA$<>""THENGOSUB4530 4524 IFST=0THEN4498 4526 PRINT" BLOCKS FREE";:A0=0 4528 CLOSE5:CLOSE15:PRINTTAB(25)"PRESS ANY KEY[146]":GOSUB4026:GOTO4062 4530 GOSUB4026:RETURN