home *** CD-ROM | disk | FTP | other *** search
/ PDA Software Library / pdasoftwarelib.iso / PSION / MISC / PTIME / P_TIME12.OPL next >
Encoding:
Text File  |  1995-10-16  |  3.9 KB  |  189 lines

  1. PROC Ptime:
  2.     GLOBAL info%(32),wId%,x%(6),y%(4)
  3.     LOCAL buffer$(128),allPids%(22),t&
  4.     LOCAL ownPid%        REM own procId
  5.     LOCAL pid%            REM procId of the foreground process
  6.     LOCAL opl%            REM flag, true if working with opl-source
  7.     GLOBAL oTime&        REM ON-time (p_time is running)
  8.     GLOBAL pTime&        REM total programming duration
  9.     GLOBAL sTime&        REM start-time of the program
  10.     GLOBAL pName$(128),pKanal%
  11.  
  12.     pName$="p_time.dat"
  13.     pOpen:                    REM open file
  14.     readDat:                REM read data from file
  15.     IF sTime&=0            REM was 'create'
  16.         sTime&=DATETOSECS(YEAR,MONTH,DAY,HOUR,MINUTE,SECOND)
  17.         saveDat:
  18.     ENDIF
  19.     grafInit:                REM open window, calculate var's
  20.  
  21.     REM ProcId
  22.   ownPid%=CALL($88,0,0,0,0,0)
  23.  
  24.   nonActiv:
  25.   ESCAPE OFF
  26.   lockBack:
  27.   
  28.   WHILE 1
  29.       REM every 10 seconds
  30.         PAUSE 200
  31.         oTime&=oTime&+10
  32.       REM wGetProcessList
  33.     CALL($D98D,0,0,0,ADDR(allPids%(1)),0)
  34.     pid%=allPids%(1)
  35.     
  36.     IF pid%=ownPid%
  37.             t&=DATETOSECS(YEAR,MONTH,DAY,HOUR,MINUTE,SECOND)-sTime&
  38.             gUPDATE OFF
  39.             frmTime:(t&,y%(2))
  40.             frmTime:(oTime&,y%(3))
  41.             frmPerc:(oTime&,t&,y%(3))
  42.       frmTime:(pTime&,y%(4))
  43.       frmPerc:(pTime&,oTime&,y%(4))
  44.             gUPDATE ON
  45.             GIPRINT "update completed, hit key to continue"
  46.             saveDat:
  47.             GET
  48.       Lockback:
  49.     ELSE
  50.             REM FilPathGetById
  51.             CALL($1087,pid%,ADDR(buffer$)+1,0,0,0)
  52.       REM length of cstr
  53.       POKEB ADDR(buffer$),CALL($B9,0,0,0,0,ADDR(buffer$)+1)
  54.  
  55.       IF LOC(buffer$,"OPL")>0 OR LOC(buffer$,"OPD")>0
  56.                 REM work with opl-source
  57.         IF opl%
  58.           pTime&=pTime&+10
  59.         ELSE            REM beginning opl-work
  60.           opl%=-1
  61.         ENDIF
  62.       ENDIF
  63.             saveDat:
  64.     ENDIF
  65.   ENDWH
  66. ENDP
  67. PROC saveDat:
  68.     pOpen:
  69.     IOWRITE(pKanal%,ADDR(oTime&),12)
  70.     IOCLOSE(pKanal%)
  71. ENDP
  72. PROC pOpen:
  73.     LOCAL e%,mode%
  74.     e%=EXIST(pName$)
  75.     mode%=$301+e%
  76.     IOOPEN(pKanal%,pName$,mode%)
  77. ENDP
  78. PROC readDat:
  79.     pOpen:
  80.     IOREAD(pKanal%,ADDR(oTime&),12)
  81.     IOCLOSE(pKanal%)
  82. ENDP
  83. PROC lockBack:
  84.     REM wSystemModal
  85.   CALL($C78D,100,0,0,0,0)
  86. ENDP
  87.  
  88. PROC nonActiv:
  89.     REM GenMarkNonActive
  90.   CALL($138B,0,0,0,0,0)
  91. ENDP
  92.  
  93. PROC frmTime:(s&,y%)
  94.     LOCAL yr%,mo%,dy%,hr%,mn%,sc%,yrday%
  95.     SECSTODATE s&,yr%,mo%,dy%,hr%,mn%,sc%,yrday%
  96.     textw:(GEN$(yrday%-1,-3),x%(2),y%,0,-1)
  97.     textw:(GEN$(hr%,-2),x%(3),y%,0,-1)
  98.     textw:(GEN$(mn%,-2),x%(4),y%,0,-1)
  99. ENDP
  100. PROC frmPerc:(a&,b&,y%)
  101.     IF b&>0
  102.         textw:(GEN$((FLT(a&)/FLT(b&)*100),-4),x%(5),y%,0,-1)
  103.     ENDIF
  104. ENDP
  105.  
  106. PROC grafInit:
  107.     GLOBAL c%,w2%
  108.     LOCAL a$(20),i%,j%,w%,x%
  109.  
  110.     x%(2)=gWIDTH/2
  111.     wId%=gCREATE (0,0,gWIDTH,gHEIGHT,1)
  112.     gBORDER 0
  113.  
  114.     REM title
  115.     style:(1)                REM bold
  116.     a$="P_TIME V1.2 - INFO"
  117.     textw:(a$,x%(2)-gTWIDTH(a$)/2,info%(3)*2,0,-1)
  118.     
  119.     style:(16)            REM unproportional
  120.     j%=info%(3)*1.5    REM line-increment
  121.     REM calc line positions
  122.     y%(1)=gY+j%+1
  123.     i%=2    
  124.     DO
  125.         y%(i%)=y%(i%-1)+j%
  126.         i%=i%+1
  127.     UNTIL i%>4
  128.     y%(1)=y%(1)-1
  129.     
  130.     c%=info%(7)/2     REM charWidth/2
  131.     x%(2)=x%(2)+c%
  132.     
  133.     REM show column titel and calc position of next column
  134.     tabTitle:("ddd",2)
  135.     tabTitle:("hh",3)
  136.     tabTitle:("mm",4)
  137.     tabTitle:("  % ",5)
  138.     lineVert:(x%(6))
  139.  
  140.     style:(0)                REM proportional
  141.   a$="programming time "
  142.     w%=gTWIDTH(a$)
  143.     w2%=0.25*info%(3)
  144.     x%(1)=x%(2)-w%-c%-2
  145.     gAT x%(1),y%(1)+w2%
  146.     gFILL x%(6)-x%(1)-w2%,2,0
  147.     tabPars:("total time ",w%,2)
  148.     tabPars:("on-time ",w%,3)
  149.     tabPars:(a$,w%,4)
  150.     style:(16)            REM unproportional
  151. ENDP
  152. PROC tabTitle:(a$,i%)
  153.     REM show title
  154.     textw:(a$,x%(i%),y%(1),0,-1)
  155.     
  156.     REM draw vertical line
  157.     lineVert:(x%(i%))
  158.     IF i%=2
  159.         lineVert:(x%(i%)-1)
  160.     ENDIF
  161.     
  162.     REM calc next column position
  163.     x%(i%+1)=x%(i%)+info%(7)+gTWIDTH(a$)
  164. ENDP
  165. PROC tabPars:(a$,w%,i%)
  166.     REM show title
  167.     textw:(a$,x%(1),y%(i%),w%,1)
  168.  
  169.     REM draw horizontal line
  170.     gAT x%(1),y%(i%)+w2%
  171.     gLINETO x%(6)-w2%,gY
  172. ENDP
  173. PROC textw:(a$,x%,y%,w%,t%)
  174.     gAT x%,y%
  175.     IF t%<0
  176.         gPRINTB a$,gTWIDTH(a$)
  177.     ELSE
  178.         gPRINTB a$,w%,t%
  179.     ENDIF
  180. ENDP
  181. PROC style:(i%)
  182.     gSTYLE i%
  183.     gINFO info%()
  184. ENDP
  185. PROC lineVert:(x%)
  186.     gAT x%-c%,y%(1)-info%(3)
  187.     gLINETO x%-c%,y%(4)+info%(3)*.25
  188. ENDP
  189.