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 / SIMTEL / CPMUG / CPMUG088.ARK / TMENTRY.BAS < prev    next >
BASIC Source File  |  1984-04-29  |  10KB  |  308 lines

  1.      rem This is the Payroll Time Card Entry Program
  2.  
  3. %INCLUDE ALL.BAS
  4.      dim n(2,20),k$(6,20)
  5.      z5$="b:tm"
  6.      z6$="b:ep"
  7.     z7$="b:epsize"
  8.      repeat$="-------------------------------"
  9.      fill$="                               "
  10.      l$="$$##,###.##":u$="##########":v$="###.#"
  11.      for z=1 to 80:delim1$=delim1$+"*":delim2$=delim2$+"=":next z
  12.      for z=1 to 80:delim3$=delim3$+"-":next z
  13.     false=0:true=-1
  14.      RESTORE
  15. 540 K$(6,1)="1 - NEW ENTRY":K$(6,2)="2 - EXAMINE EXISTING ENTRY"
  16. 550 K$(6,3)="3 - MODIFY EXISTING ENTRY"
  17. 560 K$(6,4)="4 - NOT USED"
  18. 570 K$(6,5)="5 - NOT USED":K$(6,6)="6 - CLEAR EXISTING FILE"
  19. 580 K$(6,7)="7 - NOT USED":K$(6,8)="8 - LIST FILE"
  20. 590 K$(6,9)="9 - FINISHED"
  21. 1075 K$(1,1)="EMPLOYEE #":K$(1,2)="ACCT NUMBER":K$(1,3)="NAME"
  22. 1080 K$(1,4)="PAY PERIOD #":K$(1,5)="REPORTABLE TIPS"
  23. 1085 K$(1,6)="MISC DEDUCTIONS":K$(1,7)="REGULAR HOURS"
  24. 1090 K$(1,8)="TIME & 1/2 HOURS"
  25. 1095 K$(1,9)="DOUBLE TIME HOURS"
  26. 1100 K$(1,10)="SICK TIME HOURS"
  27. 1105 K$(1,11)="HOLIDAY TIME HOURS":K$(1,12)="VACATION HOURS"
  28. 1205 K$(2,1)="1 - EMPLOYEE #":K$(2,2)="2 - ACCT NUMBER":K$(2,3)="3 - NAME"
  29. 1210 K$(2,4)="4 - PAY PERIOD #":K$(2,5)="5 - REPORTABLE TIPS"
  30. 1215 K$(2,6)="6 - MISC DEDUCTIONS":K$(2,7)="7 - REGULAR HOURS"
  31. 1220 K$(2,8)="8 - TIME & 1/2 HOURS"
  32. 1225 K$(2,9)="9 - DOUBLE TIME HOURS"
  33. 1230 K$(2,10)="10- SICK TIME HOURS":K$(2,11)="11- HOLIDAY HOURS"
  34. 1235 K$(2,12)="12- VACATION HOURS":K$(2,13)="13- NONE"
  35.      for z=1 to 12:read n(1,z):next z
  36.      data 8,10,24,4,12,12,4,4,4,4,4,4
  37.     print clear$:print
  38.  
  39. 1500    if end #1 then 20000
  40.     if end #2 then 40000
  41.     if end #3 then 6000
  42.  
  43.         open z6$ recl 512 as 1
  44.         close 1
  45.         open z7$ as 2
  46.         read #2;z2,z3,flag
  47.         close 2
  48.         open z5$ recl 128 as 3
  49.         close 3
  50.  
  51. 1537 IF Z2=1 THEN PRINT "NO PAYROLL RECORDS":CHAIN "master5"
  52.     IF flag=true then 1540
  53.      PRINT:PRINT "Is this an update to an existing set of time cards (Y/N)"
  54.      INPUT line temp$
  55.           IF left$(temp$,1)="y" OR left$(temp$,1)="Y" THEN 1567
  56. 1540 INPUT "PAY PERIOD FOR THIS PAYROLL ";N(2,4)
  57. 1544 FOR Z=5 TO 12:N(2,Z)=0:NEXT Z
  58.      if end #1 then 6000
  59. 1550 open z5$ recl 128 as 1
  60. 1552 open z6$ recl 512 as 2
  61. 1554 FOR Z=1 TO Z2-1
  62. 1556 read #2,z;n(2,1),n(2,2),n$
  63. 1558 N$=LEFT$(N$,24)
  64.      print #1,z;N(2,1),N(2,2),N$,N(2,4),N(2,5),N(2,6),\
  65.           N(2,7),N(2,8),N(2,9),N(2,10),N(2,11),N(2,12)
  66.      next z
  67.      close 1
  68.      close 2
  69.  
  70.     flag=false:open z7$ as 2:print #2;z2,z3,flag:close 2
  71.  
  72. 1567 Z4=Z2-1
  73.      IF left$(temp$,1)<>"y" AND left$(temp$,1)<>"Y" THEN Z2=1
  74.  
  75. 1600    REM
  76. 1620    PRINT CLEAR$
  77.     if z2>z3 then print "*** OUT OF RECORD SPACE ***"
  78.     print "TIME CARD ENTRY PROGRAM"
  79.         print   "-----------------------"
  80.     PRINT:PRINT "THERE ARE ";Z3;" AVAILABLE RECORDS"
  81.     PRINT "OF THESE THERE ARE:";TAB(30);(Z3-Z2)+1;" RECORDS OPEN"
  82.     PRINT                      ;TAB(30);Z2-1;" RECORDS USED"
  83.     PRINT
  84.  
  85. 1650 PRINT "THIS IS A LIST OF OPERATIONS."
  86. 1655 PRINT
  87. 1660 FOR Z=1 TO 9:PRINT K$(6,Z):NEXT Z:PRINT
  88. 1665 PRINT "INDICATE WHAT YOU WOULD LIKE TO DO BY TYPING"
  89. 1670 PRINT "THE CORRESPONDING NUMBER."
  90. 1675 PRINT
  91. 1680 INPUT Z
  92.     IF Z<1 OR Z>9 then 1620
  93. 1682 IF Z=1 THEN new$="N"
  94. 1685 ON Z GOSUB 2000,3000,4000,5000,6000,7000,8000,9000,10000
  95. 1690 FOR Z=5 TO 20:N(2,Z)=0:NEXT Z:N$=""
  96. 1700 FOR Z=1 TO 20:K$(3,Z)="":NEXT Z
  97. 1702 new$=""
  98. 1705 GOTO 1600
  99. 2000 PRINT clear$:PRINT
  100. 2002 IF Z2>Z4 THEN PRINT "NO MORE EMPLOYEES":FOR Z=1 TO 100:NEXT Z
  101. 2003 IF Z2>Z4 THEN GOTO 1600
  102. 2005 PRINT "RECORD NUMBER";Z2:PRINT
  103. 2008 open z5$ recl 128 as 1
  104.      read #1,z2;n(2,1),n(2,2),n$
  105. 2012 K$(3,3)=N$
  106. 2014 close 1
  107. 2020 PRINT "PLEASE ENTER HOURS FOR ";K$(3,3);"EMPLOYEE # ";N(2,1)
  108. 2065 FOR Z=5 TO 12
  109.     PRINT CUR$
  110. 2070 PRINT TAB(30);left$(repeat$,n(1,z))
  111.     PRINT UP$;
  112. 2075 PRINT K$(1,Z);TAB(30);
  113. 2080 INPUT N(2,Z):PRINT chr$(13)
  114.     PRINT CLEAR$
  115. 2085 NEXT Z
  116. 2100 Z1=Z2
  117. 2105 PRINT clear$:PRINT
  118. 2106 PRINT "RECORD NUMBER";Z1:PRINT
  119. 2115 FOR Z=1 TO 2
  120. 2120 PRINT K$(1,Z);TAB(30);N(2,Z)
  121. 2125 NEXT Z
  122. 2135 PRINT K$(1,3);TAB(30);K$(3,3)
  123. 2136 PRINT K$(1,4);TAB(30);:print using u$;n(2,4)
  124. 2140 FOR Z=5 TO 6
  125. 2141 PRINT K$(2,Z);TAB(30);:print using l$;n(2,z)
  126. 2142 NEXT Z
  127. 2143 FOR Z=7 TO 12
  128. 2144 PRINT K$(2,Z);TAB(30);:print using v$;n(2,z)
  129. 2145 NEXT Z
  130. 2146 PRINT K$(2,13)
  131. 2150 PRINT
  132. 2152 PRINT "IF AN ITEM IS TO BE CHANGED, TYPE THE APPROPRIATE NUMBER."
  133. 2155 PRINT:INPUT Z
  134. 2160 PRINT
  135. 2165 IF Z>12 THEN 2225
  136. 2170 IF Z<5 THEN 2105
  137. 2180 PRINT TAB(30);left$(repeat$,n(1,z))
  138.     PRINT UP$;
  139. 2185 PRINT K$(1,Z);TAB(30);
  140. 2190 INPUT N(2,Z)
  141. 2225 INPUT "ANY MORE CHANGES";line temp$
  142. 2230 IF left$(temp$,1)="y" OR left$(temp$,1)="Y" THEN 2105
  143. 2235 PRINT
  144. 2240 INPUT "IS RECORD TO BE ENTERED";line temp$
  145. 2245 PRINT
  146. 2250 IF left$(temp$,1)="y" OR left$(temp$,1)="Y" THEN 2280
  147. 2255 IF left$(temp$,1)<>"n" AND left$(temp$,1)<>"N" THEN 2235
  148. 2260 PRINT clear$:PRINT
  149. 2270 PRINT "*** RECORD NOT ENTERED ***":PRINT:PRINT
  150. 2275 FOR Z=1 TO 200:NEXT Z:RETURN
  151. 2280 open z5$ recl 128 as 1
  152.      print #1,z1;N(2,1),N(2,2),N$,N(2,4),N(2,5),N(2,6),\
  153.           N(2,7),N(2,8),N(2,9),N(2,10),N(2,11),N(2,12)
  154. 2290 close 1
  155. 2295 IF new$="N" THEN Z2=Z2+1
  156. 2300 RETURN
  157. 3000 PRINT clear$:PRINT
  158. 3005 INPUT "RECORD NUMBER";Z1
  159. 3010 IF Z1>=Z2 THEN 3000
  160. 3012 IF Z1<1 THEN RETURN
  161. 3015 open z5$ recl 128 as 1
  162.      read #1,z1;N(2,1),N(2,2),N$,N(2,4),N(2,5),N(2,6),\
  163.           N(2,7),N(2,8),N(2,9),N(2,10),N(2,11),N(2,12)
  164. 3025 close 1
  165. 3030 PRINT
  166. 3035 FOR Z=1 TO 2
  167. 3040 PRINT K$(1,Z);TAB(30);N(2,Z)
  168. 3045 NEXT Z
  169. 3055 PRINT K$(1,3);TAB(30);N$
  170. 3057 PRINT K$(1,4);TAB(30);:print using u$;n(2,4)
  171. 3060 FOR Z=5 TO 6
  172. 3062 PRINT K$(1,Z);TAB(30);:print using l$;n(2,z)
  173. 3065 NEXT Z
  174. 3066 FOR Z=7 TO 12
  175. 3067 PRINT K$(1,Z);TAB(30);:print using v$;n(2,z)
  176. 3068 NEXT Z
  177. 3070 PRINT
  178. 3075 PRINT "FOR A NEW RECORD NUMBER, TYPE N - RETURN.":PRINT
  179. 3080 PRINT "IF FINISHED, TYPE F - RETURN.":PRINT
  180. 3085 INPUT line temp$
  181. 3090 IF ucase$(temp$)="N" THEN 3000
  182. 3095 RETURN
  183. 4000 PRINT clear$:PRINT
  184. 4005 N$=""
  185. 4010 INPUT "RECORD NUMBER";Z1
  186. 4015 IF Z1<1 THEN PRINT "*** NO SUCH RECORD ***":GOTO 1620
  187. 4020 IF Z1>Z3 THEN PRINT "*** OUT OF RANGE ***":GOTO 1620
  188. 4025 IF Z1>=Z2 THEN PRINT "NO RECORD NUMBER";Z1:GOTO 1620
  189. 4030 open z5$ recl 128 as 1
  190.      read #1,z1;N(2,1),N(2,2),N$,N(2,4),N(2,5),N(2,6),\
  191.           N(2,7),N(2,8),N(2,9),N(2,10),N(2,11),N(2,12)
  192. 4040 close 1
  193. 4045 IF N(2,1)=0 THEN PRINT "*** DELETED RECORD ***":GOTO 1620
  194. 4060 K$(3,3)=N$
  195. 4065 PRINT clear$:PRINT
  196. 4070 PRINT "RECORD NUMBER";Z1:PRINT
  197. 4075 GOTO 2115
  198. 5000 print clear$:print
  199.     print "Records are created in conjunction with employee file."
  200.     print:print "Delete records from that file only."
  201.     RETURN
  202. 6000 n$="":for z=1 to 30:n$=n$+" ":next z
  203.      for z=1 to 20:n(2,z)=0:next z
  204. 6065 create z5$ recl 128 as 1
  205. 6070 FOR Z1=1 TO z3+2
  206.      print #1,z1;N(2,1),N(2,2),N$,N(2,4),N(2,5),N(2,6),\
  207.           N(2,7),N(2,8),N(2,9),N(2,10),N(2,11),N(2,12)
  208. 6085 NEXT Z1
  209. 6090 close 1
  210. 6095 PRINT clear$:PRINT
  211. 6100 PRINT "TIME ENTRY FILE CREATED AND CLEARED.":PRINT
  212. 6105 PRINT z3;"RECORDS CREATED.":PRINT
  213. 6110 PRINT "TO CONTINUE, TYPE RETURN.":INPUT line temp$
  214. 6115 GOTO 1500
  215. 7000 n$="":for z=1 to 30:n$=n$+" ":next z
  216.      for z=1 to 20:n(2,z)=0:next z
  217. 7006 INPUT "ARE YOU SURE !!! (YES OR NO)";line temp$
  218. 7007 IF ucase$(temp$)<>"YES" THEN RETURN
  219.      open z5$ recl 128 as 1
  220. 7010 FOR Z1=1 TO z3+2
  221.      print #1,z1;N(2,1),N(2,2),N$,N(2,4),N(2,5),N(2,6),\
  222.           N(2,7),N(2,8),N(2,9),N(2,10),N(2,11),N(2,12)
  223. 7025 NEXT Z1
  224. 7030 close 1
  225. 7035 PRINT clear$:PRINT
  226. 7040 PRINT "TIME ENTRY FILE CLEARED!":PRINT
  227. 7045 PRINT "TO CONTINUE, TYPE RETURN."
  228. 7050 INPUT line temp$
  229. 7055 Z2=1
  230. 7060 RETURN
  231. 8000 print clear$:print
  232.     print "Records are sorted under employee information entry only!!"
  233.     for z=1 to 100:next z
  234.     RETURN
  235. 9000 PRINT clear$:PRINT:PRINT "LISTING"
  236. 9010 P1=1:P2=1:P3=4
  237.     REM GET DATES ROUTINE
  238. 9025 lprinter
  239. 9030 open z5$ recl 128 as 1
  240. 9040 FOR Z0=1 TO (Z2/4)+1
  241. 9050 GOSUB 9500
  242. 9060 GOSUB 9100
  243. 9065 GOSUB 9300
  244. 9080 NEXT Z0
  245. 9085 GOSUB 9800
  246. 9090 RETURN
  247. 9100 FOR Z1=P2 TO P3
  248.      read #1,z1;N(2,1),N(2,2),N$,N(2,4),N(2,5),N(2,6),\
  249.           N(2,7),N(2,8),N(2,9),N(2,10),N(2,11),N(2,12)
  250. 9115 IF N(2,2)=0 THEN 9160
  251. 9120 print:print
  252. 9122 print delim2$
  253. 9125 print "EMPLOYEE #:";TAB(21);:print using u$;n(2,1);
  254.      PRINT TAB(36);"ACCOUNT #:";
  255. 9128 print TAB(51);:print using u$;n(2,2)
  256. 9130 print "NAME:";TAB(7);N$;TAB(36);"PAY PERIOD:";TAB(51);
  257.      print using v$;n(2,4)
  258. 9132 print "REPORTABLE TIPS:";TAB(21);:print using l$;n(2,5);TAB(36);
  259. 9134 print "MISC DED.:";TAB(51);:print using l$;n(2,6)
  260. 9136 print delim2$
  261. 9138 print TAB(11);"REGULAR";TAB(21);"TIME-1/2";TAB(31);"DOUBLE";
  262. 9140 print TAB(41);"SICK";TAB(51);"HOLIDAY";TAB(61);"VACATION"
  263. 9141 print delim3$
  264. 9142 print "Hours:";tab(11);
  265.      print using v$;n(2,7);tab(21);n(2,8);tab(31);n(2,9);tab(41);\
  266.      n(2,10);tab(51);n(2,11);tab(61);n(2,12)
  267. 9148 print delim1$
  268. 9160 NEXT Z1
  269. 9165 P2=P2+4:P3=P3+4
  270. 9170 RETURN
  271. 9300 print
  272.      print delim2$
  273.      print "report continues on next page"
  274.      print delim2$
  275. 9340 print chr$(12)
  276. 9350 RETURN
  277. 9500 print delim1$
  278. 9510 print
  279. 9520 print TAB(18);"PAYROLL HOURS FOR PERIOD ENDING ";d$(2)
  280. 9540 print delim1$
  281. 9550 print:print
  282. 9590 print
  283. 9600 RETURN
  284. 9800 print
  285.      print delim2$
  286.      print "End of Report"
  287.      print delim1$
  288. 9840 print chr$(12):FOR Z=1 TO 100:NEXT Z:print chr$(12)
  289. 9850 close 1
  290. 9860 console
  291. 9870 RETURN
  292. 10000 PRINT clear$:PRINT
  293. 10010 PRINT "A LISTING WILL AUTOMATICALLY BE GENERATED UNLESS YOU"
  294. 10020 PRINT "ENTER THE PROPER PASSWORD - ":INPUT line temp$
  295. 10030 IF ucase$(temp$)="NOLIST" THEN 10050
  296. 10040 GOSUB 9000
  297. 10050 CHAIN "master5"
  298. 20000 PRINT clear$:PRINT
  299. 20010 PRINT "*** PLEASE CREATE AN EMPLOYEE FILE BEFORE CONTINUING ***"
  300. 20020 FOR Z=1 TO 100:NEXT Z
  301. 20030 CHAIN "master5"
  302. 40000 print clear$:print
  303.     print "There is no 'epsize' file on the disk. Entering the"
  304.     print "Employee Information file (Item #1 on menu) will"
  305.     print "automatically create this file."
  306.     for z=1 to 500:next z
  307.     chain "master5"
  308.