Ver la Versión Completa : [Sintaxis] Imprimir en una impresora puerto USB (Linux)
dariodr
3 de diciembre de 2018, 15:19
Hola amigos coboleros, tengo una duda:
Con esta orden
FILE-CONTROL.
SELECT OPTIONAL PHONE-FILE ASSIGN TO "PHONE.DAT"
ORGANIZATION IS SEQUENTIAL.
creo un archivo fisico en disco llamado "PHONE.DAT"
Con esta otra orden
SELECT PRINTER-FILE ASSIGN TO PRINTER
ORGANIZATION IS LINE SEQUENTIAL.
mando a imprimir a la impresora por defecto (LPT1).
La consulta es: como hago para mandar a imprimir desde una impresora USB, estoy usando OpenCobol con LinuxMint (derivado de Ubuntu).
Gracias.
JCantero
3 de diciembre de 2018, 18:50
De la forma que lo pones debe de salir por la impresora por defecto que tu tengas definida en el linux.
Para probar intenta imprimir algo desde la linea de comandos y verificar que imprime. (comando lp)
Creo que te sobraria poner lo de "line sequential". Al poner "printer" va inherente.
Lo tengo declarada la impresora asi
select impresora assign to printer, nombre-impresora.
Y en menu de programa tengo una selección de impresoras en el cual asigno a nombre-impresora el nombre de la impresora que esta configurada en linux.
Mas concretamente lo tengo asi:
select impresora assign to printer, nombre-impresora
file status is error-impresora.
En error impresora me va volcando el error producido. Si '00' no hay error.
dariodr
4 de diciembre de 2018, 04:28
Este es el codigo, donde asigno el nombre de la impresora.
IDENTIFICATION DIVISION.
PROGRAM-ID. PHNBLD01.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT OPTIONAL PHONE-FILE ASSIGN TO "PHONE.DAT"
ORGANIZATION IS SEQUENTIAL.
SELECT PRINTER-FILE ASSIGN TO PRINTER, DCP-T300.
* ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD PHONE-FILE.
* LABEL RECORDS ARE STANDARD.
01 PHONE-RECORD.
05 PHONE-LAST-NAME PIC X(20).
05 PHONE-FIRST-NAME PIC X(20).
05 PHONE-NUMBER PIC X(15).
05 PHONE-EXT PIC X(5).
FD PRINTER-FILE.
01 PRINTED-RECORD PIC X(80).
WORKING-STORAGE SECTION.
01 HOW-MANY PIC 999.
01 ENTRY-FIELD PIC ZZZ.
01 PRINT-LINES PIC 99 VALUE ZEROES.
01 FORMATTED-NUMBER.
05 FILLER PIC X(6) VALUE "(404)".
05 FILLER VALUE "555-".
06 PHONE-COUNTER PIC 9(4) VALUE ZERO.
PROCEDURE DIVISION.
PROGRAM-BEGIN.
PERFORM OPENING-PROCEDURE.
PERFORM GET-HOW-MANY.
MOVE ZEROES TO PRINT-LINES.
PERFORM ADD-RECORD VARYING PHONE-COUNTER FROM 1 BY 1 UNTIL
PHONE-COUNTER > HOW-MANY.
PERFORM CLOSING-PROCEDURE.
PROGRAM-DONE.
STOP RUN.
OPENING-PROCEDURE.
OPEN OUTPUT PHONE-FILE.
OPEN OUTPUT PRINTER-FILE.
CLOSING-PROCEDURE.
CLOSE PHONE-FILE.
MOVE SPACE TO PRINTED-RECORD.
WRITE PRINTED-RECORD BEFORE ADVANCING PAGE.
CLOSE PRINTER-FILE.
GET-HOW-MANY.
DISPLAY "How many test entries (1-999): ".
ACCEPT ENTRY-FIELD.
MOVE ENTRY-FIELD TO HOW-MANY.
ADD-RECORD.
PERFORM FORMAT-THE-RECORD.
PERFORM ADD-THIS-RECORD.
FORMAT-THE-RECORD.
MOVE "Joshua-------------X" TO PHONE-FIRST-NAME.
MOVE "Johnson------------X" TO PHONE-LAST-NAME.
MOVE "12345" TO PHONE-EXT.
MOVE FORMATTED-NUMBER TO PHONE-NUMBER.
ADD-THIS-RECORD.
WRITE PHONE-RECORD.
PERFORM PRINT-THIS-RECORD.
PRINT-THIS-RECORD.
IF PRINT-LINES NOT < 55
PERFORM NEW-PAGE
END-IF.
MOVE PHONE-RECORD TO PRINTED-RECORD.
WRITE PRINTED-RECORD BEFORE ADVANCING 1.
ADD 1 TO PRINT-LINES.
NEW-PAGE.
MOVE SPACE TO PRINTED-RECORD.
WRITE PRINTED-RECORD BEFORE ADVANCING PAGE.
MOVE ZEROES TO PRINT-LINES.
JCantero
4 de diciembre de 2018, 17:19
Asi no puedes.
Debes de ponerlo entre comillas:
SELECT PRINTER-FILE ASSIGN TO PRINTER, "DCP-T300".
o definir la variable dcp-t300 y asignarle un valor en working o en la procedure.
01 dcp-t300 pic x(80) value "DCP-T300".
---------- Post añadido : 17:19 ---------- Post anterior : 12:13 ----------
El codigo que has puesto en el foro corrigiendo lo que te he comentado y funciona bien.
Lo he probado con el OpenCobolIde de windows, aunque tambien debe funcionar con el resto de sistemas operativos.
Aqui te dejo el link de los IDEs por si fuera de tu interes.
https://launchpad.net/cobcide/+download
vBulletin v3.8.7, Derechos ©2000-2026, Jelsoft Enterprises Ltd.