[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Zitat Zitat von Fuerchau Beitrag anzeigen
    @Dieter:
    Wenn man den GOBACK vermeiden will, ist die Kombination EXIT PROGRAM, STOP RUN erforderlich.
    Wenn ein COBOL-Programm das erste der Rununit ist, macht das Programm nach dem EXIT PROGRAM nämlich weiter.
    Ist das nicht die letzte Anweisung der Quelle, läuft der in die nächsten Routinen rein, egal ob SECTION oder nicht.
    ... ich habe da mal gelernt:
    im COBOL Steuerprogramm (erstes der Run Unit) Ende mit STOP RUN.
    in COBOL Sub Programmen EXIT PROGRAM.
    und habe das auch auf /36 AS/400 und unter MVS immer so gemacht.
    Und wenn ich die COBOL Reference richtig gelesen habe, dann lässt der EXIT PROGRAM AND CONTINUE RUN UNIT. die ACTGRP am Leben.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Dies ist ja soweit auch korrekt.
    Aber wie alles im Leben werden die Welten schon mal gemischt.
    Solange du in der reinen COBOL-Welt bist ist ja auch fast alles OK.

    Per Definition war einmal ein Programm das erste in der Rununit.
    Bis jemand auf die Idee kam, das Programm mal aus einem anderen COBOL aufzurufen.
    Der wunderte sich dass der Aufruf nie zurückkam, da das Programm nun mal einen STOP RUN ausführte.

    Umgedreht wurde ein COBOL-Unterprogramm aus einem CLP im Batch aufgerufen.
    Das Unterprogramm wusste dies aber nicht und machte nach dem EXIT PROGRAM weiter.
    Nun muss man wissen, dass ein "PERFORM LABEL" kein echter Unterprogrammaufruf ist.
    Der Compiler generiert einen GOTO "hinter den Perform" am Ende des LABEL/SECTION (ein EXIT mitten in einer SECTION ist wirkungslos).
    Folgender Code führt dann zu einer Endlosschleife:

    MAIN SECTION.
    MAIN-000.
    PERFORM SUB
    EXIT PROGRAM.

    SUB SECTION.
    SUB-000.
    * mach was
    SUB-999.
    EXIT.

    Der Perform generiert hinter SUB-999 einen GOTO auf das EXIT PROGRAM-Statement.
    Der EXIT PROGRAM ist wirkungslos da ja erstes Programm in der RUN UNIT.
    Das Programm macht bei SUB SECTION einfach weiter.
    Der interne GOTO ist noch aktiv, das Programm macht bei EXIT PROGRAM weiter.

    Ein simpler GOBACK oder ein STOP RUN nach dem EXIT PROGRAM hätte das verhindert.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... ich vermeide zwar solche Konstruktionen, aber warum nicht: ich werde mir also in Zukunft angewöhnen zu dem Gürtel (EXIT PROGRAM.) noch Hosenträger (STOP RUN.) anzuziehen, dazwischen aber zumindest QMHSNDPM bemühen und eine Abbruch Message schicken (dann bräuchte ich auch die Hosenträger eigentlich nicht mehr).

    D*B
    ...,der sich jetzt auch an die alte Empfehlung erinnert als erstes ein COBOL Programm in den Callstack zu legen (kann ein wrapper von QMDEXC sein), damit die COBOL Runtime immer drin ist.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Lebensdauer von static Variablen
    By dschroeder in forum NEWSboard Programmierung
    Antworten: 17
    Letzter Beitrag: 22-01-15, 15:23
  2. Begrenzung im Debugger bei der Anzeige von Variablen erhöhen?
    By SourceCoder in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 03-04-14, 11:22
  3. Call Programm vs. Service-PGM
    By malzusrex in forum NEWSboard Programmierung
    Antworten: 17
    Letzter Beitrag: 15-11-13, 11:21
  4. CL Variablen konvertieren
    By danielfeurstein in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 22-07-02, 15:19
  5. Remote Function Call -> SAP
    By areichelt in forum NEWSboard SAP
    Antworten: 2
    Letzter Beitrag: 24-02-02, 16:44

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •