سؤال

أريد أن أقرأ الخطوط من Stdin (AKA Sysin) في Cobol. في الوقت الحالي أريد فقط طباعتها حتى أعرف أنني حصلت عليها. من كل ما أقرأه يبدو أنه يجب أن يعمل هذا:

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.

أن تجمع (باستخدام Open-Cobol و Cobc -x)، ولكن تشغيله أحصل عليه:

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

ما الخطأ الذي افعله؟

هل كانت مفيدة؟

المحلول

اقترح لي ما يلي على منتديات أوبكوبول.

SELECT SYSIN ASSIGN TO KEYBOARD ORGANIZATION LINE SEQUENTIAL.

إنها لوحة مفاتيح الكلمات الرئيسية التي تجعلها تعمل.

على ما يبدو العرض هو كلمة مماثلة ل stdout، لكنني لم اختبر ذلك.

نصائح أخرى

تعود My Cobol إلى DPS-6 Minicomputer Runnong GCOS-6 ومستمرت في لمست أنه في عام 1992. ولكن مرة أخرى ثم استخدمنا قبول للحصول على مدخلات من Stdin.

يمكنك فقط استخدام القبول الكلمة الأساسية للاستيلاء على إخراج لوحة المفاتيح. loop حتى تصل إلى كلمة أساسية مثل "النهاية"، أو يمكنك استخدام قيمة HEX ل EOF (1A، وأعتقد).

كما هو الحال في:

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.

سيؤدي ذلك إلى تحمل كل شيء إلى علامة EOL (مثل العودة).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top