home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 35 Internet
/
35-Internet.zip
/
base64.zip
/
DEBASE64.CMD
< prev
next >
Wrap
OS/2 REXX Batch file
|
1994-07-05
|
2KB
|
72 lines
/* Decodes a Base64 file. */
/* */
/* Written by James L. Dean */
char_set='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
DO n=0 to 127
t.n=-1
END
DO n=0 to 63
i=C2D(SUBSTR(char_set,n+1,1))
t.i=n
END
CALL CHAROUT,'Input? '
input_file_name=LINEIN()
CALL CHAROUT,'Output? '
output_file_name=LINEIN()
SAY 'Writing "'output_file_name'".'
CALL RxFuncAdd 'SysFileDelete','RexxUtil','SysFileDelete'
i=SysFileDelete(output_file_name)
input_line=''
input_line_index=81
input_eof=0
DO WHILE (input_eof = 0)
sextet_num=1
num_bits=0
DO WHILE(sextet_num <= 4)
DO WHILE((input_eof = 0) & (input_line_index > LENGTH(input_line)))
IF LINES(input_file_name) = 0 THEN
input_eof=-1
ELSE
DO
input_line=LINEIN(input_file_name)
input_line_index=1
END
END
IF input_eof = 0 THEN
DO
i=C2D(SUBSTR(input_line,input_line_index,1))
input_line_index=input_line_index+1
t1=t.i
IF t1 >= 0 THEN
DO
sextet.sextet_num=t1
num_bits=num_bits+6
sextet_num=sextet_num+1
END
END
ELSE
DO
sextet.sextet_num=0
sextet_num=sextet_num+1
END
END
IF num_bits >= 8 THEN
DO
t1=sextet.1
t2=sextet.2
CALL CHAROUT output_file_name,D2C(4*t1+t2%16)
num_bits=num_bits-8
END
IF num_bits >= 8 THEN
DO
t1=sextet.3
CALL CHAROUT output_file_name,D2C(16*(t2//16)+(t1%4))
num_bits=num_bits-8
END
IF num_bits >= 8 THEN
DO
t2=sextet.4
CALL CHAROUT output_file_name,D2C(64*(t1//4)+t2)
END
END