
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.
|
|