Ich versuche, einen internen Eintrag in Cobol aufzurufen. Der Aufruf ist OK, aber das Problem, dass es einige Absätze nach dem Eintrag gibt, die auch falsch ausgeführt werden.Stoppen Sie den Effekt des Aufrufs eines Eintrags
Hier ist mein Programm:
IDENTIFICATION DIVISION.
PROGRAM-ID. ENTR1POW.
DATA DIVISION.
WORKING-STORAGE SECTION.
LOCAL-STORAGE SECTION.
PROCEDURE DIVISION.
display "BEFORE CALL NOM_PROC1======================="
PERFORM NOM_PROC1 THRU E--NOM_PROC1
display "AFTER CALL NOM_PROC1======================="
display "CALL NOM_PROC2============================="
PERFORM NOM_PROC2 THRU E--NOM_PROC2
display "CALL ENTRY1============================"
CALL 'ENTRY1'
GOBACK.
NOM_PROC1.
display "PGM ENTR1POW: BEGIN NOM_PROC1"
display "PGM ENTR1POW: END NOM_PROC1"
CONTINUE.
E--NOM_PROC1.
EXIT.
NOM_PROC2 SECTION.
display "PGM ENTR1POW: BEGIN NOM_PROC2"
ENTRY 'ENTRY1'
display "===========BEGIN ENTRY ENTRY1"
display "===========END ENTRY ENTRY1"
ENTRY 'ENTRY2'
display "===========BEGIN ENTRY ENTRY2"
display "===========END ENTRY ENTRY2"
ENTRY 'ENTRY3'
display "===========BEGIN ENTRY ENTRY3"
display "===========END ENTRY ENTRY3"
display "PGM ENTR1POW: END NOM_PROC2"
CONTINUE.
E--NOM_PROC2.
EXIT.
NOM_PROC3 SECTION.
display "PGM ENTR1POW: BEGIN NOM_PROC3"
display "PGM ENTR1POW: END NOM_PROC3"
CONTINUE.
E--NOM_PROC3 SECTION.
EXIT.
NOM_PROC4.
display "PGM ENTR1POW: BEGIN NOM_PROC4"
display "PGM ENTR1POW: END NOM_PROC4"
CONTINUE.
E--NOM_PROC4.
EXIT.
Die Ausgabe, die ich erhalten:
BEFORE CALL NOM_PROC1=======================
PGM ENTR1POW: BEGIN NOM_PROC1
PGM ENTR1POW: END NOM_PROC1
AFTER CALL NOM_PROC1=======================
CALL NOM_PROC2=============================
PGM ENTR1POW: BEGIN NOM_PROC2
===========BEGIN ENTRY ENTRY1
===========END ENTRY ENTRY1
===========BEGIN ENTRY ENTRY2
===========END ENTRY ENTRY2
===========BEGIN ENTRY ENTRY3
===========END ENTRY ENTRY3
PGM ENTR1POW: END NOM_PROC2
CALL ENTRY1============================
===========BEGIN ENTRY ENTRY1
===========END ENTRY ENTRY1
===========BEGIN ENTRY ENTRY2
===========END ENTRY ENTRY2
===========BEGIN ENTRY ENTRY3
===========END ENTRY ENTRY3
PGM ENTR1POW: END NOM_PROC2
PGM ENTR1POW: BEGIN NOM_PROC3
PGM ENTR1POW: END NOM_PROC3
PGM ENTR1POW: BEGIN NOM_PROC4
PGM ENTR1POW: END NOM_PROC4
Ich denke, dass der Anruf auf die Absätze NOM_PROC3 und NOM_PROC4 dürfen nicht passieren.
Ich kown, dass, wenn ich den Absatz NOM_PROC2 in das Ende des Programms verschoben, dann wird mein Problem gelöst werden, aber ich möchte das tun? Gibt es einen anderen Weg, um mein Problem zu lösen? Vielen Dank für Ihre Antwort. –
Welchen Compiler benutzen Sie? Das ENTRY soll nicht in dem Programm sein, das es aufruft, es soll in einem anderen Programm sein. Was versuchst du zu machen? Wie @cschneid gesagt hat, ist ein "enthaltenes" oder "verschachteltes" Programm wahrscheinlich mehr, was Sie wollen. Sie werden sich auch verwirren, wenn Sie denken, dass ein PERFORM ein CALL ist. Es ist nicht, also sind die Nachrichten falsch. –