home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / maint.zip / MAIN.PRG < prev    next >
Text File  |  1988-04-02  |  14KB  |  636 lines

  1. *************************************************=-
  2. * Program..: MAIN.PRG
  3. * Author...: Gary Sears
  4. * Date.....: 03/13/88
  5. * Notice...: Copyright (c) 1988, Gary Sears, All Rights Reserved
  6. * Notes....: 
  7. * Reserved.: selectnum
  8. *
  9.  
  10. SET PRINTER TO LPT1:
  11. SET DELIM OFF
  12. SET ESCAPE ON
  13. SET TALK OFF
  14. SET BELL OFF
  15. SET STATUS ON
  16. SET CONFIRM OFF
  17. MSG = "It's "+CDOW(DATE())+" the "+str(DAY(DATE()),2)+"th"
  18. SET ODOMETER TO 10
  19. SET PROC TO MAIN
  20.  
  21. PUBLIC DIMENSION BTIME(16), BTASK(16), BTAG(16), BMAN(16), BSHORT(16), BDATE(16), PTRCODE
  22. PTRCODE=' '
  23.  
  24.  
  25. DO WHILE .T.
  26.  
  27.    * ---Display menu options, centered on the screen.
  28.    *    draw menu border and print heading
  29.    CLEAR
  30.    SET MESSAGE TO  MSG
  31.  
  32.    @ 2, 0 TO 15,79 DOUBLE
  33.  
  34.    @ 3,10 SAY [P R E V E N T A T I V E   M A I N T E N A N C E   S Y S T E M]
  35.    @ 4,1 TO 4,78 DOUBLE
  36.    * ---display detail lines
  37.    @  6,24 SAY [1. enter daily data]
  38.    @  7,24 SAY [2. create pm report]
  39.    @  8,24 SAY [3. print daily ledger entries]
  40.    @  9,24 SAY [4. print & reset employee hours]
  41.    @ 10,24 SAY [5. monthly close of machine stats]
  42.    @ 11,24 SAY [6. change a database - add employees, machines, etc.]
  43.    @ 13, 24 SAY '0. EXIT'
  44.    STORE 0 TO selectnum
  45.    @ 15,33 SAY " select     "
  46.    @ 15,42 GET selectnum PICTURE "9" RANGE 0,7
  47.    READ
  48.    CLEAR
  49.  
  50.    DO CASE
  51.       CASE selectnum = 0
  52.          QUIT
  53.  
  54.       CASE selectnum = 1
  55.       *  DO enter daily data                                                      
  56.          do daily                                                              
  57.          SET FORMAT TO 
  58.  
  59.       CASE selectnum = 2
  60.       *  DO create pm report
  61.          do pm
  62.  
  63.       CASE selectnum = 3
  64.       *  DO print daily ledger entries
  65.          do ledger
  66.  
  67.       CASE selectnum = 4
  68.       *  DO print & reset employee hours
  69.          do hours
  70.  
  71.        CASE selectnum = 5
  72.        * DO end of machine month
  73.          do eom
  74.  
  75.       CASE selectnum = 6
  76.     *  DO use bid database
  77.          do futz
  78.  
  79.       CASE selectnum = 7
  80.     * DO ESCAPE TO DBASE
  81.         RETURN
  82.  
  83. ENDCASE
  84.  
  85. ENDDO T
  86. RETURN
  87.  
  88. ************************************************=-
  89.  
  90. * Program..: DAILY.PRG
  91. * Author...: Gary Sears
  92. * Date.....: 03/18/1988
  93. * Notice...: Copyright (c) 1988, Gary Sears, All Rights Reserved
  94. * Notes....:
  95. * Reserved.:
  96. *
  97. PROC DAILY
  98. SELE 1
  99. USE MACHINE INDE MSHORT
  100. SELE 2
  101. USE JOBS INDE JDATE
  102. SELE 3
  103. USE MAN INDE MNAME 
  104. SELE 4
  105. USE EMP INDE ENAME
  106. SELE 1
  107.  
  108. ANOTHER='Y'
  109. DO WHILE UPPER(ANOTHER)='Y'
  110. CLEAR
  111. MMAN=SPACE(20)
  112. MSHORT=SPACE(8)
  113. @  0, 32  SAY "DAILY SHEET"
  114. @  1, 1   SAY "WORKER " GET MMAN 
  115. @  1, 59  SAY " MACHINE" GET MSHORT
  116. READ
  117. SELE 4
  118. MMAN = RTRIM(MMAN)
  119. FIND &MMAN 
  120. DO WHILE .NOT. FOUND()
  121.  CLEAR
  122.  X= ' '
  123.  @ 10,10 SAY "THAT NAME ISN'T IN THE EMPLOYEE LIST AS GIVEN. PLEASE CHECK..."
  124.  @ 13,10 SAY "PUT AN 'X' IN TO ABANDON " GET X
  125.  READ
  126.  IF UPPER(X) = 'X'
  127.   RETURN
  128.  ENDIF
  129. MMAN=STUFF(SPACE(20),1, LEN(MMAN),MMAN)
  130.  @ 20,20 SAY MMAN 
  131.  @ 21,20 GET MMAN 
  132.  READ
  133.  @ 19,0 CLEAR
  134.  MMAN = RTRIM(MMAN)
  135.  FIND &MMAN 
  136.  CLEAR
  137. ENDDO
  138. SELE 1
  139. MSHORT = RTRIM(MSHORT)
  140. FIND &MSHORT
  141. DO WHILE .NOT. FOUND()
  142.  CLEAR
  143.  X= ' '
  144.  @ 10,10 SAY "THAT NAME ISN'T IN THE MACHINE LIST AS GIVEN. PLEASE CHECK..."
  145.  @ 13,10 SAY "PUT AN 'X' IN TO ABANDON " GET X
  146.  READ
  147.  IF UPPER(X) = 'X'
  148.   RETURN
  149.  ENDIF
  150. MSHORT=STUFF(SPACE(20),LEN(MSHORT),MSHORT)
  151.  @ 20,20 SAY MSHORT
  152.  @ 21,20 GET MSHORT
  153.  READ
  154.  @ 19,0 CLEAR
  155.  MSHORT = RTRIM(MSHORT)
  156.  FIND &MSHORT
  157.  CLEAR
  158. ENDDO
  159.  
  160. MDATE = DATE()
  161. @  2, 59  SAY "DATE"
  162. @  2, 68  GET  MDATE
  163. READ
  164. REPLACE MACHINE->DATE WITH MDATE
  165. REPLACE MAN->DATE WITH MDATE
  166. I=1
  167.  
  168. DO WHILE I < 17
  169.  BTIME(I)=0
  170.  BTASK(I)=SPACE(40)
  171.  BTAG(I)=99999
  172.  BMAN(I)=MMAN 
  173.  BSHORT(I)=MSHORT
  174.  BDATE(I)=MDATE
  175.  I=I+1
  176. ENDDO
  177.  
  178. @  3, 12  SAY  "JOB CODE"
  179. @  3, 22  SAY  "WHAT WAS DONE"
  180. @  3, 63  SAY  "TIME IT TOOK"
  181. SET MESSAGE TO "Use PgDn to leave this screen fast..."
  182. @  4, 12  GET  BTAG(1) PICT "999999"
  183. @  4, 22  GET  BTASK(1)
  184. @  4, 66  GET  BTIME(1) PICT "999.9"
  185. @  5, 12  GET  BTAG(2) PICT "999999"
  186. @  5, 22  GET  BTASK(2)
  187. @  5, 66  GET  BTIME(2) PICT "999.9"
  188. @  6, 12  GET  BTAG(3) PICT "999999"
  189. @  6, 22  GET  BTASK(3)
  190. @  6, 66  GET  BTIME(3) PICT "999.9"
  191. @  7, 12  GET  BTAG(4) PICT "999999"
  192. @  7, 22  GET  BTASK(4)
  193. @  7, 66  GET  BTIME(4) PICT "999.9"
  194. @  8, 12  GET  BTAG(5) PICT "999999"
  195. @  8, 22  GET  BTASK(5)
  196. @  8, 66  GET  BTIME(5) PICT "999.9"
  197. @  9, 12  GET  BTAG(6) PICT "999999"
  198. @  9, 22  GET  BTASK(6)
  199. @  9, 66  GET  BTIME(6) PICT "999.9"
  200. @ 10, 12  GET  BTAG(7) PICT "999999"
  201. @ 10, 22  GET  BTASK(7)
  202. @ 10, 66  GET  BTIME(7) PICT "999.9"
  203. @ 11, 12  GET  BTAG(8) PICT "999999"
  204. @ 11, 22  GET  BTASK(8)
  205. @ 11, 66  GET  BTIME(8) PICT "999.9"
  206. @ 12, 12  GET  BTAG(9) PICT "999999"
  207. @ 12, 22  GET  BTASK(9)
  208. @ 12, 66  GET  BTIME(9) PICT "999.9"
  209. @ 13, 12  GET  BTAG(10) PICT "999999"
  210. @ 13, 22  GET  BTASK(10)
  211. @ 13, 66  GET  BTIME(10) PICT "999.9"
  212. @ 14, 12  GET  BTAG(11) PICT "999999"
  213. @ 14, 22  GET  BTASK(11)
  214. @ 14, 66  GET  BTIME(11) PICT "999.9"
  215. @ 15, 12  GET  BTAG(12) PICT "999999"
  216. @ 15, 22  GET  BTASK(12)
  217. @ 15, 66  GET  BTIME(12) PICT "999.9"
  218. @ 16, 12  GET  BTAG(13) PICT "999999"
  219. @ 16, 22  GET  BTASK(13)
  220. @ 16, 66  GET  BTIME(13) PICT "999.9"
  221. @ 17, 12  GET  BTAG(14) PICT "999999"
  222. @ 17, 22  GET  BTASK(14)
  223. @ 17, 66  GET  BTIME(14) PICT "999.9"
  224. @ 18, 12  GET  BTAG(15) PICT "999999"
  225. @ 18, 22  GET  BTASK(15)
  226. @ 18, 66  GET  BTIME(15) PICT "999.9"
  227. @ 19, 12  GET  BTAG(16) PICT "999999"
  228. @ 19, 22  GET  BTASK(16)
  229. @ 19, 66  GET  BTIME(16) PICT "999.9"
  230. READ
  231.  
  232. SELE 1
  233. CLEAR
  234. YNH=.F.
  235. YNP=.F.
  236.  
  237. SET MESSAGE TO "Use CTL-PgUp to get into and out of MEMO fields."
  238. @  0,  0  TO 21, 80    DOUBLE
  239. @  1,  1  SAY "FUEL"
  240. @  1, 30  SAY "FUEL M.T.D"+STR(MACHINE->FUEL,6,1)
  241. MFUEL=MACHINE->FUEL
  242. @  1, 12  GET  MFUEL
  243. @  3,  1  SAY "COOLANT"
  244. @  3, 12  GET  COOLANT1
  245. @  4,  1  SAY "COOLANT2"
  246. @  4, 12  GET  COOLANT2
  247. @  7,  1  SAY "GREASE: (LOTS OR LITTLE)"
  248. @  7, 26  GET  GREASE
  249. @  9,  1  SAY "NOTES:  SEALS, TIRES, CYLINDERS, WHATEVER:"
  250. @ 11,  1  GET  NOTES
  251. @ 13,  1  SAY "EDIT PARTS    EDIT  HISTORY    ODOMETER/HOURS"
  252. @ 14,  1  GET  YNP
  253. @ 14, 16  GET  YNH
  254. @ 14, 32  GET  OD_HRS
  255. MOIL1 = MACHINE->OIL1
  256. MOIL2 = MACHINE->OIL2
  257. @ 16, 30  SAY "OIL-1 M.T.D. "+STR(MACHINE->OIL1,5,1)
  258. @ 17, 30  SAY "OIL-2 M.T.D. "+STR(MACHINE->OIL2,5,1)
  259. @ 16,  1  SAY "OIL-1" GET MOIL1
  260. @ 17,  1  SAY "OIL-2" GET MOIL2
  261. MT1 = MACHINE->TRANS1
  262. MT2 = MACHINE->TRANS2
  263. @ 19, 30  SAY "TRANS-1 M.T.D. "+STR(MACHINE->TRANS1,5,1)
  264. @ 20, 30  SAY "TRANS-2 M.T.D. "+STR(MACHINE->TRANS2,5,1)
  265. @ 19,  1  SAY "TRANS-1" GET MT1
  266. @ 20,  1  SAY "TRANS-2" GET MT2
  267.  
  268. READ
  269. REPL MACHINE->FUEL WITH MACHINE->FUEL + MFUEL
  270. REPL MACHINE->OIL1 WITH MACHINE->OIL1+MOIL1, MACHINE->OIL2 WITH MACHINE->OIL2+MOIL2
  271. REPL MACHINE->TRANS1 WITH MACHINE->TRANS1+MT1, MACHINE->TRANS2 WITH MACHINE->TRANS2+MT2
  272. IF YNH
  273.  SET MESSAGE TO "History.. use Ctl-PgUp to get in and out."
  274.  EDIT FIELD HISTORY
  275. ENDIF
  276. IF YNP
  277.  SET MESSAGE TO "Parts.. use Ctl-PgUp to get in and out."
  278.  EDIT FIELD PARTS
  279. ENDIF
  280. SELE 2            && JOBS
  281. I=1
  282. SET MESSAGE TO  "updating job sheet records..."
  283. DO WHILE I < 17
  284. IF BTIME(I) > 0
  285.  APPE BLANK
  286.  REPL TIME WITH BTIME(I), TASK WITH BTASK(I), TAG WITH BTAG(I)
  287.  REPL MAN WITH BMAN(I), MACHINE WITH BSHORT(I), DATE WITH BDATE(I)
  288.  
  289.  SELE 3
  290.  REPL HOURS WITH HOURS + BTIME(I)
  291.  SELE 2
  292.  
  293. ELSE
  294.  EXIT
  295. ENDIF
  296. I=I+1
  297. ENDDO
  298.  
  299. SET MESSAGE TO
  300. @ 20,55 SAY "ADD ANOTHER? (Y/N) " GET ANOTHER PICT 'X'
  301. READ
  302. ENDDO
  303. SELE 4
  304. USE
  305. SELE 3
  306. USE
  307. SELE 2
  308. USE
  309. SELE 1
  310. USE
  311. RETURN
  312. ************************************************=-
  313.  
  314. * Program..: PM.PRG
  315. * Author...: Gary Sears
  316. * Date.....: 03/18/1988
  317. * Notice...: Copyright (c) 1988, Gary Sears, All Rights Reserved
  318. * Notes....:
  319. * Reserved.:
  320. *
  321. PROC PM
  322. SELE 1
  323. USE PM INDE PMSHORT
  324. SELE 2
  325. USE MACHINE INDE MSHORT
  326. SELE 3
  327. USE PMRPT
  328. SET SAFETY OFF
  329. ZAP
  330. SET SAFETY ON
  331. SELE 2
  332. GO TOP
  333.  
  334. DO WHILE .NOT. EOF()
  335. MCOMP=SHORT
  336. MMETER = OD_HRS
  337. MCOMMENT=NOTES
  338. SELE 1
  339. FIND &MCOMP
  340. IF EOF()
  341.  SELE 2
  342.  SKIP
  343.  LOOP
  344. ENDIF
  345.  
  346. DO WHILE SHORT=MCOMP
  347. IF FREQ+LASTPM > MMETER
  348.  SKIP
  349.  LOOP
  350. ENDIF
  351. MS=SHORT
  352. MT=TASK
  353. MF=FREQ
  354. ML=LASTPM
  355. SELE 3
  356. APPE BLANK
  357. REPL SHORT WITH MS, TASK WITH MT, FREQ WITH MF, LASTPM WITH ML, NOTES WITH MCOMMENT
  358. SELE 1
  359. REPL LASTPM WITH MACHINE->OD_HRS
  360. SKIP
  361. ENDDO
  362.  
  363. SELE 2
  364. SKIP
  365. ENDDO
  366.  
  367. *
  368. * PRINT REPORT
  369. *
  370.  
  371. SELE 1
  372. USE
  373. SELE 2
  374. USE
  375. SELE 3
  376. GO TOP
  377. SET PRINT ON
  378. ? PTRCODE
  379. ? "PM DUTY SHEET    "+DTOC(DATE())
  380. ?
  381. ?
  382. ? "MACHINE          FREQUENCY           LAST PM"
  383. ? "TASK"
  384. ?
  385. DO WHILE .NOT. EOF()
  386. ? SHORT, SPACE(8), FREQ, SPACE(8), LASTPM
  387. ? TASK
  388. ? NOTES
  389. ?
  390. SKIP
  391. ENDDO
  392. SET PRINT OFF
  393. EJECT
  394. USE
  395. RETURN
  396. ************************************************=-
  397.  
  398. * Program..: LEDGER.PRG
  399. * Author...: Gary Sears
  400. * Date.....: 03/13/88
  401. * Notice...: Copyright (c) 1988, Gary Sears, All Rights Reserved
  402. * Notes....: 
  403. * Reserved.: 
  404. *
  405. PROC LEDGER
  406. SELE 1
  407. USE JOBS
  408. SELE 2 USE BID INDE BIDNO
  409. SELE 1
  410. STDATE=DATE()
  411. @ 5,5 SAY "WHAT DATE TO START? "GET STDATE
  412. READ
  413. CLEAR
  414. INDE ON DTOC(DATE) TO JDATE
  415. SDATE=DTOC(STDATE)
  416. FIND &SDATE
  417. IF EOF()
  418.  GO TOP
  419. ENDIF
  420. SET PRINT ON
  421. ? "LEDGER DATA DUMP FOR "+DTOC(STDATE)+ " TO "+DTOC(DATE())
  422. ? " JOB #        MAN               MACHINE"
  423. ? " TIME        TASK"
  424. ?
  425. DO WHILE .NOT. EOF()
  426. ?
  427. ? STR(TAG,6),SPACE(5),MAN,MACHINE
  428. ? STR(TIME,5,1),TASK
  429. SKIP
  430. ENDDO
  431. SET PRINT OFF
  432. EJECT
  433. CLEAR
  434. YN='Y'
  435. @ 20,20 SAY "SHOULD I CLEAR THE DATABASE NOW? " GET YN
  436. READ
  437. IF UPPER(YN) = 'Y'
  438. SET SAFETY OFF
  439. ZAP
  440. SET SAFETY ON
  441. ENDIF
  442. USE
  443. RETURN
  444. ************************************************=-
  445.  
  446. * Program..: HOURS.PRG
  447. * Author...: Gary Sears
  448. * Date.....: 03/13/88
  449. * Notice...: Copyright (c) 1988, Gary Sears, All Rights Reserved
  450. * Notes....: 
  451. * Reserved.: 
  452. *
  453. PROC HOURS
  454. USE MAN INDE MNAME
  455. GO TOP
  456. SET PRINT ON
  457. ? PTRCODE
  458. ? " HOURS PER MAN SCHEDULE AS OF ",DTOC(DATE())
  459. ?
  460. ? "DATE       HOURS       NAME"
  461. ?
  462. DO WHILE .NOT. EOF()
  463. ? DTOC(DATE),STR(HOURS,5,1),NAME
  464. ?
  465. SKIP
  466. ENDDO
  467. SET PRINT OFF
  468. EJECT
  469.  
  470. REPLACE ALL HOURS WITH 0
  471. RETURN
  472. ************************************************=-
  473.  
  474. * Program..: EOM.PRG
  475. * Author...: Gary Sears
  476. * Date.....: 03/13/88
  477. * Notice...: Copyright (c) 1988, Gary Sears, All Rights Reserved
  478. * Notes....: 
  479. * Reserved.: selectnum
  480. *
  481. PROC EOM
  482. USE MACHINE INDE MSHORT
  483. SET PRINT ON
  484. ? SPACE(20)+"END OF MONTH P.M. STATUS REPORT"
  485. ?
  486. ?
  487. ? PTRCODE
  488. ? "SHORT    WHERE    FUEL  OIL1  OIL1  TRANS1 TRANS2 HYDR GREASE  METER       DATE"
  489. ? "      LAST MO.    FUEL  OIL1  OIL2  TRANS1 TRANS2 HYDR GREASE  METER       DATE"
  490. DO WHILE .NOT. EOF()
  491. ?
  492. ? SHORT,WHERE,STR(FUEL,5),STR(OIL1,5),STR(OIL2,5),STR(TRANS1,5),STR(TRANS2,5),STR(HYDRAULIC,5),GREASE,STR(OD_HRS,11),DTOC(DATE())
  493. ? SPACE(15),STR(FUELLM,5),STR(OIL1LM,5),STR(OIL2LM,5),STR(TRANS1LM,5),STR(TRANS2LM,5),STR(HYDRAULICL,5),GREASELM,STR(METERLM,11),DTOC(DATE)
  494. ?
  495. SKIP
  496. ENDDO
  497. SET PRINT OFF
  498. EJECT
  499. SET MESSAGE TO "now updating the records in MACHINE."
  500. REPL FUELLM WITH FUEL, OIL1LM WITH OIL1, OIL2LM WITH OIL2,TRANS1LM WITH TRANS1
  501. REPL TRANS2LM WITH TRANS2, HYDRAULICLM WITH HYDRAULIC, GREASELM WITH GREASE
  502. REPL METERLM WITH METER, DATE WITH DATE()
  503. REPL FUEL WITH 0, OIL1 WITH 0, OIL2 WITH 0, TRANS1 WITH 0, TRANS2 WITH 0
  504. REPL HYDRAULIC WITH 0
  505. USE
  506. RETURN
  507. ************************************************=-
  508.  
  509. * Program..: FUTZ.PRG
  510. * Author...: Gary Sears
  511. * Date.....: 03/18/1988
  512. * Notice...: Copyright (c) 1988, Gary Sears, All Rights Reserved
  513. * Notes....:
  514. * Reserved.:
  515. *
  516. PROC FUTZ
  517. DB = SPACE(8)
  518. @ 1,1 TO 21,77 DOUBLE
  519. @ 5,20 SAY "THESE ARE THE DATABASES TO CHOOSE FROM:"
  520. @ 9,5 SAY "MACHINE            machine stats "
  521. @ 11,5 SAY "EMP               employee names, rates and hours "
  522. @ 13,5 SAY "JOBS              daily job description and time specs "
  523. @ 15,5 SAY "PM                prev. maint. schedules and intervals "
  524. @ 17,5 SAY "BID               client bid data "
  525. @ 20,20 SAY "which database to use? " GET DB
  526. READ
  527.  
  528. DB = UPPER(DB)
  529. DO CASE
  530.  CASE DB = 'MACHINE'
  531.    USE MACHINE INDE MSHORT
  532.    GETIT = SPACE(8)
  533.  CASE DB = 'EMP'
  534.    USE EMP INDE ENAME
  535.    GETIT = SPACE(20)
  536.  CASE DB = 'JOBS'
  537.    USE JOBS INDE JDATE
  538.    GETIT = DATE()
  539.  CASE DB = 'PM'
  540.    USE PM INDE PMSHORT
  541.    GETIT = SPACE(8)
  542.  CASE DB = 'BID'
  543.    USE BID INDE BIDNO
  544.    GETIT = SPACE(6)
  545.  OTHERWISE
  546.    RETURN
  547. ENDCASE
  548.  
  549. FN = 0
  550. YN = 'Y'
  551. CLEAR
  552. @ 1,1 TO 22,77 DOUBLE
  553. @ 5,5 SAY "THESE ARE THE FUNCTIONS:"
  554. @ 9,5 SAY "1.  EXAMINE this allows you to do random changes."
  555. @ 11,5 SAY "2.  ADD     add new records.  (don't leave empties!)"
  556. @ 13,5 say "3.  DELETE  erase records. "
  557. @ 15,5 say "4.  PRINT   dump records to the printer."
  558. @ 17,5 SAY "5.  REINDEX makes things sane when they go whacko."
  559. @ 19,5 SAY "0.  EXIT"
  560. @ 21,5 say "which function to do? " GET FN PICT "9" RANGE 0,5
  561. READ
  562.  
  563. DO CASE
  564.  CASE FN = 1
  565.    CLEAR
  566.    @ 18,20 SAY "THIS IS THE BROWSE MODE.  USE CTL-ARROW KEYS TO MOVE"
  567.    @ 19,20 SAY "AROUND THE DATABASE. USE CTL-U TO DELETE RECORDS."
  568.    @ 20,20 SAY " DO YOU WANT TO  FIND AN ENTRY FIRST?" GET YN
  569.    READ
  570.    IF UPPER(YN) = 'Y'
  571.       @ 21,10 SAY "FIND THIS:" GET GETIT
  572.       READ
  573.       IF DB='JOBS'
  574.         GETME = DTOC(GETIT)
  575.         FIND &GETME
  576.       ELSE
  577.         FIND &GETIT
  578.       ENDIF
  579.    ENDIF
  580.    BROWSE
  581.    PACK
  582.    REIN
  583.  CASE FN = 3
  584.    CLEAR
  585.    @ 18,20 SAY "THIS IS THE BROWSE MODE.  USE CTL-ARROW KEYS TO MOVE"
  586.    @ 19,20 SAY "AROUND THE DATABASE. USE CTL-U TO DELETE RECORDS."
  587.    @ 20,20 SAY " DO YOU WANT TO  FIND AN ENTRY FIRST?" GET YN
  588.    READ
  589.    IF UPPER(YN) = 'Y'
  590.       @ 21,10 SAY "FIND THIS:" GET GETIT
  591.       READ
  592.       FIND &GETIT
  593.    ENDIF
  594.    BROWSE
  595.    PACK
  596.    REIN
  597.  CASE FN = 2
  598.    APPE
  599.  CASE FN = 4
  600.    LIST TO PRINT OFF
  601.  CASE FN = 5
  602.    USE
  603.    CLEAR
  604.    SET SAFE OFF
  605.    SET TALK ON
  606.    USE BID
  607.    DELETE FOR LEN(TRIM(CLIENT))=0
  608.    PACK
  609.    INDEX ON BIDNO TO BIDNO
  610.    USE PM
  611.    DELETE FOR LEN(TRIM(TASK))=0
  612.    PACK
  613.    INDEX ON SHORT TO PMSHORT
  614.    USE JOBS
  615.    DELE FOR LEN(TRIM(TASK))=0
  616.    PACK
  617.    INDE ON DTOC(DATE) TO JDATE
  618.    USE EMP
  619.    DELETE FOR LEN(TRIM(NAME))=0
  620.    PACK
  621.    INDE ON NAME TO ENAME
  622.    REIN   
  623. USE MACHINE
  624.    DELETE FOR LEN(TRIM(NAME))=0 .OR. LEN(TRIM(TYPE))=0
  625.    PACK
  626.    INDE ON NAME TO MNAME
  627.    INDE ON SHORT TO MSHORT
  628.    SET TALK OFF
  629.    SET SAFE ON
  630.  CASE FN = 0
  631.    RETURN
  632. ENDCASE
  633. USE
  634. RETURN
  635. ************************************************=-
  636.