قراءة ستوين (سيسين) في كوبول
سؤال
أريد أن أقرأ الخطوط من 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 (مثل العودة).