Domanda

Voglio leggere le linee di STDIN (aka SYSIN) in COBOL. Per ora voglio solo stamparli in modo che so io li ho. Da tutto quello che sto leggendo sembra che questo dovrebbe funzionare:

IDENTIFICATION DIVISION.
PROGRAM-ID. APP.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.

    SELECT SYSIN ASSIGN TO DA-S-SYSIN ORGANIZATION LINE SEQUENTIAL.

DATA DIVISION.
FILE SECTION.

FD SYSIN.
01 ln PIC X(255).
    88 EOF VALUE HIGH-VALUES.
WORKING-STORAGE SECTION.

PROCEDURE DIVISION.
    OPEN INPUT SYSIN
    READ SYSIN
      AT END SET EOF TO TRUE
    END-READ
    PERFORM UNTIL EOF
        DISPLAY ln
        READ SYSIN
            AT END SET EOF TO TRUE
        END-READ
    END-PERFORM
    CLOSE SYSIN
    STOP RUN.

che compila (utilizzando open-COBOL e cobc -x), ma che lo gestisce ottengo:

libcob: File does not exist (STATUS = 35) File : ''

Che cosa sto facendo di sbagliato?

È stato utile?

Soluzione

Il seguente è stato suggerito a me sul OpenCOBOL forum .

SELECT SYSIN ASSIGN TO KEYBOARD ORGANIZATION LINE SEQUENTIAL.

E 'la parola chiave tastiera che lo fa funzionare.

A quanto pare DISPLAY è una parola simile per STDOUT, ma non ho ancora testato questo.

Altri suggerimenti

Il mio COBOL risale al DPS-6 minicomputer runnong GCOS-6 e mi è durato toccato che nel 1992. Ma allora abbiamo usato ACCETTA per ricevere input da stdin.

Si può semplicemente utilizzare la parola chiave ACCEPT per afferrare l'uscita della tastiera. Loop attraverso fino a colpire una parola chiave come 'fine', oppure è possibile utilizzare il valore esadecimale di EOF (1A, credo).

Come in:

1000-YOUR-PARAGRAPH.
  ACCEPT WS-YOUR-VARIABLE.
  DISPLAY WS-YOUR-VARIABLE.
  IF WS-YOUR-VARIABLE IS NOT EQUAL TO EOF
    THEN GO TO 1000-YOUR-PARAGRAPH
  ELSE GO TO 1090-EXIT
  END-IF.
1090-EXIT.
  EXIT.

Ci vorrà tutto fino a un indicatore EOL (ad esempio ritorno).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top