2016-11-21 3 views
0

Nehmen wir an, ich EXEC ein COBOL-Programm von JCL, mit einer SYSIN DD, um Daten bereitzustellen.AKZEPTIEREN VON SYSIN im Unterprogramm

Wenn das Programm dann CALLs ein COBOL-Unterprogramm, und einige Daten noch von der Eingabe verfügbar ist, wird das Unterprogramm in der Lage sein, sie mit einer ACCEPT-Anweisung zu lesen?

Oder ist die SYSIN nur über das Hauptprogramm der Laufeinheit zugänglich, das von der JCL aufgerufen wird?

Edit: Ich denke, das wäre eine schlechte Codierung Praxis. Ich beabsichtige nicht, es zu benutzen, und brauche auch keine besseren Alternativen, die mir bekannt sind (wie das Lesen der Eingabegerätedaten aus den Hauptdaten und deren Weiterleitung an Unterprogramme über ihre LINKAGE).

Eigentlich schreibe ich nicht COBOL-Code, sondern studiere/verarbeite es, also bin ich am "corner case" -Verhalten interessiert, um mein Verständnis der COBOL-Semantik zu verfeinern.

+0

Ich weiß nicht viel über JCL, aber im Allgemeinen "blockiert" ein COBOL-Hauptprogramm nichts - das hängt davon ab, wie Sie die Daten erhalten. Wenn es einfach "ACCEPT" (von SYSIN) ist, wird jedes "ACCEPT" bis zum nächsten Zeilenumbruch gelesen. Da das SO ist: Was hast du schon probiert? Wie erhält der COBOL-Code tatsächlich die Quelle? –

+1

Es gibt keine "SYSIN DD" -Klausel. DD ist eine JCL-Anweisung, SYSIN ist ein Name, der die in der JCL angegebene Ressource mit einem Programm verbindet, das diesen Namen intern verwendet. Dies wäre eine schreckliche Idee, die das Verständnis für das, was Ihre Programme tun, viel schwieriger als nötig machen würde. Wenn Sie mehrere "Funktionscodes" auf Ihrer SYSIN definieren möchten, schreiben Sie ein Programm, das ACCEPT (noch besser, lesen Sie einfach wie normal) und rufen Sie das an mehreren Orten. Wenn die Funktionen diskret sind, verwenden Sie für bestimmte Zwecke eine separate DD. Andere Möglichkeiten. Probier einfach nicht, was du vorgeschlagen hast. –

+1

Und nein, ich weiß nicht, was es tun würde. Es mag genug geben, was SYSIN "besonders" macht, damit es funktioniert, aber es ist so eine schlechte Idee, dass ich nie auf jemanden gestoßen bin, der es versucht hat. –

Antwort

0

Sie können nur die ACCEPT auf dem Hauptprogramm verwenden. Wenn Sie Informationen senden möchten, sollten Sie eine Kopie verwenden.

+0

Danke für deine Antwort! Ich würde eher mit Ihnen übereinstimmen, aber haben Sie irgendeine Referenz (Handbuch, Webseite ...), um Ihre Behauptung zu unterstützen? Wir waren uns alle einig, dass es schlecht wäre, etwas anderes zu tun. Diese Frage bezieht sich jedoch auf das tatsächliche Laufzeitverhalten in diesem Eckfall. – oparisy

Verwandte Themen