home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / steel24.zip / REMARKS3.BAS < prev    next >
BASIC Source File  |  1980-01-01  |  11KB  |  266 lines

  1. 20000 REM *****  GET UPPER LIMIT 
  2. 20010 GOSUB 20050 / GET UPPER AND LOWER LIMITS OF RELATED SUBRECORDS SUBROUTINE
  3. 20020 GOSUB 20400 / INITIALIZE SUMS TO ZERO SUBROUTINE
  4. 20030 GOTO 21000 / PRINT REPEATING FIELDS SUBROUTINE
  5. 20050 RNU = RN / INITIALZE RECORD NUMBER UPPER TO RECORD NUMBER
  6. 20060 TESTH$ = TEST$ / TEST HOLD = TEST$ OF THE CURRENT RECORD NUMBER.  THE NON REPEATING PART OF THE RECORD WAS FIELDED AS TEST$.
  7. 20100 WHILE TEST$ = TESTH$ / WHILE THERE IS NO CHANGE IN THE NONREPEATING PART OF THE RECORD  
  8. 20110 RNU = RNU - 1 / DECREMENT RECORD NUMBER UPPER
  9. 20115 IF RNU = 0 THEN GOTO 20140 / CAN'T DECREMENT TO ZERO
  10. 20120 GET #1,RNU / GET RECORD NUMBER
  11. 20130 WEND / END LOOP
  12. 20140 RNU = RNU + 1 / ADD ONE TO RECORD NUMBER BECAUSE WE WENT ONE PAST IT 
  13. 20200 REM * GET LOWER LIMIT 
  14. 20250 RNL = RN / INITIALIZE RECORD NUMBER LOWER TO CURRENT RECORD NUMBER
  15. 20290 GET #1,RNL / GET RECORD NUMBER LOWER
  16. 20300 WHILE TEST$ = TESTH$ / WHILE THERE IS NO CHANGE IN THE REPEATING PART OF THE RECORD
  17. 20310 RNL = RNL + 1 / INCREMENT RECORD NUMBER LOWER
  18. 20315 IF RNL > MRN THEN GOTO 20340 / CAN'T INCREMENT PAST END OF FILE
  19. 20320 GET #1,RNL / GET RECORD NUMBER LOWER
  20. 20330 WEND
  21. 20340 RNL = RNL - 1 / SUBTRACT ONE SINCE WE WENT ONE PAST IT 
  22. 20350 RETURN
  23. 20400 REM * SET SUMS TO ZERO
  24. 20410 FOR T = 1 TO 28 / START LOOP.
  25. 20420 SUM#(T) = 0 / INITIALIZE SUM TO ZERO
  26. 20430 NEXT T
  27. 20450 RETURN
  28. 21000 REM *  PRINT REPIOTIOUS FIELDS
  29. 21050 OFFSET = -1 / INITIALZE OFFSET TO -1
  30. 21100 FOR TH = RNU TO RNL / START LOOP TO PRINT ALL RELATED SUBRECORDS
  31. 21105 OFFSET = OFFSET + 1 / INCREMENT THE OFFSET BY ONE
  32. 21110 GET #1,TH / GET THE RECORD NUMBER
  33. 21120 T2 = LSTE + 1 / T2 EQUALS THE FIELD NUMBER OF THE FIRST REPEATING FIELD
  34. 21130 FOR N = T2 TO NREC(A) / START LOOP TO PRINT ALL REPEATING FIELDS
  35. 21140 GOSUB 34110 / PRINT EACH REPEATING FIELD SUBROUTINE
  36. 21150 NEXT N / END EACH FIELD LOOP
  37. 21160 NEXT TH / END EACH RECORD NUMBER LOOP
  38. 21180 LI = 1 / LINE NUMBER
  39. 21182 TB = 47 / COLUMN NUMBER 47
  40. 21185 GOSUB 13050 / LOCATE SUBROUTINE
  41. 21190 PRINT "RECORDS";RNU;" TO ";RNL;"  *******"
  42. 21195 RN = RNL / CHANGE CURRENT RECORD NUMBER TO RECORD NUMBER LOWER
  43. 21200 GOTO 8510 / RETURN TO OPTIONS
  44. 26000 REM 
  45. 26100 EFLG = 1 / END OF FILE FLAG EQUALS YES
  46. 26200 PRINT "**********  END OF FILE  ***********"
  47. 26202 PRINT "**** PRESS ANY KEY TO CONTINUE ****"
  48. 26204 IF INKEY$ = "" GOTO 26204 / LOOP UNTILL ANY KEY IS PRESSED
  49. 26210 GOTO  3010 / RETURN TO FILE OPTIONS
  50. 26500 REM 
  51. 26600 PRINT "**********  END OF FILE  ***********"
  52. 26610 PRINT "**** PRESS ANY KEY TO CONTINUE ****"
  53. 26620 IF INKEY$ = "" GOTO 26620 / LOOP UNTILL ANY KEY IS PRESSED
  54. 26635 EFLG = 1 / END OF FILE FLAG EQUALS YES
  55. 26640 RETURN        
  56. 26800 REM 
  57. 26900 PRINT "******  RECORD NUMBER REQUESTED DOES NOT EXIST  ******"
  58. 26910 GOTO 8020 / ASK FOR ANOTHER RECORD NUMBER 
  59. 27000 REM * READ SCREEN TEST
  60. 27005 GOSUB 10900 / PUT PROGRAM DATA DISK IN DEFAULT DRIVE PROMPT
  61. 27010 OPEN "I",#1,"SCTEST" / OPEN THE SCREEN TEST FILE AS A SEQUENTIAL ACCESS FILE
  62. 27020 FOR T = 1 TO 40
  63. 27030 INPUT #1,SCRN(T) / READ CUSTOM SCREEN FLAG FOR EACH FILE
  64. 27040 NEXT T
  65. 27050 CLOSE #1
  66. 27060 RETURN
  67. 27070 REM * READ SCREEN DESCRIPTION
  68. 27071 GOSUB 10900 / PUT THE PROGRAM DATA DISK IN DEFAULT DRIVE PROMPT
  69. 27072 A$ = STR$(A) / CONVERTS FILE NUMBER TO A STRING
  70. 27074 A$ = MID$(A$,2) / GETS RID OF LEADING SPACE
  71. 27076 A$ = "SCREEN" + A$ / CONCATE "SCREEN" AND FILE NUMBER
  72. 27080 OPEN "I",#2,A$ / OPEN SCREEN DESCRIPTION FILE
  73. 27090 FOR T = 1 TO 18 
  74. 27100 INPUT #2,SW$(T) / INPUT FROM DISK THE 18 OVERLAY LINES
  75. 27110 NEXT T
  76. 27120 FOR T = 1 TO NREC(A) / START LOOP READING EACH FIELD
  77. 27130 INPUT #2,LE(T),CE(T) / INPUT LINE NUMBER AND COLUMN NUMBER FOR EACH FIELD
  78. 27140 IF FTY(A,T) = 2 THEN INPUT #2,LEK(T),CEK(T) / IF FIELD IS AN INTEGER THE INPUT THE LINE AND COLUMN TO PRINT THE KEY AT
  79. 27150 NEXT T / END LOOP FOR EACH FIELD
  80. 27160 INPUT #2,RPT / INPUT REPEATING FIELD OPTION
  81. 27170 IF RPT = 2 THEN GOSUB 27200 / IF REPEATING OPTION EQUALS YES THEN GOSUB 
  82. 27180 CLOSE #2
  83. 27190 RETURN
  84. 27200 INPUT #2,LSTE / INPUT THE NUMBER OF THE LAST NON REPEATING FIELD
  85. 27210 T2 = LSTE + 1 / T2 EQUALS FIRST REPEATING FIELD
  86. 27220 FOR T = T2 TO NREC(A) / FOR ALL THE REPEATING FIELDS
  87. 27230 INPUT #2,SUMF(T) / INPUT SUM OPTION
  88. 27240 NEXT T
  89. 27245 H = 0 / INITIALZE H TO 0 
  90. 27250 FOR T = 1 TO LSTE / FOR T = 1 TO LAST NON REPEATING FIELD
  91. 27260 H = FL(A,T) + H 
  92. 27270 NEXT T
  93. 27280 FIELD #1,H AS TEST$ / FIELD THE NOREPEATING FIELDS AS TEST$
  94. 27300 RETURN
  95. 28000 REM 
  96. 28100 GOSUB 13000 / CLEAR SCREEN
  97. 28110 PRINT "**********  DO YOU WANT TO USE THE STANDARD OR YOUR CUSTOM SCREEN  **********"
  98. 28115 PRINT ""
  99. 28120 PRINT "                        1 - USE THE CUSTOM SCREEN"
  100. 28125 PRINT ""
  101. 28130 PRINT "                        2 - USE THE STANDARD SCREEN"
  102. 28135 PRINT ""
  103. 28140 PRINT "*******************  ENTER THE NUMBER THEN PRESS RETURN  ********************"
  104. 28200 GOSUB 14000 / INPUT INTEGER LESS THEN 100 SUBROUTINE
  105. 28210 IF DT# < 1 OR DT# > 2 THEN 28200 / IF OPTION OUT OF RANGE THEN REENTER
  106. 28220 CSCR = DT# / CLEAR SCREEN OPTION EQUALS THE VALUE RETURNED FROM THE INPUT SUBROUTINE
  107. 28230 IF CSCR = 1 THEN GOSUB 27070 / IF USING THE CUSTOM SCREEN THEN READ THE CUSTOM SCREEN DATA
  108. 28300 RETURN
  109. 29000 REM * READ IDEX SUBROUTINE
  110. 29010 OPEN "I",#1,"IDEX"   
  111. 29020 FOR T = 1 TO MAXF / FOR T = 1 TO MAXIMUM FILE NUMBER
  112. 29030 INPUT #1,D,D,D,MFLG(T) / INPUT LIMITS FLAG
  113. 29040 NEXT T
  114. 29050 CLOSE #1
  115. 29060 RETURN
  116. 29070 REM * READ MAX MIN DATA
  117. 29080 A$ = STR$(A) / CONVERT FILE NUMBER TO A STRING
  118. 29090 A$ = MID$(A$,2) / GET RID OF LEADING SPACE
  119. 29100 A$ = "MAXMIN" + A$ / SET FILE NAME TO "MAXIMIM" + FILE NUMBER
  120. 29110 OPEN "I",#2,A$ / OPEN LIMITS DESCRIPTION FILE
  121. 29120 FOR T = 1 TO NREC(A) / FOR EACH FIELD
  122. 29130 INPUT #2,MAXC#(T),MINC#(T) / INPUT MAXIMUM AND MINIMUM
  123. 29140 NEXT T
  124. 29150 CLOSE #2
  125. 29160 RETURN
  126. 29190 N = D 
  127. 29200 REM * CHECK MAX LIMITS
  128. 29210 IF DT# < MINC#(N) OR DT# > MAXC#(N) THEN GOSUB 29300 / IF NUMBER INPUTED IS OUTSIDE ITS LIMITS THEN GOSUB 29300
  129. 29220 RETURN
  130. 29300 PRINT CHR$(7) / SOUNDS BUZZER
  131. 29310 PRINT CHR$(7) / SOUNDS BUZZER
  132. 29329 RETURN
  133. 30000 REM * PRINT OVERLAY
  134. 30005 GOSUB 20400
  135. 30010 OFFSET = 0 / INITIALIZE OFFSET TO 0
  136. 30100 FOR T = 1 TO 18
  137. 30110 PRINT SW$(T) / PRINT THE OVERLAY LINES
  138. 30120 NEXT T
  139. 30130 RETURN
  140. 31000 REM * PRINT FIELDS
  141. 31010 X(N) = I# 
  142. 31100 IF LE(N) = 0 THEN RETURN / IF LINE NUMBER = 0 THEN RETURN (DO NOT SHOW FIELD OPTION)
  143. 31110 LI = LE(N) + 1 + OFFSET / LINE NUMBER EQUALS STANDARD LINE NUMBER PLUS ONE PLUS THE OFFSET
  144. 31115 TB = CE(N) / COLUMN NUMBER
  145. 31120 GOSUB 13050 / LOCATE SUBROUTINE
  146. 31130 ON FTY(A,N) GOSUB 32000,32100,32100,32100,32200 / ON FIELD TYPE GOSUB
  147. 31140 IF KEYLIST(A,N) > 0 THEN GOSUB 33000 / IF THERE IS A KEYLIST GOSUB 33000
  148. 31145 IF SUMF(N) = 2 THEN GOSUB 39200 / IF THERE ARE SUMS THEN GOSUB 39200
  149. 31150 RETURN
  150. 32000 REM STRINGS *
  151. 32010 PRINT I$ / PRINT THE STRING
  152. 32020 RETURN
  153. 32100 PRINT I# / PRINT INTEGERS, SINGLE AND DOUBLE PRECISION
  154. 32110 RETURN
  155. 32200 REM *$$$$
  156. 32210 PRINT USING "**$########.##";I# / PRINT DOLLAR AND CENTS AMOUNT
  157. 32220 RETURN
  158. 33000 REM * PRINT KEYS
  159. 33100 IF LEK(N) = 0 THEN RETURN / IF LINE NUMBER OF KEY EQUALS 0 THEN RETURN
  160. 33110 LI = LEK(N) + 1 + OFFSET / LINE NUMBER EQUALS STANDARD LINE NUMBER PLUS 1 PLUS OFFSET
  161. 33120 REM
  162. 33130 TB = CEK(N) / COLUMN NUMBER
  163. 33140 GOSUB 13050 / LOCATE SUBROUTINE
  164. 33150 T1 = KEYLIST(A,N) / THE LIST NUMBER FOR THIS FIELD
  165. 33160 PRINT L$(T1,I#) / PRINTS OUT THE KEY FOR THIS FIELD
  166. 33170 RETURN
  167. 34000 REM * PRINT FIELDS
  168. 34050 GOSUB 30000
  169. 34100 FOR N = 1 TO NREC(A) / START LOOP, FOR EACH FIELD
  170. 34102 GOSUB 34110 / CONVERT STRINGS TO NUMBER 
  171. 34104 NEXT N
  172. 34110 ON FTY(A,N) GOSUB 34200,34300,34500,34600,34600 / ON FIELD TYPE GOSUB
  173. 34120 GOSUB 31000 / PRINT FIELD SUBROUTINE
  174. 34140 RETURN
  175. 34200 I$ =  X$(N)
  176. 34250 RETURN  
  177. 34300 I#=CVI(X$(N)) / CONVERT STRING TO NUMBER
  178. 34310 X(N) = I#
  179. 34350 RETURN
  180. 34500 I#=CVS(X$(N)) / CONVERT STRING TO NUMBER
  181. 34550 RETURN
  182. 34600 I#=CVD(X$(N)) / CONVERT STRING TO NUMBER
  183. 34610 X(N) = I#
  184. 34650 RETURN
  185. 35000 REM * PRINT OVERLAY
  186. 35010 EFLG = 0 / END OF OVERLAY FLAG = NO
  187. 35030 IF RPT = 2 THEN LPRINT "AND SUBRECORDS" ELSE LPRINT "" / IF REPEATING FIELDS THEN PRINT ...
  188. 35050 GOSUB 20400 / SET SUMS TO 0
  189. 35100 FOR T = 1 TO 18
  190. 35110 LPRINT SW$(T); / PRINT OVERLAYS
  191. 35115 GOSUB 35200  / PRINT ANY FIELDS ON THIS LINE
  192. 35117 IF EFLG = 1 THEN RETURN / IF END OF OVERLAY THEN RETURN
  193. 35120 NEXT T
  194. 35130 RETURN
  195. 35200 REM * LPRINT FIELDS
  196. 35210 FOR T2 = 1 TO NREC(A) / FOR ALL FIELDS
  197. 35220 IF LE(T2) = T THEN GOSUB 36000 / IF FIELD IS ON THIS LINE GOSUB 36000
  198. 35300 IF LEK(T2) = T THEN GOSUB 39000 / IF KEY IS ON THIS LINE GOSUB 39000
  199. 35400 NEXT T2
  200. 35410 LPRINT ""
  201. 35500 RETURN
  202. 35600 REM * LPRINT REPEATING FIELDS
  203. 35650 GOSUB 20050 / GET UPPER AND LOWER LIMITS 
  204. 35655 T3 = LSTE + 1 / FIRST REPEATING FIELD
  205. 35657 RN = RNL / RECORD NUMBER = RECORD NUMBER LOWER
  206. 35660 FOR TH = RNU TO RNL / FOR ALL RELATED RECORDS
  207. 35665 GET #1,TH / GET RECORD NUMBER
  208. 35670 FOR N = T3 TO NREC(A) / FOR ALL REPEATING FIELDS
  209. 35675 T2 = N 
  210. 35680 GOSUB 36100 / PRINT FIELDS
  211. 35685 IF SUMF(N) = 2 THEN SUM#(N) = SUM#(N) + I# / IF SUMS FOR THIS FIELD THEN ADD TO SUM
  212. 35687 IF FTY(A,N) = 2 AND LEK(N) > 0 THEN GOSUB 39000 / IF THERE ARE KEYLIST AND THEY ARE SHOWN THEN GOSUB 39000
  213. 35690 NEXT N / END LOOP ON FIELDS
  214. 35700 LPRINT ""
  215. 35710 NEXT TH / END LOOP ON RELATED RECORDS
  216. 35750 REM * LPRINT SUMS
  217. 35755 EFLG = 1 / END FLAG = YES
  218. 35760 FOR N = LSTE TO NREC(A) / FOR ALL REPEATING FIELDS
  219. 35770 IF SUMF(N) = 2 THEN GOSUB 35900 / IF SUMS ARE SPECIFIED THEN GOSUB 35900
  220. 35780 NEXT N 
  221. 35790 RETURN
  222. 35900 REM 
  223. 35905 TB = CE(N) / COLUMN 
  224. 35906 LPRINT TAB(TB); / LPRINT OVER TO THE COLUMN
  225. 35907 IF FTY(A,N) = 5 THEN GOTO 35950 / IF DOLLAR AND CENTS AMOUNT GOTO 35950
  226. 35910 LPRINT TAB(TB) SUM#(N); / PRINT SUM
  227. 35920 RETURN
  228. 35950 LPRINT USING "**$########.##";SUM#(N); / PRINT DOLLAR AND CENTS SUMS
  229. 35960 RETURN
  230. 36000 REM * LPRINT FIELDS
  231. 36050 N = T2
  232. 36060 IF RPT = 2 AND N > LSTE THEN GOTO 35600 / IF THERE ARE REPEATING FIELDS AND THIS FIELD IS ONE OF THEM THEN GOTO 35600
  233. 36100 ON FTY(A,T2) GOSUB 34200,34300,34500,34600,34600 / ON FIELD TYPE GOTO
  234. 36200 GOTO 37000
  235. 37000 REM * PRINT FIELDS
  236. 37115 TB = CE(T2) / COLUMN NUMBER
  237. 37125 LPRINT TAB(TB) ""; / LPRINT OVER TO THE COLUMN
  238. 37130 ON FTY(A,T2) GOSUB 38010,38100,38100,38100,38200 / ON FIELD TYPE GOTO
  239. 37150 RETURN
  240. 38000 REM STRINGS *
  241. 38010 LPRINT I$; PRINT STRINGS
  242. 38020 RETURN
  243. 38100 LPRINT I#; PRINT NUMBERS 
  244. 38110 RETURN
  245. 38200 REM * $$$$
  246. 38210 LPRINT USING "**$########.##";I#; / PRINT DOLLAR AND CENTS NUMBERS
  247. 38220 RETURN
  248. 39000 REM  * PRINT KEYS
  249. 39010 ON FTY(A,T2) GOSUB 34200,34300,34500,34600,34600 / ON FIELD TYPE GOTO
  250. 39090 N = T2
  251. 39130 TB = CEK(T2) / COLUMN TO PRINT KEY AT
  252. 39140 LPRINT TAB(TB) ""; / PRINT OVER TO THE COLUMN
  253. 39150 T1 = KEYLIST(A,T2) / THE LIST NUMBER
  254. 39160 LPRINT L$(T1,I#); / PRINT THE KEYLIST
  255. 39170 RETURN
  256. 39200 REM * PRINT TOTALS
  257. 39300 SUM#(N) = SUM#(N) + I# / ADD TO SUM
  258. 39310 LI = 19 / LINE 19
  259. 39320 GOSUB 13050 / LOCATE SUBROUTINE
  260. 39330 IF FTY(A,N) = 5 THEN GOTO 39600 / IF DOLLAR AND CENTS AMOUNT GOTO 39600
  261. 39400 PRINT SUM#(N);
  262. 39410 RETURN
  263. 39600 REM $$$$$
  264. 39610 PRINT USING "**$########.##";SUM#(N); / PRINT DOLLAR AND CENTS AMOUNT
  265. 39620 RETURN
  266. N);