home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 3 Comm / 03-Comm.zip / autozoc.zip / GETFILES.REX < prev    next >
OS/2 REXX Batch file  |  1995-11-19  |  5KB  |  239 lines

  1. /* REXX script to automatically call BBS, log on, download up to ten files, then log off. */
  2.  
  3. /* clear screen  */
  4. 'CLS'
  5.  
  6. /* set variables */
  7.  
  8. USER_NAME="XXXXX XXXXXXX"       /* your name as registered with the BBS (put in quotes) */
  9. PASSWORD="XXXX"                 /* your password as registered with the BBS (put in quotes) */
  10. BBS_NUM="#-###-###-####"        /* the BBS phone number (put in quotes) */
  11. MIN_SPEED=#####                 /* minimum connect speed you'll accept (NO QUOTES) */
  12. MAX_ATTEMPTS=#                  /* maximum number of times to retry the call (NO QUOTES) */
  13.  
  14. QTY_FILES=0
  15. FILE_A=""
  16. FILE_B=""
  17. FILE_C=""
  18. FILE_D=""
  19. FILE_E=""
  20. FILE_F=""
  21. FILE_G=""
  22. FILE_H=""
  23. FILE_I=""
  24. FILE_J=""
  25.  
  26. /* Ask user for first file name */
  27. 'ASK "Enter file name to download."'
  28.  
  29. IF ZOCRESULT()="##CANCEL##" THEN EXIT
  30. IF ZOCRESULT()="" THEN EXIT
  31.   
  32. IF ZOCRESULT()\="" & ZOCRESULT()\="##CANCEL##" THEN
  33.   DO 
  34.     FILE_A=ZOCRESULT()
  35.      
  36.     /* ask for maximum of 9 more file names */
  37.     DO QTY_FILES=2 to 10
  38.  
  39.       /* Ask user for file name */
  40.       'ASK "Enter file name to download."'
  41.  
  42.       IF ZOCRESULT()="##CANCEL##" THEN EXIT
  43.       IF ZOCRESULT()="" THEN LEAVE QTY_FILES
  44.   
  45.       IF QTY_FILES=2 THEN FILE_B=ZOCRESULT()
  46.       IF QTY_FILES=3 THEN FILE_C=ZOCRESULT()
  47.       IF QTY_FILES=4 THEN FILE_D=ZOCRESULT()
  48.       IF QTY_FILES=5 THEN FILE_E=ZOCRESULT()
  49.       IF QTY_FILES=6 THEN FILE_F=ZOCRESULT()
  50.       IF QTY_FILES=7 THEN FILE_G=ZOCRESULT()
  51.       IF QTY_FILES=8 THEN FILE_H=ZOCRESULT()
  52.       IF QTY_FILES=9 THEN FILE_I=ZOCRESULT()
  53.       IF QTY_FILES=10 THEN FILE_J=ZOCRESULT()
  54.       
  55.  
  56.    END QTY_FILES 
  57. END /* IF */
  58.  
  59. DO CALL_BBS=1 TO MAX_ATTEMPTS
  60.  
  61.   /* clear screen */
  62.   'CLS'
  63.  
  64.   /* initialize modem */
  65.   SEND 'ATZ1^M'
  66.   DELAY 1
  67.  
  68.   SAY "Attempt # " CALL_BBS 
  69.  
  70.   SAY "Calling the OS/2 Shareware BBS to download files.  Dialing...." BBS_NUM
  71.  
  72.   'TIMEOUT 60'
  73.  
  74.   DIAL BBS_NUM '^IOS/2 Shareware'
  75.  
  76.       /* let's see what kind of response we get */
  77.       DO RESULT_TYPE=1 TO 6
  78.  
  79.          /* receive next line of text */
  80.          'GETLINE'
  81.  
  82.          /* if no answer, try again (leave loop) */
  83.          IF RC=640 THEN 
  84.          DO
  85.             HANGUP
  86.             LEAVE RESULT_TYPE
  87.          END
  88.          
  89.          /* if BUSY was received, try again (leave loop) */
  90.          IF ZOCLASTLINE()=="BUSY" THEN
  91.          DO
  92.         DELAY 1
  93.         SAY "The line is busy.  We'll try again."
  94.             LEAVE RESULT_TYPE
  95.          END
  96.  
  97.          /* if NO DIAL TONE was received, end with error message */
  98.          IF ZOCLASTLINE()=="NO DIAL TONE" THEN 
  99.          DO
  100.         DELAY 1
  101.             SAY "Possible hardware or software trouble.  Aborting attempt."
  102.             EXIT
  103.          END
  104.  
  105.          /* if NO CARRIER was received, end with error message */
  106.          IF ZOCLASTLINE()=="NO CARRIER" THEN 
  107.          DO
  108.             HANGUP
  109.             SAY "Possible dialing error.  Check phone number."
  110.             EXIT
  111.          END
  112.  
  113.          /* determine the connect speed */
  114.          DO B=9 TO 15
  115.            IF SUBSTR(ZOCLASTLINE(),B,1)="/" THEN
  116.            DO 
  117.               B=B-9
  118.               LEAVE B
  119.            END
  120.          END B
  121.          SPEED=SUBSTR(ZOCLASTLINE(),9,B)
  122.          IF SPEED<MIN_SPEED THEN 
  123.          DO
  124.             HANGUP
  125.             ASK '"Connect speed is too slow!"' '"Do you want to try again?"'
  126.             IF ZOCRESULT()="##CANCEL##" THEN
  127.             DO              
  128.                EXIT
  129.             END
  130.             ELSE LEAVE RESULT_TYPE
  131.          END
  132.          ELSE LEAVE CALL_BBS
  133.  
  134.       END RESULT_TYPE
  135.  
  136.       NOTIFY "Pausing for 30 seconds."
  137.       DELAY 30
  138.  
  139. END CALL_BBS
  140.  
  141. IF CALL_BBS=MAX_ATTEMPTS+1 THEN
  142. DO
  143.    NOTIFY "Can't get through now.....try again later."
  144.    'CLS'
  145.    EXIT
  146. END
  147.  
  148. WAIT 'your name:'
  149. SEND USER_NAME '^M'
  150.  
  151. WAIT SUBSTR(USER_NAME,LENGTH(USER_NAME)-2,3)' [Y,n]?'
  152. SEND 'y^M'
  153.  
  154. WAIT 'Password:'
  155. SEND PASSWORD '^M'
  156.  
  157. WAIT 'o continue'
  158. SEND '^M'
  159.  
  160. WAIT 'e [Y,n,=]?'
  161. SEND 'N^M'
  162.  
  163. WAIT 'Select: '
  164. SEND 'F^M'
  165.  
  166. WAIT 'Select: '
  167. SEND 'D^M'
  168.  
  169. 'TIMEOUT 6000'
  170.  
  171. DO FILE_NAMES=1 TO 100
  172.     IF QTY_FILES>=2 THEN
  173.     DO  
  174.        WAIT 'load (#1):'
  175.        SEND FILE_A '^M'
  176.     END
  177.     ELSE LEAVE FILE_NAMES
  178.   IF QTY_FILES>=3 THEN
  179.     DO  
  180.        WAIT 'load (#2):'
  181.        SEND FILE_B '^M'
  182.     END
  183.     ELSE LEAVE FILE_NAMES
  184.   IF QTY_FILES>=4 THEN
  185.     DO  
  186.        WAIT 'load (#3):'
  187.        SEND FILE_C '^M'
  188.     END
  189.     ELSE LEAVE FILE_NAMES
  190.   IF QTY_FILES>=5 THEN
  191.     DO  
  192.        WAIT 'load (#4):'
  193.        SEND FILE_D '^M'
  194.     END
  195.     ELSE LEAVE FILE_NAMES
  196.   IF QTY_FILES>=6 THEN
  197.     DO  
  198.        WAIT 'load (#5):'
  199.        SEND FILE_E '^M'
  200.     END
  201.     ELSE LEAVE FILE_NAMES
  202.   IF QTY_FILES>=7 THEN
  203.     DO  
  204.        WAIT 'load (#6):'
  205.        SEND FILE_F '^M'
  206.     END
  207.     ELSE LEAVE FILE_NAMES
  208.   IF QTY_FILES>=8 THEN
  209.     DO  
  210.        WAIT 'load (#7):'
  211.        SEND FILE_G '^M'
  212.     END
  213.     ELSE LEAVE FILE_NAMES
  214.   IF QTY_FILES>=9 THEN
  215.     DO  
  216.        WAIT 'load (#8):'
  217.        SEND FILE_H '^M'
  218.     END
  219.     ELSE LEAVE FILE_NAMES
  220.   IF QTY_FILES>=10 THEN
  221.     DO  
  222.        WAIT 'load (#9):'
  223.        SEND FILE_I '^M'
  224.     END
  225.     ELSE LEAVE FILE_NAMES
  226.   IF QTY_FILES>=11 THEN
  227.     DO  
  228.        WAIT 'load (#10):'
  229.        SEND FILE_J '^M'
  230.     END
  231.     ELSE LEAVE FILE_NAMES
  232. END FILE_NAMES
  233.  
  234. WAIT 'load (#'QTY_FILES'):'
  235. SEND '/G^M'
  236.  
  237. WAIT '<esc> to abort:'
  238. SEND '^M'
  239.