[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Mar 2002
    Beiträge
    68

    Post Umwandeln ILE RPG Programm

    Hallo ILE Spezialisten,

    will ein ILE RPG Programm umwandeln, in dem 2 ILE CL Programme über "CALLB" aufgerufen werden.

    Jetzt bekomm ich bei der Umwandlung im Jobprotokoll folgende Fehlermeldungen:

    Definition für Symbol 'LVRMDL02' nicht gefunden.
    Definition für Symbol 'LVRMDL01' nicht gefunden.


    Nachricht . . . : Definition für Symbol 'LVRMDL02' nicht gefunden.
    Ursache . . . . : Für Referenz LVRMDL02 in *MODULE Objekt LVRPGMEM_N der
    Bibliothek QTEMP wurde keine Definition gefunden. Entweder ist die Definition nicht vorhanden, oder sie gehört nicht zu Demselben Datentyp oder derselben Prozedurart wie die Referenz.
    Was muss ich tun ? Wo muss ich such ?

  2. #2
    Registriert seit
    Apr 2002
    Beiträge
    24

    Post

    Du solltes das Programm in zwei Schritten erstellen.

    1. mit CRTMOD

    2. mit CRTPGM, wobei hier unter dem Parameter Module alle Einzelmodule eingetragen werden müssen.

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    68

    Post

    Vielen Dank für die Antwort,

    wann setzt man den Befehl CRTBNDPGM zum
    umwandeln ein ?

  4. #4
    Registriert seit
    Apr 2002
    Beiträge
    24

    Post

    CRTPNDPGM kenne ich nicht. Solltest du CRTBNDRPG meinen, ist das der Befehl der ein ILE-RPG-Programm erstellt analog zu dem Befehl CRTRPGPGM.

    Gruß Holli

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.873

    Post

    Hallo Alex,

    Du meinst bestimmt die Befehle CRTBNDRPG, CRTBNRCBL usw.
    Mit diesen Befehlen können Quellen umgewandelt werden, die aus genau einem Modul bestehen, d.h. es dürfen keine Module oder Service-Programme mit dem Befehl CALLB aufgerufen werden.
    Bei der Compilierung wird zunächst ein Modul erstellt. Aus diesem Modul dann ein Programm generiert und das Modul-Objekt wieder gelöscht.

    Anmerkung :
    Nur Programme können mit dem Befehl CALL aufgerufen werden (dynamisches Binden)
    Module und Service-Programme müssen mit dem Befehl CALLB aufgerufen werden.
    Der Befehl CALLP für den prototypisierten Aufruf ist eigentlich eine Compiler-Anweisung.
    Je nach dem, ob ein Programm oder Modul oder Service-Programm aufgerufen wird, wird der Befehl in einen CALL oder CALLB umgewandelt.

    Werden Module mit dem Befehl CALLB in einem Programm aufgerufen, wird zum Compile-Zeitpunkt eine Kopie des Moduls in das Programm eingebunden. (Bind by copy) Daraus folgt, wird ein solches Modul geändert, müssen alle Programme, in denen dieses Modul aufgerufen wird neu erstellt werden (CRTPGM oder UPDPGM).

    Möchte man dies vermeiden, erstellt man aus den Modulen Service Programme und bindet diese in die Programme ein. Zum Compile-Zeitpunkt wird ein Symbol für das Service-Programm in das Programm eingebunden.(Bind by Reference) Über dieses Symbol wird das entsprechende Service-Programm zum Aktivierungs-Zeitpunkt gefunden.
    Ändert sich das Modul, muss nur das zugehörige Service-Programm geändert werden (CRTSRVPGM oder UPDSRVPGM) und alle Programme, die dieses Service-Programm aufrufen arbeiten mit der neuen Version.

    Ich hoffe das erklärt einiges

    B.Hauser
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  6. #6
    Registriert seit
    Mar 2002
    Beiträge
    68

    Post

    Danke für die ausführliche Erläuterung !

  7. #7
    Registriert seit
    Jun 2001
    Beiträge
    727

    Post

    Hallo Alex,
    der CMD CRTBNDRPG wurde in erster Linie dazu entwickelt RPG/III Programme (RPG/38 bzw. RPG/400 in der OPM-Umgebung) in die RPG/IV ILE-Umgebung zu retten. (in Verbindung mit CVTRPGSRC)
    D.h. man kann zwar die meisten neuen Sprachelemente von RPG/IV verwenden, allerdings ohne die Konzepte von ILE.
    Die Programme verhalten sich dann genauso wie OPM-Programme (laufen in der *DFTACTGRP und statisches Binden ist nicht möglich, also nur CALL)

    Sven

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.873

    Post

    Hallo Alex, Sven,

    es ist nicht gesagt, dass Programme die mittels CRTBNDxxx umgewandelt wurden auch in der Default Activation Group aktiviert werden.

    Default Activation Group ist nur der Unterlassungs-Wert.

    Dies ist vorallem dann notwendig, wenn das Programm in einer ILE-Umgebung laufen soll.
    z.B. wenn Commitment Control nur für die Activation Group (Unterlassungs-Wert) gestartet wurde.
    Oder zum Steuern von Dateiüberschreibungen (OVRDBF)

    B.Hauser
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

Similar Threads

  1. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 10:58
  2. Return ILE RPG
    By Squall in forum IBM i Hauptforum
    Antworten: 31
    Letzter Beitrag: 28-09-06, 17:53
  3. Java Programm aus ILE RPG aufrufen
    By PGMR in forum NEWSboard Java
    Antworten: 10
    Letzter Beitrag: 10-02-05, 10:33
  4. Java Programm aus ILE RPG aufrufen
    By PGMR in forum NEWSboard Programmierung
    Antworten: 0
    Letzter Beitrag: 02-02-05, 13:10
  5. Spools 1:1 in *PDF umwandeln
    By Kilianski in forum NEWSboard Server Software
    Antworten: 0
    Letzter Beitrag: 13-01-05, 13:55

Berechtigungen

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