Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   GnuCOBOL (OpenCOBOL) (https://www.cobolforo.es/forumdisplay.php?f=90)
-   -   [Sintaxis] Imprimir en una impresora puerto USB (Linux) (https://www.cobolforo.es/showthread.php?t=924)

dariodr 3 de diciembre de 2018 15:19

Imprimir en una impresora puerto USB (Linux)
 
Hola amigos coboleros, tengo una duda:
Con esta orden
Código COBOL:
  1. FILE-CONTROL.
  2.            SELECT OPTIONAL PHONE-FILE ASSIGN TO "PHONE.DAT"
  3.                ORGANIZATION IS SEQUENTIAL.
creo un archivo fisico en disco llamado "PHONE.DAT"

Con esta otra orden
Código COBOL:
  1. SELECT PRINTER-FILE ASSIGN TO PRINTER
  2.                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
Código COBOL:
  1.  
  2.            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:

Código COBOL:
  1.  
  2.  
  3.           select impresora assign to printer, nombre-impresora
  4.                            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

Imprimir en Linux
 
Este es el codigo, donde asigno el nombre de la impresora.

Código COBOL:
  1.        IDENTIFICATION DIVISION.
  2.        PROGRAM-ID. PHNBLD01.
  3.  
  4.        ENVIRONMENT DIVISION.
  5.        INPUT-OUTPUT SECTION.
  6.        FILE-CONTROL.
  7.            SELECT OPTIONAL PHONE-FILE ASSIGN TO "PHONE.DAT"
  8.                ORGANIZATION IS SEQUENTIAL.
  9.  
  10.            SELECT PRINTER-FILE ASSIGN TO PRINTER, DCP-T300.
  11.      *         ORGANIZATION IS LINE SEQUENTIAL.
  12.  
  13.        DATA DIVISION.
  14.        FILE SECTION.
  15.        FD  PHONE-FILE.
  16.      *     LABEL RECORDS ARE STANDARD.
  17.        01 PHONE-RECORD.
  18.            05 PHONE-LAST-NAME      PIC X(20).
  19.            05 PHONE-FIRST-NAME     PIC X(20).
  20.            05 PHONE-NUMBER         PIC X(15).
  21.            05 PHONE-EXT            PIC X(5).
  22.  
  23.        FD  PRINTER-FILE.
  24.        01  PRINTED-RECORD          PIC X(80).
  25.  
  26.        WORKING-STORAGE SECTION.
  27.        01  HOW-MANY           PIC 999.
  28.        01  ENTRY-FIELD        PIC ZZZ.
  29.        01  PRINT-LINES        PIC 99 VALUE ZEROES.
  30.        01  FORMATTED-NUMBER.
  31.            05 FILLER          PIC X(6) VALUE "(404)".
  32.            05 FILLER          VALUE "555-".
  33.            06 PHONE-COUNTER   PIC 9(4) VALUE ZERO.
  34.  
  35.        PROCEDURE DIVISION.
  36.        PROGRAM-BEGIN.
  37.            PERFORM OPENING-PROCEDURE.
  38.            PERFORM GET-HOW-MANY.
  39.            MOVE ZEROES TO PRINT-LINES.
  40.            PERFORM ADD-RECORD VARYING PHONE-COUNTER FROM 1 BY 1 UNTIL
  41.                PHONE-COUNTER > HOW-MANY.
  42.            PERFORM CLOSING-PROCEDURE.
  43.  
  44.        PROGRAM-DONE.
  45.            STOP RUN.
  46.  
  47.        OPENING-PROCEDURE.
  48.            OPEN OUTPUT PHONE-FILE.
  49.            OPEN OUTPUT PRINTER-FILE.
  50.  
  51.        CLOSING-PROCEDURE.
  52.            CLOSE PHONE-FILE.
  53.            MOVE SPACE TO PRINTED-RECORD.
  54.            WRITE PRINTED-RECORD BEFORE ADVANCING PAGE.
  55.            CLOSE PRINTER-FILE.
  56.  
  57.        GET-HOW-MANY.
  58.            DISPLAY "How many test entries (1-999): ".
  59.            ACCEPT ENTRY-FIELD.
  60.            MOVE ENTRY-FIELD TO HOW-MANY.
  61.  
  62.        ADD-RECORD.
  63.            PERFORM FORMAT-THE-RECORD.
  64.            PERFORM ADD-THIS-RECORD.
  65.  
  66.        FORMAT-THE-RECORD.
  67.            MOVE "Joshua-------------X" TO PHONE-FIRST-NAME.
  68.            MOVE "Johnson------------X" TO PHONE-LAST-NAME.
  69.            MOVE "12345" TO PHONE-EXT.
  70.            MOVE FORMATTED-NUMBER TO PHONE-NUMBER.
  71.  
  72.        ADD-THIS-RECORD.
  73.            WRITE PHONE-RECORD.
  74.            PERFORM PRINT-THIS-RECORD.
  75.  
  76.        PRINT-THIS-RECORD.
  77.            IF PRINT-LINES NOT < 55
  78.                PERFORM NEW-PAGE
  79.            END-IF.
  80.            MOVE PHONE-RECORD TO PRINTED-RECORD.
  81.            WRITE PRINTED-RECORD BEFORE ADVANCING 1.
  82.            ADD 1 TO PRINT-LINES.
  83.  
  84.        NEW-PAGE.
  85.            MOVE SPACE TO PRINTED-RECORD.
  86.            WRITE PRINTED-RECORD BEFORE ADVANCING PAGE.
  87.            MOVE ZEROES TO PRINT-LINES.

JCantero 4 de diciembre de 2018 17:19

Asi no puedes.

Debes de ponerlo entre comillas:

Código COBOL:
  1.  SELECT PRINTER-FILE ASSIGN TO PRINTER, "DCP-T300".

o definir la variable dcp-t300 y asignarle un valor en working o en la procedure.

Código COBOL:
  1.       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


La franja horaria es GMT +2. Ahora son las 16:19.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.