home *** CD-ROM | disk | FTP | other *** search
/ Media Share 13 / mediashare_13.zip / mediashare_13 / ZIPPED / NETWORK / GP25.ZIP / QMGR.PRG < prev    next >
Text File  |  1993-08-28  |  5KB  |  186 lines

  1. *  The purpose of this procedure is to provide a simple queue
  2. *  management program for FoxPro programs.
  3.  
  4. private LastRec, Outer, Inner, Counter, LastDel, LastTalk, QCount, ;
  5.    WkArea, lHadLib, QList, QJobs, LastEscape, cSafety
  6.  
  7. external array qlist
  8. external array qjobs
  9. EXTERNAL ARRAY aServers   
  10. *  Save Current Machine State
  11. if set('TALK') = 'ON'
  12.     set talk off
  13.     LastTalk = 'ON'
  14. else
  15.     LastTalk = 'OFF'
  16. endif
  17. cSafety = set('SAFETY')
  18. LastEscape = set("ESCAPE")
  19. LastDel = set('DELETED')
  20. if not 'GPLIB' $ set('LIBRARY')
  21.     lHadLib=.f.
  22.     set library to gplib additive
  23. else
  24.     lHadLib=.t.
  25. endif
  26. push key clear
  27. WkArea = select()
  28. *  Set up new environment
  29. set deleted on
  30. set safety off
  31. set escape off
  32.  
  33. define window BrowWin from 1, 0 to srows() - 10, scols() - 2 ;
  34.     color scheme 10 title 'JobList' shadow system
  35.  
  36. define window Instr from srows() - 8, 0 to srows() - 2, scols() - 2 ;
  37.     double title ' Queue Mgr Instructions ' ;
  38.     shadow footer ' ESC to Exit ' ;
  39.     color w +/ rb, w +/ bg, w +/ rb, w +/ rb, w +/ rb, w +/ B, gr +/ rb, N +/ N, w +/ rb, w / rb, +
  40.  
  41. activate window instr noshow
  42. ?
  43. ?padc('Press SPACE to move a job, DEL to delete a job.', wcols() - 1)
  44. ?
  45. ?padc('Wait 10 Seconds, or Click right mouse button to refresh display.', wcols() - 1)
  46. ?
  47. show window instr
  48. activate screen
  49. create cursor QUEUES (NAME C(47), s_name C(47))
  50. LastRec = 1
  51. *  Get a list of queues for all servers we're on
  52. nServers=N_Servers('aServers')
  53. for Outer = 1 to alen(aServers,1)
  54.         qcount = N_getqlist('qlist', '*', aServers[Outer])
  55.         for inner = 1 to qcount
  56.             append blank
  57.             replace name with qlist[inner, 1], s_name with aServers[outer]
  58.         endfor
  59. endfor
  60. create cursor joblist ( UserName C(47), Queue C(47), desc C(50), status C(12), JobNumber N(5, 0), size N(10), ServerName C(47))
  61. *  Get a list of all jobs in all queues
  62. set sysmenu off
  63. keyboard ' ' plain
  64. =inkey(0)
  65. do while lastkey() <> 27
  66.     select queues
  67.     scan
  68.         JobCount = N_LstQJobs(Queues.Name,'qjobs', S_Name)
  69.         select joblist
  70.         for Counter = 1 to JobCount
  71.             append blank
  72.             replace UserName with qjobs[counter, 4], desc with qjobs[counter, 3], ;
  73.                status with qjobs[counter, 5], JobNumber with qjobs[counter, 1], ;
  74.                Queue with queues.name, size with qjobs[counter, 2], ServerName with queues.s_name
  75.         endfor
  76.     endscan
  77.     select joblist
  78.     if LastRec <= reccount()
  79.         goto LastRec
  80.     else
  81.         go top
  82.     endif
  83.     *  Set up for browse of jobs
  84.     on key label SPACEBAR do MoveJob with joblist.queue, joblist.JobNumber, joblist.ServerName
  85.     on key label DEL do DelJob with joblist.queue, joblist.JobNumber, joblist.ServerName
  86.     on key label rightmouse keyboard chr(23)
  87.     browse fields UserName :H = 'User Name' :15, ;
  88.        Queue :H = 'Queue' :16, ;
  89.        desc :H = 'Description' :12, ;
  90.        status :H = 'Status' :12, ;
  91.        JobNumber :H = 'Job' :5, ;
  92.        size :H = 'Size' :10 ;
  93.        window browwin save noclear nomenu ;
  94.        nomodify color scheme 10 timeout 10
  95.     on key label del
  96.     on key label rightmouse
  97.     on key label spacebar
  98.     LastRec = recno()
  99.     zap
  100. enddo
  101. set sysmenu automatic
  102. *  Restore Machine State
  103. select Queues
  104. use
  105. select JobList
  106. use
  107. deactivate window instr
  108. release window BrowWin
  109. release window instr
  110. select (WkArea)
  111.  
  112. if not lHadLib
  113.     release library gplib
  114. endif
  115.  
  116. set talk &LastTalk
  117. set deleted &LastDel
  118. set escape &LastEscape
  119. set safety &cSafety
  120. pop key
  121. clear && Necessary to counteract Browse NOCLEAR
  122. return
  123.  
  124.  
  125. procedure DelJob
  126.  
  127.     parameter Queue, number, SName
  128.     private result
  129.     push key clear
  130.     if Yes('Delete Job Number ' + ltrim(str(number)) + '?')
  131.         result = n_DelQJob(Number, rtrim(queue), rtrim(SName))
  132.         if result = 0
  133.             delete
  134.             goto recno()
  135.         else
  136.             do case
  137.             case result = 208
  138.                 wait window 'No queue rights.'
  139.             case result = 214
  140.                 wait window 'No Job Rights...'
  141.             endcase
  142.         endif
  143.     endif
  144.     pop key
  145.     retry
  146. return
  147.  
  148. procedure MoveJob
  149.  
  150.     *  The purpose of this procedure is to perform a job move.
  151.     *  unfortunately there is no way to force a screen update,
  152.     *  so the job will not appear to update until the browse has timed out.
  153.  
  154.     parameter Queue, number, SName
  155.     private result, NewPos, LastWin
  156.     push key clear
  157.     LastWin = wlast()
  158.     on key label SPACEBAR
  159.     define window MoveJob from 5, 5 to 15, 60 double title ' Move Job ' color scheme 5 shadow
  160.     activate window MoveJob
  161.     clear
  162.     newpos = 1
  163.     @2, 2 say 'Enter new service position :' get NewPos picture '999' range 1, 250
  164.     read
  165.     deactivate window MoveJob
  166.     release window MoveJob
  167.     if lastkey() != 27
  168.         if Yes('Change service sequence for job ' + ltrim(str(number)) + ' to ' + ltrim(str(newpos)) + '?')
  169.             result = n_moveqJob(NewPos, Number, rtrim(queue), rtrim(SName))
  170.             if result <> 0
  171.                 do case
  172.                 case result = 208
  173.                     wait window 'No queue rights.'
  174.                 case result = 214
  175.                     wait window 'No Job Rights...'
  176.                 case result = 211
  177.                     wait window 'No queue rights.'
  178.                 endcase
  179.             endif
  180.         endif
  181.  
  182.     endif
  183.     pop key
  184.     retry
  185. return
  186.