Pregunta

Tengo que preparar un archivo de una entidad externa, y esta entidad utiliza un mainframe de IBM con COBOL y requiere el archivo para ser codificado en EBCDIC.Estoy creando el archivo en C#.Supongo que esta es una pregunta de dos partes...en primer lugar, es el código de abajo suficientes para asegurarse de que el archivo se generará de manera que se puede leer?

StreamWriter sw = new StreamWriter(@"C:\EBCDICFileEquivalent.txt", false, Encoding.GetEncoding(37));

En segundo lugar, varios campos en el archivo requieren decimal, en el formato S(9)13 COMP-3.Como ya he especificado codificación EBCDIC, puedo escribir el número decimal (por ejemplo,1234500000001) para el archivo con:

sw.WriteLine("1234500000001C"); 

...y tengo que apagar correctamente en el archivo generado?

Nunca he hecho nada con EBCDIC o COMP-3.

¿Fue útil?

Solución

Ese código debe crear un archivo EBCDIC simplemente está bien.Por lo general, esto no es necesario, ya que el proceso FTP generalmente convertirá el archivo automáticamente de ASCII a EBCDIC, pero si ese no es el caso, entonces el archivo que está creando debe ser correcto y puede transmitirse como binario en lugar de texto.

Escritura de la numeración como texto con las sustituciones apropiadas para satisfacer el formato decimal firmado en mainframe zonificado es el procedimiento correcto.Por supuesto, hacer que estas sustituiones sea un dolor, pero la escritura como una cadena que está haciendo es la forma correcta de ingresar al archivo que el mainframe puede leer.

Otros consejos

En segundo lugar, varios campos en el archivo requieren decimal, en el formato S(9)13 COMP-3.Como ya he especifica la codificación de EBCDIC, puedo escribe el número decimal (por ejemplo,1234500000001) para el archivo con:

sw.WriteLine("1234500000001C");

...y tengo que apagar correctamente en el archivo generado?

No, No puede.La declaración que iba a escribir el EBCDIC bytes:

F1 F2 F3 F4 F5 F0 F0 F0 F0 F0 F0 F0 F1 C3

Pero este campo es COMP-3.Que no los caracteres codificados;es BCD con signo nybble (C=positivo, D=negativo, F=unsigned).

12 34 50 00 00 00 1C

Suponiendo que el código de la página 37 es correcto, podría escribir esto en el archivo utilizando la cadena "\u0012\u0094&\u0000\u0000\u001C", pero tendría mucho más sentido para escribir estos no los campos de texto en modo binario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top