[comp.sources.wanted] EBCDIC to ASCII in C for MS-DOS

gregg@mrevox.UUCP (Victor Gregg) (11/02/87)

OK campers, here it is, the tedious programming 
project of the month #173.....

assume that a IBM-MVS user transfers an EBCDIC file
to a PC, and gives the floppy to YOU.

you know that the floppy contains a valuable piece
of source code (a real gem, i hope)  but your PC
is brain-damaged (it can only read ASCII).

Your mission, should you decide to accept it, is 
to write a 'filter' program to convert E-to-A.

Submissions will be judged on style, portability,
and efficiency (in that order), but we will really
only use the first one that works.

All prizes will be awarded, and the decision of 
the judges will be final, deadline is as soon as
we get a working version.

Please don't send mail, I only read netnews :)

Good luck, and congradulations on having the 
patience to read this drivel.




-- 

__________________________________________________________________________
Victor S. Gregg                                  _   _        _  _   _   _
Bell Communication Research, Inc.               | | |  |  |  |  / \ | \ |
444 Hoes Lane (1C-206)                          |_/ |_ |  |  |  | | |_/ |_
Piscataway, NJ 08854                            | \ |  |  |  |  | | |\  |
(201) 699-4596                                  |_| |_ |_ |_ |_ \_/ | \ |_
--------------------------------------------------------------------------
Standard Disclaimer: My opinion, N O T my employers!!                  
--------------------------------------------------------------------------

stephen@obed.UUCP (11/10/87)

In article <293@mrevox.UUCP>, gregg@mrevox.UUCP (Victor Gregg) writes:
> assume that a IBM-MVS user transfers an EBCDIC file
> to a PC, and gives the floppy to YOU.
> Your mission, should you decide to accept it, is 
>  -----
> Victor S. Gregg                                  _   _        _  _   _   _
> Bell Communication Research, Inc.               | | |  |  |  |  / \ | \ |

under unix: dd conv=ascii < thatfile >output

Under MESS-DOS:

# move to a unix system, cut at the dotted line and stuff thru /bin/sh
# then compile and run under IT.
# -----------------  CUT HERE ----------------- 
# 
# file ab.c 
sed -e 's/^\<//' -e '/<$/s/\<$//' << "++ENDFILE++" > ab.c
<static char ebcasc[256]={
<0x00, 0x01, 0x02, 0x03, 0x00, 0x09, 0x00, 0x7f,
<0x00, 0x00, 0x00, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
<0x10, 0x11, 0x12, 0x13, 0x00, 0x0a, 0x08, 0x00,
<0x18, 0x19, 0x00, 0x00, 0x1c, 0x1d, 0x1e, 0x1f,
<0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x17, 0x1b,
<0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x07,
<0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x04,
<0x00, 0x00, 0x00, 0x00, 0x14, 0x15, 0x00, 0x1a,
<0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
<0x00, 0x00, 0x00, 0x2e, 0x3c, 0x28, 0x2b, 0x7c,
<0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
<0x00, 0x00, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x7e,
<0x2d, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
<0x00, 0x00, 0x7c, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
<0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
<0x00, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,
<0x00, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
<0x68, 0x69, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x00,
<0x00, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
<0x71, 0x72, 0x60, 0x7d, 0x00, 0x00, 0x00, 0x00,
<0x00, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
<0x79, 0x7a, 0x5e, 0x00, 0x00, 0x5b, 0x00, 0x00,
<0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
<0x00, 0x00, 0x5c, 0x00, 0x00, 0x5d, 0x00, 0x00,
<0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
<0x48, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
<0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
<0x51, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
<0x5c, 0x00, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
<0x59, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
<0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
<0x38, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

<main(){
<unsigned char line[1024];
<char oline[1024];
<int got,i,j,sent;
<	while( (got=read(0,line,1024)) >0){
<		for(i=0; i<got ; i++) oline[i]=ebcasc[(unsigned)line[i]];
<		for(i=0; i<got && (sent=write(1,oline+i,got-i)) >0; i+=sent);
<	};
<};
++ENDFILE++