a:CREATOR; WRITTEN ON 1/16/80 BY BRUCE W. TONKIN.b:ADAPTED FOR CP/M AND MICROSOFT BASIC 5.01 ON 5/11/80b: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 FIRST OVERLAYjc:THIS IS PUBLIC DOMAIN SOFTWARE AND MAY NOT BE SOLD OR INCORPORATED IN ANY COMMERCIAL SOFTWARE WITHOUT THE EXPRESS PERMISSION OF THE AUTHORrc:|c cFX: (CV$) c II (CV$):CV%((CV$,II,)): CV%" FX FX:: CV%" FX FXd( CV%Z FX CV%CV% _3d2(CV$,II,)(CV%): II:|d CLS$;"Which field is the key field? Input the field number:";: KFd #,"35005 GET 2,1:KP=CVI(KP$):FOR K=1 TO KP:RP=K:GET 1,K": #,"35010 IF F$(";KF;")>CHR$(249) THEN 35990"ve #,"35000 PRINT CLS$:INPUT";Q$;"Field number to scan (1-";A;")";Q$;";NS:IF NS<1 OR NS>";A;" THEN 35000": #,"35990 NEXT K:GOTO";SLeLN: QR KF:FTFT(F$(QR)): QR: : *f CLS$;"Now we must describe the input prompts the operator will see,":"the edits to be performed, and the kind of data for each field.":"To do this, we will ask a series of questions about each field."g"To the question KIND OF DATA, the possible responses are:":"N..............numeric data, not packed, stored as characters."g"PH..............packed half-precision, stored as one character.":"PI............packed integer data, stored as two characters."h"PS........packed single precision data, stored as 4 characters.":"PD........packed double precision data, stored as 8 characters."h"C.........................character data, stored as characters.":"To the PROMPT question, type the message the operator will see."ri"To the BAD INPUT IF question, type as many edits as you wish of":"the form: >999 <";Q$;"A";Q$;" NOT NUMERIC NO ENTRY":"LENGTH>9 NOT ALPHA CONTAINS";Q$;"Z";Q$;" >=4 <>6"i"Note the quotes around alpha edits. Depress any key for more:";iPZ$: PZ$"" j  CLS$;"To the question ERROR MESSAGE, type the message the operator":"will see if that error is made. You may signal completion of":"edits for any field by just depressing the enter key. To repeat"j"these directions, type HELP. NOW DEPRESS ANY KEY TO CONTINUE:";k PZ$: PZ$""  :: :Jk* I A:I$((I),):"FIELD #";I;" LENGTH=";:L(F$(I)): Lk4P$"":"PROMPT:";: P$: P$"HELP" : 4k>"Should the prompt and reply be on the same line (Y/N):";NY$:CV$NY$: :NY$CV$: CV$"Y" NY$";":: NY$""ulHK$"":"KIND OF DATA:";: L L L L "C":K$"C":: K$:CV$K$: :K$CV$: K$"HELP" : HlR K$"PH" K$"PI" K$"PS" K$"PD" K$"C" K$"N" fl\"INVALID DATA TYPE: USE PH, PI, PS, PD, N OR C ONLY!": Hbmf (K$"PH" L) (K$"PI" L) (K$"PS" L) (K$"PD" L) (K$"N") (K$"C") zmp"INCORRECT LENGTH FOR VARIABLE TYPE!": HnzLNLN : #,LN;"PRINT";Q$;P$;Q$;NY$:BLLN: K$"C" #,BL;"IF UF<>0 AND G$=";Q$;Q$;" THEN G$=G$(";I$;")"nLNLN : #,LN;"LINE INPUT G$(";I$;")";:D%(I)LN: OO$"N" #," ":: #,":IF G$(";I$;")=";Q$;OT$;Q$;" THEN";SLn K$"PI" K$"PH" n #,LN;"IF UF THEN GOSUB 40000":S1%n K$"PS" o #,LN;"IF UF THEN GOSUB 40500":S2%'o K$"PD" To #,LN;"IF UF THEN GOSUB 40500":S2%io K$"PI" oLNLN : #,LN;"IF ABS(VAL(G$(";I$;")))>32767 THEN PRINT";Q$;"NUMBER OUT OF RANGE. MUST BE FROM -32767 TO 32767.";Q$;":GOTO";BLp K$"PH" pLNLN : #,LN;"IF ABS(VAL(G$(";I$;")))>127 THEN PRINT";Q$;"NUMBER OUT OF RANGE. MUST BE FROM -127 TO 127.";Q$;":GOTO";BLp K$"PI" K$"PH" LNLN : #,LN;"IF G$(";I$;")=";Q$;"0";Q$;" THEN";LNp K$"PI" K$"PH" nqLNLN : #,LN;"IF INT(VAL(G$(";I$;")))<>VAL(G$(";I$;")) THEN PRINT";Q$;"MUST BE A WHOLE NUMBER.";Q$;":GOTO";BLqBI$"":"Bad input if:";: BI$:CV$BI$: :BI$CV$: BI$"" q (BI$,"LENGHT") "MISSPELLED WORD":  r$ BI$"HELP" : Dr."Error message:";: EM$: EM$"HELP" : . s8"Is this a fatal error or a non-fatal error? A fatal error":"simply means the operator must try inputting this field until":"the input is correct; a non fatal error means the error message"s="will be printed as a warning, but the (possibly) erroneous":"input will be accepted. Depress F if the error is FATAL, or any":"other key, if not a fatal error: ";tBFE$: FE$"" B:: CV$FE$: :FE$CV$: FE$: FE$"F" FE$":GOTO"(BL):: FE$" "?tL (BI$,"NOT NUMERIC") S3%: jtV (BI$,"NOT ALPHA") S4%: t : (BI$,"NO ENTRY") ~t` (BI$,"CONTAINS")  : (BI$,"LENGTH")  : ujLNLN : #,LN;"CD$=G$(";I$;"):E=0:GOSUB 30000:IF E=1 THEN PRINT";Q$;EM$;Q$;FE$: {utLNLN : #,LN;"CD$=G$(";I$;"):E=0:GOSUB 31000:IF E=1 THEN PRINT";Q$;EM$;Q$;FE$: u~LNLN : #,LN;"IF LEN(G$(";I$;"))=0 THEN PRINT";Q$;EM$;Q$;FE$: uFH(BI$,Q$): FH "YOU FORGOT QUOTES.":  v FH vFH$(BI$,FH,):LNLN : #,LN;"IF INSTR(G$(";I$;"),";Q$;FH$;Q$;")>0 THEN PRINT";Q$;EM$;Q$;FE$:FH: v"SYNTAX ERROR. CONTAINS should not be set off by quotes.": 6wFH(BI$,"LENGTH"):LNLN : #,LN;"IF LEN(G$(";I$;"))";(BI$,FH);" THEN PRINT";Q$;EM$;Q$;FE$:FH: tw (BI$,"<") (BI$,">") (BI$,"=")  : w"SYNTAX ERROR. Repeat command, please.": wC(BI$,Q$): C xLNLN : #,LN;"IF G$(";I$;")";BI$;" THEN PRINT";Q$;EM$;Q$;FE$:FH: hxLNLN : #,LN;"IF VAL(G$(";I$;"))";BI$;" THEN PRINT";Q$;EM$;Q$;FE$:FH: xLNLN : K$"PI" #,LN;"G$(";I$;")=MKI$(VAL(G$(";I$;")))"x K$"PH" #,LN;"G$(";I$;")=FNPH$(VAL(G$(";I$;")))"9y K$"PI" #,|.I;"IF UF<>";I$;" THEN G$(";I$;")=MKI$(VAL(G$(";I$;")))"y  K$"PH" #,|.I;"IF UF<>";I$;" THEN G$(";I$;")=FNPH$(VAL(G$(";I$;")))"y K$"PI" #,`mRL;"G$(";I$;")=STR$(CVI(F$(";I$;")))" z K$"PH" #,`mRL;"G$(";I$;")=STR$(FNUH(F$(";I$;")))"Ez( K$"PS" #,LN;"G$(";I$;")=MKS$(VAL(G$(";I$;")))"z2 K$"PS" #,|.I;"IF UF<>";I$;" THEN G$(";I$;")=MKS$(VAL(G$(";I$;")))"z< K$"PS" #,`mRL;"G$(";I$;")=STR$(CVS(F$(";I$;")))"{F K$"PD" #,LN;"G$(";I$;")=MKD$(VAL(G$(";I$;")))"a{P K$"PD" #,|.I;"IF UF<>";I$;" THEN G$(";I$;")=MKD$(VAL(G$(";I$;")))"{Z K$"PD" #,`mRL;"G$(";I$;")=STR$(CVD(F$(";I$;")))"{d K$"N" K$"C" #,RL`m;"G$(";I$;")=F$(";I$;")"|nRLRL :LNLN : #,LN;"RETURN"::"CREATOR.OVL", ,ALL0|:ERROR HANDLER\|"ERROR NUMBER";;"AT LINE";: RLRL :LNLN : #,LN;"RETURN"::"CREATOR.OVL", ,ALL0|:ERROR HANDLER\|"ERROR