home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / base64.zip / ENBASE64.CMD < prev    next >
OS/2 REXX Batch file  |  1994-07-05  |  2KB  |  74 lines

  1. /* Encodes a file in Base64.                         */
  2. /*                                                   */
  3. /* Written by James L. Dean                          */
  4. char_set='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
  5. CALL CHAROUT,'Input? '
  6. input_file_name=LINEIN()
  7. CALL CHAROUT,'Output? '
  8. output_file_name=LINEIN()
  9. SAY 'Writing "'output_file_name'".'
  10. CALL RxFuncAdd 'SysFileDelete','RexxUtil','SysFileDelete'
  11. i=SysFileDelete(output_file_name)
  12. input_eof=0
  13. col_num=1
  14. DO WHILE (input_eof = 0)
  15.   num_octets=0
  16.   triple=0
  17.   DO octet_num=1 TO 3
  18.     IF input_eof = 0 THEN
  19.       DO
  20.         octet=CHARIN(input_file_name)
  21.         IF LENGTH(octet) = 0 THEN
  22.           input_eof=-1
  23.       END
  24.     IF input_eof = 0 THEN
  25.       DO
  26.         triple=256*triple+C2D(octet)
  27.         num_octets=num_octets+1
  28.       END
  29.     ELSE
  30.       triple=256*triple
  31.   END
  32.   num_sextets=(8*num_octets)%6
  33.   IF 6*num_sextets < 8*num_octets THEN
  34.     num_sextets=num_sextets+1
  35.   IF num_sextets > 0 THEN
  36.     DO
  37.       sextet_num=1
  38.       DO WHILE(sextet_num <= 4)
  39.         quotient=triple%64
  40.         stack.sextet_num=triple-64*quotient
  41.         sextet_num=sextet_num+1
  42.         triple=quotient
  43.       END
  44.       DO WHILE(num_sextets >= 1)
  45.         sextet_num=sextet_num-1
  46.         rc=CHAROUT(output_file_name,SUBSTR(char_set,1+stack.sextet_num,1))
  47.         col_num=col_num+1
  48.         IF col_num > 76 THEN
  49.           DO
  50.             rc=CHAROUT(output_file_name,D2C(13))
  51.             rc=CHAROUT(output_file_name,D2C(10))
  52.             col_num=1
  53.           END
  54.         num_sextets=num_sextets-1
  55.       END
  56.       DO WHILE(sextet_num > 1)
  57.         rc=CHAROUT(output_file_name,'=')
  58.         col_num=col_num+1
  59.         IF col_num > 76 THEN
  60.           DO
  61.             rc=CHAROUT(output_file_name,D2C(13))
  62.             rc=CHAROUT(output_file_name,D2C(10))
  63.             col_num=1
  64.           END
  65.         sextet_num=sextet_num-1
  66.       END
  67.     END
  68. END
  69. IF col_num > 1 THEN
  70.   DO
  71.     rc=CHAROUT(output_file_name,D2C(13))
  72.     rc=CHAROUT(output_file_name,D2C(10))
  73.   END
  74.