ÿòa:�ÛCREATOR; WRITTEN ON 1/16/80 BY BRUCE W. TONKIN.b:�ÛADAPTED FOR CP/M AND MICROSOFT BASIC 5.01 ON 5/11/80æb:�ÛFOR 4.51 ON 3/18/81, AND FOR MODEL III ON 2/20/83, FOR CP/M AND MBASIC 4.51/5.2+ AGAIN ON 3/23/83; FOR 48K CP/M ON 7/2/83 WITH OVERLAYS: THIS IS THE SECOND OVERLAY, CREATOR.OVL€c:�ÛTHIS IS PUBLIC DOMAIN SOFTWARE AND MAY NOT BE SOLD OR INCORPORATED IN ANY COMMERCIAL SOFTWARE WITHOUT THE EXPRESS EXPRESS PERMISSION OF THE AUTHORŽc • ¨ ‰ Ƙc‰ x±cFXð:‹ ÿ’(CV$)ñ Ï Ž d‚ IIð Î ÿ’(CV$):CV%ðÿ•(ÿƒ(CV$,II,)):‹ CV%ð" ÷ FXð Ï FXð::¢ ‹ CV%ð" ÷ FXð Ï FXð/d(‹ CV%ïZ ÷ FXð Ï CV%ðCV% ÷ _Od2ÿƒ(CV$,II,)ðÿ–(CV%):ƒ II:޳dx‘ #,"1006 ON FC GOSUB ";:‚ Ið Î Aó:‘ #,ÿƒ(ÿ“(D%(I)ó ),,);",";:ƒ :‘ #,ÿƒ(ÿ“(D%(A)ó ),)åd‚‘ #,"1007 IF FC<";A;" THEN 1005 ELSE ";LNò œeŒ‘ #,"29010 FOR I=1 TO ";A:† H$(2):‘ CLS$;"When the record is displayed, what title should be used for":‚ Ið Î A:‘"FIELD NUMBER:";I;:± … H$(I):‘ #,ðUòI;"DATA";Q$;H$(I);Q$:ƒ Içe–‘ CLS$;"Do you want to display computed data with your record (Y/N)?";Hf DC$ðÝ:‹ DC$ð"" Ï  ::¢ CV$ðDC$:� :DC$ðCV$:‘ DC$:‹ Ú("YN",DC$)ñ Ï –::¢ ‹ DC$ð"N" Ï ægª‘ CLS$;"All right. You may display computed data on as many fields as":‘"you desire. However, you should remember that, to do this, you":‘"will have to tell me in some detail just what you want printed"åg´‘"and how it should be printed.":‘"All fields are available for printing or calculations. Any":‘"operation allowed in BASIC is permitted, including all string,":‘"logical, and mathematical operations."¬h¾‘"HOWEVER: ALL FIELDS ARE TO BE TREATED AS STRINGS. Therefore,":‘"if you want to display the sum of field 7 and field 9, you must":‘"tell me to display VAL(G$(7))+VAL(G$(9)). All fields must be"miÈ‘"referenced by means of this G$() array, where the subscript":‘"(number inside parentheses) is the number of the field with":‘"which you are working. I will ask you for a command line, a"óiÒ‘"display title, and a print format for each computed or derived":‘"field you want to display. NOW DEPRESS ANY KEY TO CONTINUE.";#jÜDC$ðÝ:‹ DC$ð"" Ï Ü::¢ ‘ CLS$:JLðfq:� Рjæ‹ RSñ Ï ‘ #,"12910 FIELD #1,";RS;" AS DL$:LSET DL$=STRING$(";RS;",250):PUT 1,RP:LSET KP$=MKI$(-RP):PUT 2,KP:GOTO";SL3kð‹ RSð Ï ‘ #,"12910 FIELD #1,255 AS DL$,1 AS DX$:LSET DL$=STRING$(255,250):LSET DX$=CHR$(250):PUT 1,RP:LSET KP$=MKI$(-RP):PUT 2,KP:GOTO";SLLkú‘ #,"10860 GOTO";SLók‘ #,"11840 IF UF>";A;" OR UF<0 THEN PRINT";Q$;"INVALID FIELD.";Q$;":GOTO 11810":‘ #,"11850 IF UF=0 THEN";SL:‘ #,"11860 PRINT CHR$(13);STRING$(63,32);CHR$(13);"l ‘ #,"11865 ON UF GOSUB ";µl‚ TZð Î Aó:‘ #,ÿƒ(ÿ“(D%(TZ)ó ),);",";:ƒ TZ:‘ #,ÿƒ(ÿ“(D%(A)ó ),):‘ #,"11870 IF UF<>";KF;" THEN 11900 ELSE ZZ$=STRING$(F%(";KF;"),32):LSET ZZ$=G$(";KF;8m‹ RSñ Ï ‘ #,"):FIELD #1,";RS;" AS DL$:LSET DL$=STRING$(";RS;",250):PUT 1,RP:LSET KP$=MKI$(-RP):PUT 2,KP:GOSUB 26000:KP=RP"Ñm"‹ RSð Ï ‘ #,"):FIELD #1,255 AS DL$,1 AS DX$:LSET DL$=STRING$(255,250):LSET DX$=CHR$(250):PUT 1,RP:LSET KP$=MKI$(-RP):PUT 2,KP:GOSUB 26000:KP=RP"†n,‘ #,"11999 FOR I=1 TO ";A;":LSET F$(I)=G$(I):NEXT :PUT 1,RP:G$=";Q$;Q$;":GOTO 11200":‘ #,"27010 PRINT CLS$:GOSUB ";D%(KF)ó ;":KF$=STRING$(F%(";KF;"),32):LSET KF$=G$(";KF;")"Ón6‘ #,"27040 KP=KP+1:IF KP>";MS;" OR KP<2 THEN KP=1:REM CIRCULATE AROUND"yo@‘ #,"27050 GET 2,KP:RP=CVI(KP$):IF RP<-1 THEN 27040:ELSE IF RP=0 THEN ERROR 62:ELSE IF RP=-1 THEN PRINT";Q$;"RECORD NOT FOUND.";Q$;":FOR I=1 TO 2000:NEXT I:RUN"ÌoJ‘ #,"27055 GET 1,RP:IF LEFT$(F$(";KF;"),LEN(ZZ$))=ZZ$ THEN RETURN:ELSE 27040"ÔoT:�Û6p^LNðLNò :‘ #,LN;"ZZ$=STRING$(F%(";KF;"),32):LSET ZZ$=G$(";ÿƒ(ÿ“(KF),);"):GOSUB 26000:KP=RP"uph‘ #,"26040 RP=";ÿƒ(ÿ“(MS),);"*RP/9999:RP=FIX(RP):RETURN"BqrLNðLNò :‘ #,LN;"REM*LOOK FOR RECORD SPACE":LNðLNò :‘ #,LN;"GOSUB ";LNò ;":GOTO";LNò<:LNðLNò :‘ #,LN;"KP=KP+1:IF KP>";MS;" OR KP<2 THEN KP=2":‘ #,"11890 KP=KP+1:IF KP>";MS;" OR KP<2 THEN KP=2"Ïq|‘ #,"11895 GET 2,KP:IF CVI(KP$)<>-1 THEN 11890":‘ #,"11896 GET 2,1:RP=CVI(KP$)+1:LSET KP$=MKI$(RP):PUT 2,1:LSET KP$=MKI$(RP):PUT 2,KP"šr†LNðLNò :‘ #,LN;"GET 2,KP:RP=CVI(KP$):IF RP>0 THEN";LNó :LNðLNò :‘ #,LN;"IF RP<-1 THEN RETURN":LNðLNò :‘ #,LN;"IF RP=0 THEN ERROR 62":LNðLNò :‘ #,LN;"RETURN":LNðLNò :‘ #,LN;"FOR K=1 TO ";AÈr�LNðLNò :‘ #,LN;"LSET F$(K)=G$(K):NEXT "hsšLNðLNò :‘ #,LN;"IF RP<-1 THEN PUT 1,ABS(RP):LSET KP$=MKI$(ABS(RP)):PUT 2,KP:ELSE PK=KP:GET 2,1:KP=1+CVI(KP$):LSET KP$=MKI$(KP):PUT 2,PK:PUT 1,KP:PUT 2,1"õs¤‘ CLS$;"Now we are almost done. We need to ask the operator if he is":‘"done with entry or update. You may choose the message you wish."gt®‘"The operator's input will be limited to a single key depression.":‘"I would suggest something of the form:"¶t¸‘"Are you finished with entry? (Y/N) Enter your choice below:":± … TM$õt‘"If the operator is NOT done, what should the reply be?";=uÌND$ðÝ:‹ ND$ð"" Ï Ì::¢ CV$ðND$:� :ND$ðCV$:‘ ND$:‹ ND$ñ" " Ï ÂxuÖ‘"If the operator IS done, what should the reply be?";";Q$;ND$;Q$;" THEN PRINT";Q$;"PLEASE ANSWER ";ND$;" OR ";ID$;Q$;":GOTO";BL:LNðLNò :‘ #,LN;"FOR I=1 TO ";A;":G$(I)=";Q$;Q$;":NEXT :FC=0:PRINT CLS$:UF=0:G$=";Q$;Q$;":GOTO 1000"øwþ‘"Do you want to cut down on remarks in the generated program?":‘"Please answer Y or N: "; xCV$ðÝ:‹ CV$ð"" Ï ::¢ � :‘ CV$mx‹ CV$ð"Y" Ï ¿"I",,"C451MIN.LIB"::¢ ‹ CV$ð"N" Ï ¿"I",,"C451.LIB"::¢ þ¥x‘ CLS$;"WAIT A MOMENT WHILE I FINISH YOUR PROGRAM."·x&‹ ÿ¯() Ï lÅx0± … #,A$ñx:‹ S3%ñ ÷ ÿ”(A$)ï/u ÷ ÿ”(A$)ñy Ï &yD‹ S4%ñ ÷ ÿ”(A$)ïy ÷ ÿ”(A$)ñœ| Ï &NyN‹ S1%ñ ÷ ÿ”(A$)ïð@� ÷ ÿ”(A$)ñ4� Ï &yX‹ S2%ñ ÷ ÿ”(A$)ïð4� ÷ ÿ”(A$)ñ( � Ï &‘yb‘ #,A$:‰ &—ylÃXzv‘ CLS$;"Your program has been written and saved on the specified drive.":‘"You may now load it and run it, if you wish. Remember, your":‘"data file does NOT exist until you initialize it!"‘z€‘"Thanks for running the CREATOR!":‚ Ið Î Ð:ƒ I:”—z¼�ÃzÆ‘"ERROR NUMBER";×;"AT LINE";Ö:• ¨ ‰ {Б"REMEMBER, ALL FIELDS ARE STRINGS WITHIN THE ARRAY G$()."Ã{Ú‘"TO PERFORM ARITHMETIC ON A FIELD, IT IS NECESSARY TO TAKE ITS":‘"VALUE FIRST, WITH THE VAL COMMAND. FOR EXAMPLE, TO PRINT THE":‘"SUM OF FIELDS 1,2, AND 3 YOU WOULD TYPE THE COMMAND LINE"ë{ä‘"VAL(G$(1))+VAL(G$(2))+VAL(G$(3))"™|î‘:‘"Now, type in a command line which will tell me what operations":‘"I should perform. Please don't type more than 240 characters.":‘"HIT THE RETURN WHEN YOU ARE DONE."ù|ø‘:‘"COMMAND LINE:";:± … CV$:‹ ÿ’(CV$)ïð Ï ‘"TOO LONG! TRY AGAIN!":‰ ø::¢ ‹ ÿ’(CV$)ñ Ï Ž7}Kð:JKð:Jð:‚ Ið Î ÿ’(CV$):‹ ÿƒ(CV$,I,)ðQ$ Ï Jðÿ†(Jó)E} ‹ J Ï  ‚}‹ ÿƒ(CV$,I,)ð")" Ï KðKò::¢ ‹ ÿƒ(CV$,I,)ð"(" Ï JKðJKòË} ƒ I:‹ JKñïK Ï ‘"MISMATCHED PARENTHESES SOMEWHERE. PLEASE TRY AGAIN."~*‹ J Ï ‘"MISMATCHED QUOTATION MARKS (";Q$;") IN YOUR COMMAND. PLEASE TRY AGAIN."9~4‹ Jï ø (JKñïK) Ï øp~>‘"What title should I use for this data:";:± … TI$§~H‹ Ú(TI$,Q$) Ï ‘"NO QUOTATION MARKS ALLOWED.":‰ >RJLðJLò :‘ #,JL;"CL=CL+1:GOSUB 41000":‘ #,JLò;"PRINT CHR$(124);";Q$;TI$;Q$;";CHR$(124);"Ç\‘"If this field is numeric, you may use a formatted print.":‘"If it is not, or you do not wish to print it in a formatted":‘"way, you need not. DO YOU WISH TO USE A FORMATTED PRINT (Y/N)"ófTI$ðÝ:‹ TI$ð"" Ï f::¢ ‹ TI$ð"N" Ï Ê€p‹ TI$ñï"Y" Ï \�€z± …"Number of places to the left of the decimal point=";NL$:‹ ÿ”(NL$)ñ ø ÿ”(NL$)ï Ï ‘"Illegal (0-16 only).":‰ z&�„± …"Number of places to the right of the decimal point";NR$:‹ ÿ”(NR$)ñ ø ÿ”(NL$)òÿ”(NR$)ï Ï ‘"Illegal number of places or illegal total places (0-16).":‰ „P�Ž‘"Do you want to use commas (Y/N): ";ˆ�˜NC$ðÝ:‹ NC$ð"" Ï ˜::¢ ‹ NC$ñï"N" ÷ NC$ñï"Y" Ï ˜’�¢‘ NC$Ì�¬TI$ð"USING"òQ$òØ(ÿ”(NL$),"#"):‹ NC$ð"Y" Ï TI$ðTI$ò","ê�¶‹ ÿ”(NR$)ï Ï TI$ðTI$ò"."‚ÀTI$ðTI$òØ(ÿ”(NR$),"#")òQ$ò";":CV$ðTI$òCV$3‚Ê‘ #,JLò;"PRINT ";CV$~‚Ô‘"Your commands have been accepted. Ready for the next command.":‰ î#")òQ$ò";":CV$ðTI$òCV$3‚Ê‘ #,JLò;"PRINT ";CV$~‚Ô‘"Yo