home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / DATABASE / CREATOR.LBR / CREATOR.OZR / CREATOR.OVR
Text File  |  2000-06-30  |  8KB  |  88 lines

  1. 1 'CREATOR; WRITTEN ON 1/16/80 BY BRUCE W. TONKIN
  2. 2 'ADAPTED FOR CP/M AND MICROSOFT BASIC 5.01 ON 5/11/80
  3. 3 '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 OVERLAY
  4. 4 'THIS IS PUBLIC DOMAIN SOFTWARE AND MAY NOT BE SOLD OR INCORPORATED IN ANY COMMERCIAL SOFTWARE WITHOUT THE EXPRESS PERMISSION OF THE AUTHOR
  5. 5 '
  6. 19 GOTO 660
  7. 20 FX=0:IF LEN(CV$)<1 THEN RETURN
  8. 30 FOR II=1 TO LEN(CV$):CV%=ASC(MID$(CV$,II,1)):IF CV%=34 AND FX=0 THEN FX=1:ELSE IF CV%=34 AND FX=1 THEN FX=0
  9. 40 IF CV%>90 AND FX=0 THEN CV%=CV% AND 95
  10. 50 MID$(CV$,II,1)=CHR$(CV%):NEXT II:RETURN
  11. 660 PRINT CLS$;"Which field is the key field? Input the field number:";:INPUT KF
  12. 670 PRINT #1,"35005 GET 2,1:KP=CVI(KP$):FOR K=1 TO KP:RP=K:GET 1,K":PRINT #1,"35010 IF F$(";KF;")>CHR$(249) THEN 35990"
  13. 680 PRINT #1,"35000 PRINT CLS$:INPUT";Q$;"Field number to scan (1-";A;")";Q$;";NS:IF NS<1 OR NS>";A;" THEN 35000":PRINT #1,"35990 NEXT K:GOTO";SL
  14. 690 LN=1000:FOR QR=1 TO KF-1:FT=FT+VAL(F$(QR)):NEXT QR:GOSUB 700:GOTO 810
  15. 700 PRINT CLS$;"Now we must describe the input prompts the operator will see,":PRINT"the edits to be performed, and the kind of data for each field.":PRINT"To do this, we will ask a series of questions about each field."
  16. 710 PRINT"To the question KIND OF DATA, the possible responses are:":PRINT"N..............numeric data, not packed, stored as characters."
  17. 720 PRINT"PH..............packed half-precision, stored as one character.":PRINT"PI............packed integer data, stored as two characters."
  18. 730 PRINT"PS........packed single precision data, stored as 4 characters.":PRINT"PD........packed double precision data, stored as 8 characters."
  19. 740 PRINT"C.........................character data, stored as characters.":PRINT"To the PROMPT question, type the message the operator will see."
  20. 750 PRINT"To the BAD INPUT IF question, type as many edits as you wish of":PRINT"the form: >999     <";Q$;"A";Q$;"      NOT NUMERIC      NO ENTRY":PRINT"LENGTH>9       NOT ALPHA     CONTAINS";Q$;"Z";Q$;"      >=4     <>6"
  21. 760 PRINT"Note the quotes around alpha edits. Depress any key for more:";
  22. 770 PZ$=INKEY$:IF PZ$="" THEN 770
  23. 780 PRINT CLS$;"To the question ERROR MESSAGE, type the message the operator":PRINT"will see if that error is made. You may signal completion of":PRINT"edits for any field by just depressing the enter key. To repeat"
  24. 790 PRINT"these directions, type HELP. NOW DEPRESS ANY KEY TO CONTINUE:";
  25. 800 PZ$=INKEY$:IF PZ$="" THEN 800:ELSE PRINT:RETURN
  26. 810 FOR I=1 TO A:I$=MID$(STR$(I),2):PRINT"FIELD #";I;" LENGTH=";:L=VAL(F$(I)):PRINT L
  27. 820 P$="":PRINT"PROMPT:";:LINE INPUT P$:IF P$="HELP" THEN GOSUB 700:GOTO 820
  28. 830 INPUT"Should the prompt and reply be on the same line (Y/N):";NY$:CV$=NY$:GOSUB 20:NY$=CV$:IF CV$="Y" THEN NY$=";":ELSE NY$=""
  29. 840 K$="":PRINT"KIND OF DATA:";:IF L<>1 AND L<>2 AND L<>4 AND L<>8 THEN PRINT"C":K$="C":ELSE LINE INPUT K$:CV$=K$:GOSUB 20:K$=CV$:IF K$="HELP" THEN GOSUB 700:GOTO 840
  30. 850 IF K$="PH" OR K$="PI" OR K$="PS" OR K$="PD" OR K$="C" OR K$="N" THEN 870
  31. 860 PRINT"INVALID DATA TYPE: USE PH, PI, PS, PD, N OR C ONLY!":GOTO 840
  32. 870 IF (K$="PH" AND L=1) OR (K$="PI" AND L=2) OR (K$="PS" AND L=4) OR (K$="PD" AND L=8) OR (K$="N") OR (K$="C") THEN 890
  33. 880 PRINT"INCORRECT LENGTH FOR VARIABLE TYPE!":GOTO 840
  34. 890 LN=LN+10:PRINT #1,LN;"PRINT";Q$;P$;Q$;NY$:BL=LN:IF K$<>"C" THEN PRINT #1,BL+1;"IF UF<>0 AND G$=";Q$;Q$;" THEN G$=G$(";I$;")"
  35. 900 LN=LN+10:PRINT #1,LN;"LINE INPUT G$(";I$;")";:D%(I)=LN:IF OO$="N" THEN PRINT #1," ":ELSE PRINT #1,":IF G$(";I$;")=";Q$;OT$;Q$;" THEN";SL
  36. 910 IF K$<>"PI" AND K$<>"PH" THEN 930
  37. 920 PRINT #1,LN+1;"IF UF THEN GOSUB 40000":S1%=1
  38. 930 IF K$<>"PS" THEN 950
  39. 940 PRINT #1,LN+1;"IF UF THEN GOSUB 40500":S2%=1
  40. 950 IF K$<>"PD" THEN 970
  41. 960 PRINT #1,LN+1;"IF UF THEN GOSUB 40500":S2%=1
  42. 970 IF K$<>"PI" THEN 990
  43. 980 LN=LN+10:PRINT #1,LN;"IF ABS(VAL(G$(";I$;")))>32767 THEN PRINT";Q$;"NUMBER OUT OF RANGE. MUST BE FROM -32767 TO 32767.";Q$;":GOTO";BL
  44. 990 IF K$<>"PH" THEN 1010
  45. 1000 LN=LN+10:PRINT #1,LN;"IF ABS(VAL(G$(";I$;")))>127 THEN PRINT";Q$;"NUMBER OUT OF RANGE. MUST BE FROM -127 TO 127.";Q$;":GOTO";BL
  46. 1010 IF K$="PI" OR K$="PH" THEN LN=LN+10:PRINT #1,LN;"IF G$(";I$;")=";Q$;"0";Q$;" THEN";LN+20
  47. 1020 IF K$<>"PI" AND K$<>"PH" THEN 1040
  48. 1030 LN=LN+10:PRINT #1,LN;"IF INT(VAL(G$(";I$;")))<>VAL(G$(";I$;")) THEN PRINT";Q$;"MUST BE A WHOLE NUMBER.";Q$;":GOTO";BL
  49. 1040 BI$="":PRINT"Bad input if:";:LINE INPUT BI$:CV$=BI$:GOSUB 20:BI$=CV$:IF BI$="" THEN 1260
  50. 1050 IF INSTR(BI$,"LENGHT")>0 THEN PRINT"MISSPELLED WORD":GOTO 1040
  51. 1060 IF BI$="HELP" THEN GOSUB 700:GOTO 1040
  52. 1070 PRINT"Error message:";:LINE INPUT EM$:IF EM$="HELP" THEN GOSUB 700:GOTO 1070
  53. 1080 PRINT"Is this a fatal error or a non-fatal error? A fatal error":PRINT"simply means the operator must try inputting this field until":PRINT"the input is correct; a non fatal error means the error message"
  54. 1085 PRINT"will be printed as a warning, but the (possibly) erroneous":PRINT"input will be accepted. Depress F if the error is FATAL, or any":PRINT"other key, if not a fatal error: ";
  55. 1090 FE$=INKEY$:IF FE$="" THEN 1090:ELSE CV$=FE$:GOSUB 20:FE$=CV$:PRINT FE$:IF FE$="F" THEN FE$=":GOTO"+STR$(BL):ELSE FE$=" "
  56. 1100 IF INSTR(BI$,"NOT NUMERIC") THEN S3%=1:GOTO 1130
  57. 1110 IF INSTR(BI$,"NOT ALPHA") THEN S4%=1:GOTO 1140 ELSE IF INSTR(BI$,"NO ENTRY") THEN 1150
  58. 1120 IF INSTR(BI$,"CONTAINS") THEN 1160 ELSE IF INSTR(BI$,"LENGTH") THEN 1200 ELSE 1210
  59. 1130 LN=LN+10:PRINT #1,LN;"CD$=G$(";I$;"):E=0:GOSUB 30000:IF E=1 THEN PRINT";Q$;EM$;Q$;FE$:GOTO 1040
  60. 1140 LN=LN+10:PRINT #1,LN;"CD$=G$(";I$;"):E=0:GOSUB 31000:IF E=1 THEN PRINT";Q$;EM$;Q$;FE$:GOTO 1040
  61. 1150 LN=LN+10:PRINT #1,LN;"IF LEN(G$(";I$;"))=0 THEN PRINT";Q$;EM$;Q$;FE$:GOTO 1040
  62. 1160 FH=INSTR(BI$,Q$):IF FH<1 THEN PRINT"YOU FORGOT QUOTES.":GOTO 1040
  63. 1170 IF FH<1 THEN 1190
  64. 1180 FH$=MID$(BI$,FH+1,1):LN=LN+10:PRINT #1,LN;"IF INSTR(G$(";I$;"),";Q$;FH$;Q$;")>0 THEN PRINT";Q$;EM$;Q$;FE$:FH=0:GOTO 1040
  65. 1190 PRINT"SYNTAX ERROR. CONTAINS should not be set off by quotes.":GOTO 1040
  66. 1200 FH=INSTR(BI$,"LENGTH"):LN=LN+10:PRINT #1,LN;"IF LEN(G$(";I$;"))";MID$(BI$,FH+6);" THEN PRINT";Q$;EM$;Q$;FE$:FH=0:GOTO 1040
  67. 1210 IF INSTR(BI$,"<")<1 AND INSTR(BI$,">")<1 AND INSTR(BI$,"=")<1 THEN 1220 ELSE 1230
  68. 1220 PRINT"SYNTAX ERROR. Repeat command, please.":GOTO 1040
  69. 1230 C=INSTR(BI$,Q$):IF C<1 THEN 1250
  70. 1240 LN=LN+10:PRINT #1,LN;"IF G$(";I$;")";BI$;" THEN PRINT";Q$;EM$;Q$;FE$:FH=0:GOTO 1040
  71. 1250 LN=LN+10:PRINT #1,LN;"IF VAL(G$(";I$;"))";BI$;" THEN PRINT";Q$;EM$;Q$;FE$:FH=0:GOTO 1040
  72. 1260 LN=LN+10:IF K$="PI" THEN PRINT #1,LN;"G$(";I$;")=MKI$(VAL(G$(";I$;")))"
  73. 1270 IF K$="PH" THEN PRINT #1,LN;"G$(";I$;")=FNPH$(VAL(G$(";I$;")))"
  74. 1280 IF K$="PI" THEN PRINT #1,11900+I;"IF UF<>";I$;" THEN G$(";I$;")=MKI$(VAL(G$(";I$;")))"
  75. 1290 IF K$="PH" THEN PRINT #1,11900+I;"IF UF<>";I$;" THEN G$(";I$;")=FNPH$(VAL(G$(";I$;")))"
  76. 1300 IF K$="PI" THEN PRINT #1,28000+RL;"G$(";I$;")=STR$(CVI(F$(";I$;")))"
  77. 1310 IF K$="PH" THEN PRINT #1,28000+RL;"G$(";I$;")=STR$(FNUH(F$(";I$;")))"
  78. 1320 IF K$="PS" THEN PRINT #1,LN;"G$(";I$;")=MKS$(VAL(G$(";I$;")))"
  79. 1330 IF K$="PS" THEN PRINT #1,11900+I;"IF UF<>";I$;" THEN G$(";I$;")=MKS$(VAL(G$(";I$;")))"
  80. 1340 IF K$="PS" THEN PRINT #1,28000+RL;"G$(";I$;")=STR$(CVS(F$(";I$;")))"
  81. 1350 IF K$="PD" THEN PRINT #1,LN;"G$(";I$;")=MKD$(VAL(G$(";I$;")))"
  82. 1360 IF K$="PD" THEN PRINT #1,11900+I;"IF UF<>";I$;" THEN G$(";I$;")=MKD$(VAL(G$(";I$;")))"
  83. 1370 IF K$="PD" THEN PRINT #1,28000+RL;"G$(";I$;")=STR$(CVD(F$(";I$;")))"
  84. 1380 IF K$="N" OR K$="C" THEN PRINT #1,RL+28000;"G$(";I$;")=F$(";I$;")"
  85. 1390 RL=RL+10:LN=LN+10:PRINT #1,LN;"RETURN":NEXT:CHAIN"CREATOR.OVL",10,ALL
  86. 1930 'ERROR HANDLER
  87. 1990 PRINT"ERROR NUMBER";ERR;"AT LINE";ERL:ON ERROR GOTO 0
  88. 1,LN