home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / pssst.zip / PSMEMJOG.PRG < prev    next >
Text File  |  1986-08-18  |  10KB  |  383 lines

  1. * PSMEMJOG.PRG
  2. *
  3. * A DBASE II 16BIT COMMAND FILE to allow input or creation of
  4. * filename, and display of suspenses.  This is designed as a stand-alone
  5. * feature of the pSSSt system for automatic display after computer
  6. * bootup.
  7. *
  8. * Version 1
  9. * By LTC Denny Hugg
  10. * ANGSC/DOS Andrews AFB MD 16 Jul 1985
  11. *
  12. * Version 2  
  13. * modified by Maj Jim McMurry
  14. * ANGSC/DOSC Truax Field, WI 15 Jun 1986
  15. *
  16. CLEAR
  17. SET TALK OFF
  18. SET BELL OFF
  19. SET COLON OFF
  20. * SET ESCAPE OFF?
  21. ERASE
  22. * --- gflag = 'Y' tells psprompt to put a box around it.  It's the
  23. *     predominant mode
  24. STORE 'Y' TO gflag
  25. * --- an empty string for clearing a specific line
  26. STORE $(STR(1,81),1,80) TO gclearline
  27. STORE '      ' TO gaddstring
  28. USE PSCONFIG.MEM
  29. IF .NOT. model$('ZIO')
  30. * --- use the delete flag to determine that psconfig should return
  31.    USE PSCONFIG.MEM 
  32.    DELETE
  33.    USE
  34.    DO PSCONFIG
  35. ENDIF
  36. STORE model to gmodel
  37. STORE 1 TO line
  38. STORE 'SUSPENSE LISTING' to prompt
  39. DO PSPROMPT
  40. * --- turn cursor off for most of program
  41. ? gcuroff
  42. * --- namestring is a character field, length 6 in PSCONFIG
  43. IF namestring = '      '
  44. * --- he's configured multi-user
  45.    STORE '               ' TO mfilename
  46.    ? gcuron
  47.    @ 22,18 SAY 'Type in your last name, please ' GET mfilename
  48.    READ
  49.    @  0,0 SAY gcuroff
  50.    @ 22,0 SAY gclearline
  51.    STORE TRIM(mfilename) TO mfilename
  52. * --- create a standard length filename for the guy
  53.    IF LEN(mfilename) < 6
  54.       STORE '000000' TO msixblnks
  55.       STORE $(mfilename,1,LEN(mfilename));
  56.           + $(msixblnks,1,6-LEN(mfilename)) TO mfilename
  57.       STORE $(mfilename,1,6) TO gaddstring
  58.    ELSE
  59.       STORE $(mfilename,1,6) TO gaddstring
  60.    ENDIF
  61. ELSE
  62. * --- he's configured it for single user
  63.    STORE namestring TO gaddstring
  64. ENDIF
  65. * --- create global variables for files and indexes
  66. * --- pssst uses the current year in the filename, this way when the year
  67. * --- changes, you're sent to PSNEWGUY to do some administrative stuff
  68. STORE gaddstring + 'SP.0' + $(DATE(),7,2) TO gsusfile
  69. STORE gaddstring + 'CM.0' + $(DATE(),7,2) TO gcomplfile
  70. STORE gaddstring + 'DD.0' + $(DATE(),7,2) TO gdelfile
  71. * --- indexes named differently ... if the same as the dbf, they'll
  72. * --- eventually scramble things
  73. STORE gaddstring + 'SI' TO gsusindex
  74. STORE gaddstring + 'PI' TO gpryindex
  75. * --- create other global variables from info in PSCONFIG.MEM
  76. STORE TRIM(firstname) TO gfirstname
  77. STORE INT((LEN(gfirstname)/2)+.5) TO gflength
  78. DO CASE
  79.    CASE delays = ' '
  80.       STORE 50 TO gdelay
  81.    CASE delays = 'S'
  82.       STORE 25 TO gdelay
  83.    CASE delays = 'M'
  84.       STORE 50 TO gdelay
  85.    CASE delays = 'L'
  86.       STORE 75 TO gdelay
  87. ENDCASE
  88. * --- convert DATE() to YY/MM/DD so indexing will order them
  89. STORE VAL($(DATE(),1,2)) TO month
  90. STORE VAL($(DATE(),4,2)) TO day
  91. STORE VAL($(DATE(),7,2)) TO year
  92. STORE STR(year,2) TO gdate
  93. IF month > 9
  94.    STORE TRIM(gdate) + '/' + STR(month,2) + '/' TO gdate
  95. ELSE
  96.    STORE gdate + '/0' + STR(month,1) + '/' TO gdate
  97. ENDIF
  98. IF day > 9
  99.    STORE gdate + STR(day,2) TO gdate
  100. ELSE
  101.    STORE gdate + '0' + STR(day,1) TO gdate
  102. ENDIF
  103. * --- check that today's date is later than last date used
  104. * --- last:day is a character field, length 8 in PSCONFIG.MEM
  105. IF gdate < last:day
  106.    DO WHILE gdate < last:day
  107.       STORE gdate TO input
  108.       STORE 10 TO line 
  109.       STORE 'You Can Never Go Back ' + gfirstname TO prompt
  110.       DO PSPROMPT
  111.       @  0, 0 SAY curon
  112.       @ 22,19 SAY "You Need To Re-enter Today's Date ";
  113.               GET input PICTURE '99/99/99'
  114.       READ
  115.       @  0, 0 SAY curoff
  116.       @  9, 0 SAY gclearline
  117.       @ 10, 0 SAY gclearline
  118.       @ 11, 0 SAY gclearline
  119.       @ 22, 0 SAY gclearline
  120.       IF input >= last:day
  121.          STORE input TO gdate
  122.       ENDIF
  123.    ENDDO
  124. ENDIF
  125. REPLACE last:day WITH gdate
  126. USE
  127. IF .NOT. FILE ("&gsusfile")
  128.    STORE 10 TO line
  129.    STORE 'You Have No Suspense Files On Record' TO prompt
  130.    DO PSPROMPT
  131.    STORE ' ' TO select
  132.    @ 22,13 SAY 'Would You Like To Enter pSSSt To Create Some? (Y/N) ';
  133.            GET select PICTURE '!'
  134.    READ
  135.    IF select = 'Y'
  136.       DO PSNEWGUY.PRG
  137.       DO PSSST
  138.       @  0, 0 SAY gcuron
  139.       QUIT
  140.    ELSE
  141.       ERASE
  142.       @  0, 0 SAY gcuron
  143.       QUIT
  144.    ENDIF
  145. ENDIF
  146. * --- to determine 7 day suspense taking into account various months
  147. * --- and leap years
  148. STORE VAL($(gdate,1,2)) TO year
  149. STORE VAL($(gdate,4,2)) TO month
  150. STORE VAL($(gdate,7,2)) TO day
  151. DO CASE
  152.    CASE (month = 4 .OR. month = 6) .OR. (month = 9 .OR. month = 11)
  153.       IF day > 23
  154.          STORE day - 23 TO mday
  155.          STORE month + 1 TO mmonth
  156.          STORE year TO myear
  157.       ELSE
  158.          STORE day + 7 TO mday
  159.          STORE month TO mmonth
  160.          STORE year TO myear
  161.       ENDIF
  162.    CASE month = 2
  163.       IF INT(year/4) <> year/4 .OR. INT(year/100) <> 0
  164.          IF day > 21
  165.             STORE day - 21 TO mday
  166.             STORE 3 TO mmonth
  167.             STORE year TO myear
  168.          ELSE
  169.             STORE day + 7 TO mday
  170.             STORE 2 TO mmonth
  171.             STORE year TO myear
  172.          ENDIF
  173.       ELSE
  174.          IF day > 22
  175.             STORE day - 22 TO mday
  176.             STORE 3 TO mmonth
  177.             STORE year TO myear
  178.          ELSE
  179.             STORE day + 7 TO mday
  180.             STORE 2 TO mmonth
  181.             STORE year TO myear
  182.          ENDIF
  183.       ENDIF
  184.    OTHERWISE
  185.       IF day > 24
  186.          STORE day - 24 TO mday
  187.          STORE month + 1 TO mmonth
  188.          STORE year TO myear
  189.       ELSE
  190.          STORE day + 7 TO mday
  191.          STORE month TO mmonth
  192.          STORE year TO myear
  193.       ENDIF
  194. ENDCASE
  195. STORE STR(myear,2) + '/' TO mdate7
  196. IF mmonth > 9
  197.    STORE mdate7 + STR(mmonth,2) + '/' TO mdate7
  198. ELSE
  199.    STORE mdate7 + '0' + STR(mmonth,1) + '/' TO mdate7
  200. ENDIF
  201. IF mday > 9
  202.    STORE mdate7 + STR(mday,2) TO mdate7
  203. ELSE
  204.    STORE mdate7 + '0' + STR(mday,1) TO mdate7
  205. ENDIF
  206. @ 10, 0 SAY gclearline
  207. * --- indexing is more efficient than sorting for the variety of our tasks
  208. USE &gsusfile INDEX &gsusindex
  209. * --- IF EOF
  210. IF # = 0
  211. * --- nobody home so let's go somewhere else
  212.    USE
  213.    STORE 10 to line
  214.    STORE 'NO SUSPENSED ITEMS STORED ' + gfirstname TO prompt
  215.    DO PSPROMPT
  216.    STORE 0 TO mcount
  217.    DO WHILE mcount < gdelay
  218.       STORE mcount + 1 TO mcount
  219.    ENDDO
  220.    ERASE
  221.    ? gcuron
  222.    QUIT
  223. ENDIF
  224. * --- display suspenses
  225. STORE 20 TO mpagelen
  226. * --- find overdue stuff
  227. STORE 0 TO mpasses
  228. @ 3, 0 SAY 'DUE DATE'
  229. @ 3,10 SAY 'SUSPENSE ITEM'
  230. @ 3,66 SAY 'TASKED BY'
  231. @ 4, 0 SAY gline
  232. STORE 5 TO mline
  233. @ mline, 10 SAY 'Overdue Items:'
  234. STORE mline + 1 TO mline
  235. DO WHILE .NOT. EOF
  236.    IF mline > mpagelen
  237.       @ 22,21 SAY "- Please Strike Any Key To Continue -"
  238.       SET CONSOLE OFF
  239.       WAIT
  240.       SET CONSOLE ON
  241.       ERASE
  242.       @ 3, 0 SAY 'DUE DATE'
  243.       @ 3,10 SAY 'SUSPENSE ITEM'
  244.       @ 3,66 SAY 'TASKED BY'
  245.       @ 4, 0 SAY gline
  246.       STORE 5 TO mline
  247.    ENDIF
  248.    IF gdate > duedate
  249.       @ mline, 0 SAY duedate
  250.       @ mline,10 SAY descrip
  251.       @ mline,66 SAY origin
  252.       STORE mline + 1 TO mline
  253.       STORE mpasses + 1 TO mpasses
  254.    ENDIF
  255.    SKIP
  256. ENDDO gdate > duedate
  257. IF mpasses = 0
  258.    STORE mline - 1 TO mline
  259.    @ mline,26 SAY "None"
  260.    STORE mline + 1 TO mline
  261. ENDIF
  262. STORE mline + 1 TO mline
  263. GO TOP
  264. * --- find stuff due today
  265. STORE 0 TO mpasses
  266. @ mline, 10 SAY 'Items Due Today:'
  267. STORE mline + 1 TO mline
  268. DO WHILE .NOT. EOF
  269.    IF mline > mpagelen
  270.       @ 22,21 SAY "- Please Strike Any Key To Continue -"
  271.       SET CONSOLE OFF
  272.       WAIT
  273.       SET CONSOLE ON
  274.       ERASE
  275.       @ 3, 0 SAY 'DUE DATE'
  276.       @ 3,10 SAY 'SUSPENSE ITEM'
  277.       @ 3,66 SAY 'TASKED BY'
  278.       @ 4, 0 SAY gline
  279.       STORE 4 TO mline
  280.    ENDIF
  281.    IF gdate = duedate
  282.       @ mline, 0 SAY duedate
  283.       @ mline,10 SAY descrip
  284.       @ mline,66 SAY origin
  285.       STORE mline + 1 TO mline
  286.       STORE mpasses + 1 TO mpasses
  287.    ENDIF
  288.    SKIP
  289. ENDDO  gdate = duedate
  290. IF mpasses = 0
  291.    STORE mline - 1 TO mline
  292.    @ mline,28 SAY 'None'
  293.    STORE mline + 1 TO mline
  294. ENDIF
  295. STORE mline + 1 TO mline
  296. * --- find stuff due in next 7 days
  297. GO TOP
  298. STORE 0 TO mpasses
  299. @ mline, 10 SAY 'Items Due In The Next 7 Days:'
  300. STORE mline + 1 TO mline
  301. DO WHILE .NOT. EOF
  302.    IF mline > mpagelen
  303.       @ 22,21 SAY "- Please Strike Any Key To Continue -"
  304.       SET CONSOLE OFF
  305.       WAIT
  306.       SET CONSOLE ON
  307.       ERASE
  308.       @ 3, 0 SAY 'DUE DATE'
  309.       @ 3,10 SAY 'SUSPENSE ITEM'
  310.       @ 3,66 SAY 'TASKED BY'
  311.       @ 4, 0 SAY gline
  312.       STORE 5 TO mline
  313.    ENDIF
  314.    IF gdate < duedate .AND. duedate <= mdate7
  315.       @ mline, 0 SAY duedate
  316.       @ mline,10 SAY descrip
  317.       @ mline,66 SAY origin
  318.       STORE mline + 1 TO mline
  319.       STORE mpasses + 1 TO mpasses
  320.    ENDIF
  321.    SKIP
  322. ENDDO next 7 days
  323. IF mpasses = 0
  324.    STORE mline - 1 TO mline
  325.    @ mline,41 SAY 'None'
  326.    STORE mline + 1 TO mline
  327. ENDIF
  328. STORE mline + 1 TO mline
  329. STORE 0 TO mpasses
  330. @ mline, 10 SAY 'Other Suspenses Facing You:'
  331. STORE mline + 1 TO mline
  332. GO TOP
  333. * --- find stuff due after next week
  334. DO WHILE .NOT. EOF
  335.    IF mline > mpagelen
  336.       @ 22,21 SAY "- Please Strike Any Key To Continue -"
  337.       SET CONSOLE OFF
  338.       WAIT
  339.       SET CONSOLE ON
  340.       ERASE
  341.       @ 3, 0 SAY 'DUE DATE'
  342.       @ 3,10 SAY 'SUSPENSE ITEM'
  343.       @ 3,66 SAY 'TASKED BY'
  344.       @ 4, 0 SAY gline
  345.       STORE 5 TO mline
  346.    ENDIF
  347.    IF duedate > mdate7
  348.       @ mline, 0 SAY duedate
  349.       @ mline,10 SAY descrip
  350.       @ mline,66 SAY origin
  351.       STORE mline + 1 TO mline 
  352.       STORE mpasses + 1 TO mpasses
  353.    ENDIF
  354.    SKIP
  355. ENDDO suspenses beyond a week
  356. IF mpasses = 0
  357.    STORE mline - 1 TO mline
  358.    @ mline,39 SAY 'None'
  359.    STORE mline + 1 TO mline
  360. ENDIF
  361. USE
  362. @ 22,21 SAY "- Please Strike Any Key To Continue -"
  363. SET CONSOLE OFF
  364. WAIT
  365. SET CONSOLE ON
  366. @ 22, 0 SAY gclearline
  367. STORE ' ' TO select
  368. @ 22,14 SAY 'Do You Want To Enter pSSSt For Data Update? (Y/N) ';
  369.         GET select PICTURE '!'
  370. READ
  371. IF select = 'Y'
  372.    RELEASE ALL EXCEPT g*
  373.    DO PSSST
  374. ELSE
  375.    ERASE
  376.    @ 0, 0 SAY gcuron
  377.    QUIT
  378. ENDIF
  379. * EOF PSMEMJOG.PRG
  380.  .AND. duedate <= mdate7
  381.       @ mline, 0 SAY duedate
  382.       @ mline,10 SAY descrip
  383.       @ mline,66 SAY ori