Imp. ¿Pantalla o Impresora?
Esta pregunta que nos hemos hecho tantas veces, puede tener una solución sencilla y rápida. Claro está no esperemos unos resultados espectaculares, pero para según que situaciones puede ser bastante práctica. Veamos cual sería el proceso a realizar.

Cuando describimos un fichero de impresora en la SELECT, solemos hacer mas o menos así:
SELECT IMPRESORA ASSIGN TO PRINTER "LPT1".

Bien, pues lo que haremos será hacer recaer el valor de LPT1 a una variable, asÍ:
SELECT IMPRESORA ASSIGN TO PRINTER DESTINO.

Ahora, en éste caso, la salida de la impresora dependerá del valor que tome la variable DESTINO, y ese valor se lo asignaremos nosotros en nuestro programa, simplemente, preguntando por donde queremos el listado. ¿Por pantalla o por impresora?. Por supuesto la variable DESTINO, estaría descrita en la Working-Storage:
...
PREGUNTA.
     DISPLAY "(P)ANTALLA  (I)MPRESORA" LINE XX COL XX.
     ACCEPT OPCION LINE XX COL XX.
     IF OPCION = "P" MOVE "
nombre_de_listado" TO DESTINO ELSE
     IF OPCION = "I" MOVE "LPT1" TO DESTINO ELSE GO PREGUNTA.
...

Si hemos seleccionado por pantalla, el resultado del listado quedará en formato ASCII, en un archivo llamado nombre_de_listado. El cual podriamos visualizar con cualquier utilidad para ver archivos o cualquier programa, como el editor de MS-DOS, incluso podríamos modificarlo e imprimirlo mas tarde.

Si trabajásemos en red, podría darse la situación de que dos usuarios, hubieran realizado la misma operación al mismo tiempo, lo cual, daría un error por estar el archivo en uso. Para solucionar esto, el nombre de listado, debería estar compuesto por algún valor que fuera distinto para cada usuario, como la hora, o algún número aleatorio.

Truco remitido por Alberto Ortega Rojas.

Otro amigo, Artur Potau nos facilita todo lo necesario para imprimir por impresoras conectadas al puerto serie.
    En primer lugar deberemos de configurar el puerto en relación con las propiedades de la impresora a conectar. Por ejemplo, si la impresora es una etiquetera cuya configuración es a 9600 baud, paridad NONE, 8 bits de datos y 1 bit de parada definiremos el puerto en el AUTOEXEC.BAT de la forma:

    MODE COM2: 9600,N,8,1

    Opcionalmente oodemos añadir una (,R) para que reintente la impresión en caso de fallo en la transmisión o buffer lleno.

    Después, definiremos una variable con el nombre que se desee de la forma:

    SET   TICKET=COM2:

    En la SELECT del programa en COBOL definiremos esta impresora como:

    SELECT IMPRESO ASSIGN TO PRINT "TICKET".

    Si la configuración se ha realizado correctamente, cualquier WRITE LINEA FROM IMPRESO que se haga debería de salir por la impresora serie definida.




Este artículo proviene de Cobol en español
http://www.escobol.com

La dirección de esta noticia es:
http://www.escobol.com/modules.php?name=Sections&op=viewarticle&artid=81