[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2012
    Beiträge
    1.120

    *ENTRY PLIST versus dcl-pi

    Hallo,

    wir sind dabei, unsere letzten Probleme, die uns vom "total free format" abhalten, zu beseitigen. Das heißt, wir möchten unsere normalen (also Nicht-Serviceprogramme) von free format aus ausrufen können.

    In einem workshop haben wir letztens etwas ausprobiert. Und zwar haben wir die *ENTRY PLIST eines Programms durch eine dcl-pi Anweisung ausgetauscht. Weiß jemand, ob das technisch für irgendetwas gebraucht wird? Ich kann für das Programm, auch wenn es eine *ENTRY PLIST hat, ja trotzdem einen Prototyp deklarieren und es in einem anderen Programm im Free Format aufrufen.

    Letztlich also die Frage: Unterscheiden sich dcl-pi und *ENTRY PLIST in ihrer Funktionsweise?

    Dieter

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Dies ist nur eine unterschiedliche Schreibweise für das Selbe.
    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
    Aug 2001
    Beiträge
    2.873
    Wenn Du Prototyp und Procedure Interface anlegst und diese korrekt erfolgt eine Parameter-Prüfung bereits zur Compile-Zeit, Du kannst Input Only Parameter definieren und optionale Parameter prüfen.

    Durch eine Erweiterung in den letzten TRs bist Du nicht mehr gezwungen für jedes Programm mit Procedure Interface einen Prototypen anzulegen, d.h. beim Umwandeln des Programms genügt jetzt das Procedure Interface. Das macht Sinn, wenn ein Programm z.B. nur aus CL-Programmen aufgerufen wird.

    Wenn Du allerdings ein Programm im RPG-Free-Format aufrufen willst, bauchst Du einen Prototypen, der dem Procedure-Interface zumindest was die Anzahl und Definition der einzelnen Parameter-Felder angeht.

    Um sicher zugehen dass Prototyp und Procedure Interface übereinstimmen, sollte man den Prototypen auch in dem Programm, in dem das Procedure Interface definiert ist einbinden. Sofern ein Prototyp eingebunden ist wird dieser beim Compilieren mit den Procedure Interface abgeglichen. Stimmen beide nicht überein, kann das Programm nicht umgewandelt werden.

    Eine Mischung aus *ENTRY PLIST, Prototypen, CALL-Statements würde ich nicht empfehlen.

    Birgitta
    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

  4. #4
    Registriert seit
    Jan 2012
    Beiträge
    1.120
    Vielen Dank für eure Antworten. Wir möchten die Copy Strecken für unsere Prototypen nicht manuell schreiben, sondern wir möchten sie maschinell erzeugen. Wir haben dazu ein eigenes Compile Programm erstellt. Das Programm prüft, ob die Kompilierung geklappt hat und erzeugt nach erfolgreicher Kompilierung eine Copy Strecke für das Programm, indem es den Sourcecode untersucht. Das klappt auch soweit. Wir hätten nur gerne genau die Sicherheit, die Birgitta beschrieben hat: Nämlich den Prototyp in dem Programm, das gerade geändert und kompiliert wurde, einzubinden. Da beißt sich allerdings die Katze in den Schwanz: Wenn ich die Parameterliste in dem Programm erweitere, wird er das Programm nicht generieren, weil es nicht zum Prototyp passt. Da er das Programm nicht generiert, wird er aber auch die Copy Strecke nicht anpassen. Deshalb werden wir wohl erstmal darauf verzichten, den Prototyp in das Programm selbst einzutragen.

    Danke für alle Antworten.

    Dieter

  5. #5
    Registriert seit
    Jan 2007
    Beiträge
    905
    Hallo Dieter

    Kannste getrost verwenden, siehe hier:


    ctl-opt option(*NoDebugIO:*NoExpDDS:*SrcStmt)
    dftactgrp(*No)
    datfmt(*ISO)timfmt(*ISO);

    dcl-s DocType char(20)inz('Invoice');
    dcl-s Currency char(3)inz('EUR');
    dcl-s Language char(3)inz('ger');
    ************************************************** *******************

    dcl-pi *n;
    $DocType like(DocType);
    $Currency like(Currency);
    $Language char(3);
    end-pi;

    *inlr =*on;

    kf

  6. #6
    Registriert seit
    Jan 2012
    Beiträge
    1.120
    Vielen Dank. Dann steht dem totalen free format ja nichts mehr im Wege!
    Dieter.

Similar Threads

  1. Berechtigung physische versus logische Datei
    By Andreas Huyer in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 18-01-02, 07:15

Berechtigungen

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