home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib10.dsk / INITIALIZE.bas < prev    next >
BASIC Source File  |  2023-02-26  |  6KB  |  91 lines

  1. 10  REM  **********************
  2. 20  REM  *     INITIALIZE     *
  3. 30  REM  *   BY CHUCK KISS    *
  4. 40  REM  * COPYRIGHT (C) 1982 *
  5. 50  REM  * BY MICRO-SPARC INC *
  6. 60  REM  * LINCOLN, MA. 01773 *
  7. 70  REM  **********************
  8. 80 D$ =  CHR$(4)
  9. 90  PRINT D$"NOMON C,I,O"
  10. 100  DIM T$(16),TV(16),T(16),TW(16),C(16)
  11. 110  SPEED= 255: TEXT : HOME :X$ = "EXIT"
  12. 120 G$ =  CHR$(7):BC$ =  CHR$(2):V1$ =  CHR$(91):V2$ =  CHR$(93)
  13. 130  FOR I = 0 TO 16:C(I) = 0: NEXT :V = 16: FOR K = 1 TO V: READ T$(K): NEXT 
  14. 140  DATA  "FULL NAME","LAST NAME","FIRST NAME","INITIAL","ADDRESS","CITY","STATE","ZIPCODE","PHONE #","COMMENT","OPTION 1","OPTION 2","OPTION 3","OPTION 4","OPTION 5","OPTION 6"
  15. 150  IF DI = 1  THEN 220
  16. 160  VTAB 6: HTAB 11: INVERSE : PRINT "INITIALIZE NEW FILE": NORMAL : HTAB 11: PRINT "-------------------"
  17. 170  POKE  -16368,0
  18. 180  FOR D = 1 TO 1000: NEXT D
  19. 190  VTAB 13: HTAB 5: PRINT "NAME OF FILE";G$;: INPUT ": ";FILE$
  20. 200  IF  LEN(FILE$) = 0  THEN 190
  21. 210  IF  ASC( LEFT$(FILE$,1)) <65  THEN  VTAB 19: HTAB 12: PRINT "ILLEGAL FILE NAME";G$;G$;: FOR D = 1 TO 1500: NEXT D: VTAB 13: HTAB 19: CALL  -958: GOTO 190
  22. 220  HOME : INVERSE : HTAB (21 - LEN(FILE$)/2): PRINT FILE$: NORMAL : PRINT : INVERSE 
  23. 230  HTAB 14: PRINT " INITIALIZER ": NORMAL : PRINT : POKE 34,4
  24. 240  HOME : PRINT "    YOU WILL BE ENTERING DATA IN AN"
  25. 250  PRINT "  ORDERED FORMAT CONSISTING OF FIELDS."
  26. 260  PRINT "SELECT A ";: INVERSE : PRINT "MAXIMUM OF 12 FIELDS";: NORMAL : PRINT " :": PRINT 
  27. 270  FOR K = 1 TO V/2: HTAB 2: PRINT K;".  ";T$(K);: HTAB (24 +(K = 1)): PRINT K +V/2".  ";T$(K +V/2): NEXT K: PRINT 
  28. 280 N = 0
  29. 290 N = N +1: IF N >12  THEN  VTAB 20: HTAB 1: CALL  -958: VTAB 23: HTAB 10: FLASH : PRINT "  L I M I T  =  1 2  ";: NORMAL : FOR D = 1 TO 2000: NEXT D: GOTO 460
  30. 300  VTAB 18: CALL  -958: PRINT "ENTER IN THE NUMBER REPRESENTING YOUR   CHOICE FOR ";: INVERSE : PRINT "FIELD #";N;G$: NORMAL : POKE  -16368,0
  31. 310  VTAB 23: HTAB 11: PRINT "PRESS ";: INVERSE : PRINT "RETURN";: NORMAL : PRINT " TO ";X$;;: POKE 35,22
  32. 320  VTAB 19: HTAB (21 +(N >9)): INPUT "=> ";T$: IF N >1  AND  LEN(T$) = 0  THEN 460
  33. 330  IF N = 1  AND  LEN(T$) = 0  THEN  PRINT D$"RUN A.R.C."
  34. 340 X$ = "QUIT"
  35. 350  IF  ASC( RIGHT$(T$,1)) <48  OR  ASC( RIGHT$(T$,1)) >58  THEN 300
  36. 360  IF  LEN(T$) >2  THEN 300
  37. 370 T =  VAL(T$): IF T <1  OR T >V  THEN 300
  38. 380  IF C(T) = 1  THEN  VTAB 21: HTAB 12: INVERSE : PRINT "ALREADY  SPECIFIED";G$;G$;: NORMAL : FOR D = 1 TO 1000: NEXT D: HTAB 12: CALL  -868: VTAB 19: HTAB 23: CALL  -868: GOTO 310
  39. 390  IF T <11  AND T >0  THEN 440
  40. 400  IF T >10  AND T <V +1  THEN  INVERSE : PRINT "ENTER NAME FOR THIS FIELD:";G$: HTAB 4: PRINT "(10 LETTERS OR LESS)": NORMAL : VTAB 20: HTAB 27: INPUT " ";Z$:T$(T) = Z$
  41. 410  IF  LEN(Z$) >10  THEN  VTAB 20: HTAB 28: CALL  -958: HTAB 29: INVERSE : PRINT " INVALID ";G$;G$: FLASH 
  42. 420  IF  LEN(Z$) >10  THEN  VTAB 21: HTAB 4: PRINT "(10 LETTERS OR LESS)": NORMAL : FOR D = 1 TO 1500: NEXT D: VTAB 20: HTAB 29: CALL  -868: HTAB 1: GOTO 400
  43. 430  IF  LEN(Z$) = 0  THEN T$(T) = "        "
  44. 440 T(N) = T: VTAB (8 +T *(T <9) +(T -8) *(T >8)): HTAB (6 +23 *(T >8)): PRINT "          ";: REM  10 SPACES
  45. 450  HTAB (6 +23 *(T >8)): INVERSE : PRINT T$(T): NORMAL :C(T) = 1: GOTO 290
  46. 460  POKE 35,23: HOME :N = N -1
  47. 470  IF  INT(N/2) = N/2  THEN N2% = N/2
  48. 480  IF  INT(N/2) < >N/2  THEN N2% = N/2 +1
  49. 490  FOR K = 1 TO N2%
  50. 500  PRINT : HTAB 4: PRINT K;". ";T$(T(K));: HTAB (24 -((K +N2%) >9)): PRINT K +N2%;". ";T$(T(K +N2%)): NEXT K
  51. 510  IF  INT(N/2) < >N/2  THEN  VTAB ( PEEK(37)): HTAB 23: PRINT "             ": REM  13 SPACES
  52. 520  VTAB 22: CALL  -868: HTAB 14: PRINT "CORRECT (Y/N) ";G$;: GET Y$: IF Y$ = "N"  THEN X$ = "EXIT": RESTORE :DI = 1: GOTO 130
  53. 530  IF Y$ < >"Y"  THEN 520
  54. 540  POKE 34,0: HOME : HTAB 3: PRINT " ENTER LENGTH VALUES FOR EACH FIELD:": HTAB 3
  55. 550  PRINT " ===================================": POKE 34,4
  56. 560  HTAB 2: VTAB 22: PRINT V1$;" ";: INVERSE : PRINT "NOTE";: NORMAL : PRINT " ";V2$;"  MAXIMUM FIELD LENGTH = 20"
  57. 570  FOR K = 1 TO N
  58. 580  VTAB 4 +K: PRINT "FIELD #";K;".......";: INVERSE : HTAB 16: PRINT T$(T(K));G$;: NORMAL : HTAB 31: INPUT " ";TV$
  59. 590 TV(K) =  VAL(TV$)
  60. 600  IF K = 1  AND  LEN(TV$) = 0  THEN  POKE 34,0: RESTORE :DI = 1:X$ = "EXIT": GOTO 130
  61. 610  IF TV(K) <1  OR TV(K) >20  OR TV(K) < > INT(TV(K))  THEN  HTAB 29: VTAB 4 +K: FLASH : PRINT " INVALID ": FOR D = 1 TO 1000: NEXT D: VTAB 4 +K: HTAB 29: CALL  -868:K = K -1: NORMAL : HTAB 1
  62. 620  NEXT K
  63. 630  FOR D = 1 TO 500: NEXT D
  64. 640  POKE 34,4: HOME 
  65. 650 RL = 0: HTAB 5: PRINT "#   FIELD NAME      FIELD LENGTH"
  66. 660  HTAB 5: PRINT "-   ----------      ------------"
  67. 670  FOR K = 1 TO N
  68. 680  HTAB (5 -(K >9)): PRINT K;: HTAB 9: INVERSE : PRINT "          ";: HTAB 9: PRINT T$(T(K));: NORMAL : HTAB (28 +(TV(K) <10)): PRINT " ";TV(K):RL = RL +TV(K): NEXT K
  69. 690  HTAB 27: PRINT "------": HTAB (29 -(RL >99) +(RL <10)): INVERSE : PRINT RL;: NORMAL : HTAB 9: PRINT "RECORD LENGTH  =>";
  70. 700 RL = RL +1
  71. 710  REM  : CALC NUMBER OF RECORDS
  72. 720 NR =  INT(6 +12000/(RL +29))
  73. 730  IF NR >125  THEN NR = 125
  74. 740  VTAB 21: HTAB 6: PRINT "FILE CAPACITY  =>  ";: INVERSE : PRINT NR;: NORMAL : PRINT " RECORDS"
  75. 750  VTAB 23: HTAB 14: CALL  -868: PRINT "CORRECT (Y/N) ";G$;: GET Y$: IF Y$ = "N"  THEN 540
  76. 760  IF Y$ < >"Y"  THEN 750
  77. 770  POKE 34,0: HOME : FOR D = 1 TO 500: NEXT D: VTAB 11
  78. 780  HTAB 6: INVERSE : PRINT "INITIALIZING FILE ON DISKETTE": NORMAL 
  79. 790  PRINT : HTAB 17: PRINT "STAND-BY"
  80. 800  FOR D = 1 TO 500: NEXT D
  81. 810  PRINT D$"OPEN ";FILE$ +BC$
  82. 820  PRINT D$"WRITE ";FILE$ +BC$
  83. 830  PRINT N: PRINT RL: PRINT NR: FOR K = 1 TO N: PRINT T$(T(K)): PRINT TV(K): NEXT K
  84. 840  PRINT D$"CLOSE ";FILE$ +BC$
  85. 850  PRINT D$"LOCK ";FILE$ +BC$
  86. 860  PRINT D$"OPEN ";FILE$",L";RL
  87. 870  PRINT D$"WRITE ";FILE$",R0"
  88. 880  PRINT 0
  89. 890  PRINT D$"CLOSE"
  90. 900  PRINT D$"RUN A.R.C."
  91. 910  END