home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 12 / CD_ASCQ_12_0294.iso / vrac / dwnld15.zip / DWNLD.PPS < prev    next >
Text File  |  1994-01-21  |  9KB  |  214 lines

  1. ;*****************************************************************************
  2. ;*                               DWNLD.PPE v1.4                              *
  3. ;*                       PCBOARD 15.1 Download Counter                       *
  4. ;*                                                                           *
  5. ;*                        Written by Steven Hauswirth                        *
  6. ;*                 Written in PCBoard Programming Language                   *
  7. ;*                                                                           *
  8. ;*                          "The Power Palace BBS"                           *
  9. ;*               Node 1 - 312-594-0643 - [14.4 v32b] - 80386/40              *
  10. ;*                                                                           *
  11. ;*   This PPE is a full screen download counter that informs the user how    *
  12. ;*   many files, bytes, et cetera they have flagged for download.            *
  13. ;*****************************************************************************
  14. IF (!ANSION()) THEN
  15.         PRINT "Enter the filename to Download (Enter)=none"
  16.         GOTO EXIT
  17. ENDIF
  18.  
  19. ;┌───────────────────────────────────────────────────────────────────────────┐
  20. ;│ Declare Variable Types                                                    │
  21. ;└───────────────────────────────────────────────────────────────────────────┘
  22. STRING TEMP, Y, FILE_NAME, FLAG_FILE, NO_TIME, FREE_FILE, TEMP_FILE
  23. STRING FLIST_TIME, TEMP_TIME
  24. DATE FILE_DATE
  25. INTEGER COUNT, LOOP, BAT_MIN, BAT_SEC, BAT_TIME, FILE_SEC, FILE_MIN
  26. INTEGER TEMP1, TEMP2, TEMP3, FILE_SIZE, FILE_NUM
  27.  
  28. IF (PCBNODE() = 0) THEN
  29.     LET FLAG_FILE = GETENV("PCBDRIVE")+GETENV("PCBDIR")+"\FLIST."
  30. ELSE
  31.     LET FLAG_FILE = GETENV("PCBDRIVE")+GETENV("PCBDIR")+"\FLIST."+STRING(PCBNODE())
  32. ENDIF
  33. LET TEMP_FILE = GETENV("PCBDRIVE")+GETENV("PCBDIR")+"\FLIST.TMP"
  34. LET FILE_NUM = 0
  35. BAT_TIME = 0
  36. TEMP1 = 0
  37. TEMP2 = 0
  38. TEMP3 = 0
  39. LET Y = 1
  40. LET LOOP = 1
  41.  
  42. ;┌───────────────────────────────────────────────────────────────────────────┐
  43. ;│ Check to see if they have NOT flagged any files yet for download, or if   │
  44. ;│ the user has decided not to download the flagged files.                   │
  45. ;└───────────────────────────────────────────────────────────────────────────┘
  46. FOPEN 1,FLAG_FILE,O_RD,S_DN
  47. FDEFIN 1
  48. FSEEK 1,0,SEEK_SET(0)
  49. FOR LOOP = 1 TO 100000
  50.    FSEEK 1,66,SEEK_CUR(1)
  51.    FDREAD FILE_NAME,13
  52.    IF (FERR(1)) BREAK
  53.    FSEEK 1,50,SEEK_CUR(1)
  54. NEXT
  55. IF (EXIST(TEMP_FILE)) THEN
  56.     FLIST_TIME = FILEINF(FLAG_FILE,3)   
  57.     TEMP_TIME = FILEINF(TEMP_FILE,3)
  58.     IF (LEFT(TEMP_TIME,2) < LEFT(FLIST_TIME,2)) THEN
  59.        IF (MID(TEMP_TIME,4,2) < MID(FLIST_TIME,4,2)) THEN
  60.           IF (RIGHT(TEMP_TIME,2) < RIGHT(FLIST_TIME,2)) GOTO SKIP
  61.        ENDIF
  62.     ENDIF
  63.     FOPEN 2, TEMP_FILE, O_RD, S_DN
  64.     FGET 2,TEMP1
  65.     FCLOSE 2
  66. ELSE GOTO SKIP
  67. ENDIF
  68. IF (LOOP=1) GOTO SKIP
  69. IF ((TEMP1+1)!=LOOP) WAIT
  70. :SKIP
  71. DELETE TEMP_FILE
  72. FOPEN 2, TEMP_FILE, O_WR, S_DN
  73. FPUT 2, LOOP
  74. FCLOSE 2
  75. COUNT = LOOP
  76.  
  77. ;┌───────────────────────────────────────────────────────────────────────────┐
  78. ;│ Display the header of the dispay                                          │
  79. ;└───────────────────────────────────────────────────────────────────────────┘
  80. TEMP1 = 0
  81.  
  82. IF (GRAFMODE()="R") THEN
  83.     PRINTLN " "
  84.     PRINTLN "!|1K|*"
  85. ENDIF
  86. PRINTLN "@CLS@@X0A ┌────────────────────────────────────────────────────────────────────────────┐"
  87. PRINTLN " │  @X09░▒▓█@X1B         Statistics for the last 10 files in your batch         @X09█▓▒░@X0A  │"
  88. PRINTLN " │                                                                            │"
  89. PRINTLN " │  @X0BNum     Filename       Size       Date     Transfer Time   Free  No Time  @X0A│"
  90. PRINTLN " │  @X0D────  ────────────  ──────────  ────────  ───────────────  ────  ───────  @X0A│"
  91.  
  92. ;┌───────────────────────────────────────────────────────────────────────────┐
  93. ;│ Since there are files already flagged for download. Find out how many.    │
  94. ;│ If there are more then 10 then position display to only display the last  │
  95. ;│ ten of them.                                                              │
  96. ;└───────────────────────────────────────────────────────────────────────────┘
  97. FSEEK 1,0,SEEK_SET(0)
  98. IF (COUNT>10) THEN
  99.    FOR LOOP = 1 TO (COUNT-10)
  100.       FSEEK 1,83,SEEK_CUR(1)
  101.       FDREAD TEMP,1
  102.       IF (ASC(TEMP)!=0) TEMP1 = ASC(TEMP)
  103.       FDREAD TEMP,1
  104.       IF (ASC(TEMP)!=0) TEMP2 = 256*ASC(TEMP)
  105.       FDREAD TEMP,1
  106.       IF (ASC(TEMP)!=0) TEMP3 =65536*ASC(TEMP)
  107.       BAT_TIME = BAT_TIME + TEMP1 + TEMP2 + TEMP3
  108.       FSEEK 1,43,SEEK_CUR(1)
  109.    NEXT
  110. ELSE COUNT = 10
  111. ENDIF
  112. LET Y = COUNT-9
  113.  
  114. ;┌───────────────────────────────────────────────────────────────────────────┐
  115. ;│ Display the file name, bytes, and transfer time for all the files flagged │
  116. ;└───────────────────────────────────────────────────────────────────────────┘
  117. FOR LOOP= 1 TO COUNT
  118.    TEMP1 = 0
  119.    TEMP2 = 0
  120.    TEMP3 = 0
  121.    FDREAD TEMP,66
  122.    IF (FERR(1)) BREAK
  123.    TEMP = TRIM(TEMP," ")
  124.    FILE_DATE = FILEINF(TEMP,2)
  125.    FDREAD FILE_NAME,13
  126.    FDREAD TEMP,1
  127.    IF (ASC(TEMP)!=0) TEMP1 = ASC(TEMP)
  128.    FDREAD TEMP,1
  129.    IF (ASC(TEMP)!=0) TEMP2 = 256*ASC(TEMP)
  130.    FDREAD TEMP,1
  131.    IF (ASC(TEMP)!=0) TEMP3 =65536*ASC(TEMP)
  132.    FILE_SIZE = TEMP1+TEMP2+TEMP3
  133.    TEMP1 = 0
  134.    TEMP2 = 0
  135.    TEMP3 = 0
  136.    FSEEK 1,1,SEEK_CUR(1)
  137.    FDREAD TEMP,1
  138.    IF (ASC(TEMP)!=0) TEMP1 = ASC(TEMP)
  139.    FDREAD TEMP,1
  140.    IF (ASC(TEMP)!=0) TEMP2 = 256*ASC(TEMP)
  141.    FDREAD TEMP,1
  142.    IF (ASC(TEMP)!=0) TEMP3 =65536*ASC(TEMP)
  143.    FILE_SEC = TEMP1 + TEMP2 + TEMP3
  144.    BAT_TIME = BAT_TIME + FILE_SEC
  145.    FSEEK 1,9,SEEK_CUR(1)
  146.    FDREAD FREE_FILE,1
  147.    FDREAD NO_TIME,1
  148.    FSEEK 1,32,SEEK_CUR(1)
  149.    FILE_MIN = FILE_SEC/60
  150.    FILE_SEC = FILE_SEC - FILE_MIN*60
  151.    PRINT " │@X0B"+LEFT("     ",5-LEN(Y))+STRING(Y)+LEFT("                 ",15-LEN(FILE_NAME))+"@X0F"
  152.    PRINT FILE_NAME+LEFT("               ",12-LEN(STRING(FILE_SIZE)))
  153.    PRINT STRING(FILE_SIZE)+"  "
  154.    PRINT STRING(FILE_DATE)+LEFT("      ",6-LEN(FILE_MIN))
  155.    PRINT STRING(FILE_MIN)+" @X07min@X0F"+LEFT("    ",3-LEN(STRING(FILE_SEC)))+STRING(FILE_SEC)+" @X07sec    "
  156.    IF (ASC(FREE_FILE)=1) THEN
  157.       PRINT "@X0CY"
  158.    ELSE PRINT "@X0EN"
  159.    ENDIF
  160.    IF (ASC(NO_TIME)=1) THEN
  161.    PRINT "      @X0CY"
  162.    ELSE PRINT "      @X0C@X0EN"
  163.    ENDIF
  164.    ANSIPOS 79,5+LOOP
  165.    PRINTLN "@X0A│"
  166.    ANSIPOS 1,6+LOOP
  167.    INC Y
  168. NEXT
  169.  
  170. ;┌────────────────────────────────────────────────────────────────────────────┐
  171. ;│ Display with blank lines to fill the screen to ten file placements listed  │
  172. ;└────────────────────────────────────────────────────────────────────────────┘
  173. :CONT
  174.     FOR LOOP = LOOP TO 10
  175.     PRINTLN " @X0A│@X0B"+LEFT("    ",5-LEN(Y))+STRING(Y)+"                          @X0F0  00-00-00     0 @X07min  @X0F0 @X07sec                 @X0A│"
  176.     INC Y
  177.     NEXT
  178. :BACK
  179.  
  180. ;┌───────────────────────────────────────────────────────────────────────────┐
  181. ;│ Display the footer of the dispay                                          │
  182. ;└───────────────────────────────────────────────────────────────────────────┘
  183. PRINTLN " │                                                                            │"
  184. PRINTLN " │  @X09░▒▓█@X1B                Statistics for the ENTIRE batch                 @X09█▓▒░@X0A  │"
  185. PRINTLN " │                                                                            │"
  186. PRINT " │    @X07Files: @X0F@FFILES:3@  @X07Size (bytes): @X0F@FBYTES:12@  @X07Estimated time: @X0F"
  187.  
  188. ;┌───────────────────────────────────────────────────────────────────────────┐
  189. ;│ Calculate the BATCH transfer time from the BATCH bytes listed on screen   │
  190. ;│ taking into account local logons and error correcting modems.             │
  191. ;└───────────────────────────────────────────────────────────────────────────┘
  192. LET FILE_NUM = S2I(TRIM(SCRTEXT(14,19,2,FALSE)," "),10)
  193. BAT_MIN = BAT_TIME/60
  194. BAT_SEC = BAT_TIME - BAT_MIN*60
  195. PRINT STRING(BAT_MIN)+" @X07min"+" @X0F"+STRING(BAT_SEC)+" @X07sec@X0A"
  196. ANSIPOS 79,19
  197. PRINTLN "│"
  198. PRINTLN " └────────────────────────────────────────────────────────────────────────────┘"
  199. PRINTLN "           @X07Enter @X0Ffilename @X07on line above, or (@X0CENTER@X07) alone to continue@X08       1.5"
  200.  
  201. ;┌───────────────────────────────────────────────────────────────────────────┐
  202. ;│ Position cursor on the screen and ask for file name. Then stuff it into   │
  203. ;│ keyboard buffer and exit                                                  │
  204. ;└───────────────────────────────────────────────────────────────────────────┘
  205. IF (FILE_NUM > 9) FILE_NUM = 9
  206. ANSIPOS 11,6+FILE_NUM
  207. LET FILE_NAME = ""
  208. INPUTSTR "_",file_name,@X07,12,MASK_FILE()+"*?",UPCASE
  209. ANSIPOS 1,21
  210. FILE_NAME=TRIM(FILE_NAME," ")
  211. IF (LEN(file_name) = 0) file_name = CHR(13)
  212. KBDSTUFF file_name
  213. :EXIT
  214. END