[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2004
    Beiträge
    476

    Prototypenbeschreibung für externe Programme in total free rpg

    Hallo zusammen,

    kann mir jemand sagen was in der nachfolgenden Prototypenbeschreibung nicht stimmt, denn er bringt mir RNF7030 für die Felder die in der Prototypenbeschreibung angegeben sind.

    dcl-pr SndPssrMsg extpgm('PUT91C');
    P91MsgId char(7);
    P91Sts char(5);
    P91WPID char(10);
    end-pr;
    dcl-pr Put251R extpgm('PUT251R');
    *n char(10000) const;
    *n char(1) const;
    *n char(1) const;
    *n char(25) const;
    *n char(25) const;
    *n char(10000) const;
    P251NewString char(10000);
    P251AryErrPos packed(5:0) dim(10000);
    P251NoOfErrPos packed(5:0);
    end-pr;


    Viele Grüße Harald

  2. #2
    Registriert seit
    Jan 2012
    Beiträge
    1.232
    Hallo Harald,

    sieht für mich auf den ersten Block gut aus. Meint der Compiler wirklich diese Felder oder hast du die Felder nochmal irgendwo im Programm benutzt und nicht deklariert?

  3. #3
    Registriert seit
    Jan 2012
    Beiträge
    1.232
    Durch die Deklaration im Prototype sind die Felder NOCH NICHT im Programm deklariert!! (Glaube ich zumindest)

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.780
    Das ist nicht nur Glauben.
    Der Prototyp (PR) beschreibt ja nur, was du übergeben sollst, vergleichbar zum Template einer DS.
    Im Gegensatz zum PI (Prozedur Interface), dass die Felder dann auch definiert.

    dcl-pr MyPgm extpgm('XXX');
    p1 char(20) const;
    end-pr;

    dcl-s MyValue char(5);
    dcl-s MyV2 packed(10:0);

    MyPgm('ABCD');
    MyPgm(MyValue);
    MyPgm(%char(MyV2));

    Es wäre sonst blöd, wenn ich erst "p1=xxx; MyPgm(P1);" schreiben müsste.
    Durch "const" wird i.Ü. eine Speicherkopie erstellt, wenn der Wert nicht passen sollte.
    Also ggf. abgeschnitten oder mit Leerzeichen gefüllt.
    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

  5. #5
    Registriert seit
    May 2004
    Beiträge
    476
    Danke für die Hilfe

    Ok, dann kann ich aber auch *N angeben bei der Prototypenbeschreibung anstatt Variablennamen. Wenn die Variablen nicht deklariert sind wozu dann angeben?

    Ich dachte die wären deklariert wie auch bei dcl-pi

  6. #6
    Registriert seit
    Jan 2012
    Beiträge
    1.232
    Der Compiler braucht die Angaben, damit er prüfen kann, ob bei externen Programmaufrufen die Parameter bei der Übergabe passen. Ob *N geht, habe ich noch nicht ausprobiert, kann aber gut sein. Es geht dem Compiler nur um die Reihenfolge und um die Datentypen und Längen der Parameter und natürlich, ob sie const sind oder ob sie optional sind.

  7. #7
    Registriert seit
    Jan 2012
    Beiträge
    1.232
    Der Einfachheit halber kopieren viele RPG-Entwickler die PI Anweisung aus dem Programm, das aufgerufen werden soll und ändern das PI dann in PR und ergänzen das extpgm usw.
    Dadurch ist es durchaus üblich, dieselben Variablennamen im Prototyp zu haben wie das aufgerufene Programm sie erwartet. Aber es sind eben nur Namen, keine deklarierten Variablen.

    Wir handhaben das bei uns so, dass nach dem Erstellen eines Programms aus der PI Anweisung ein Prototyp gebastelt wird und in einer eigenen Sourcedatei als Copy-Strecke abgelegt wird. Dann müllt man seinen Code nicht mit zahlreichen Prototypes voll, wenn man mehrere Programme aufrufen will.

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.780
    Und es gibt die, die das PR definieren und im PI mit like(pXxx) die Definitionen übernehmen können.
    Wenn dann der PR angepasst wird, z.B. Längen-Info, übernimmt die PI das dann automatisch.
    Denn was anderes als ein Template ist die PR ja nicht.

    Und auch mit RDi gibts einen weiteren Vorteil:
    Wenn du die Autovervollständigung verwendest, wird der PR direkt als Aufruf mit den Parameternamen erstellt und du brauchst nur die Namen durch die richtigen Namen austauschen.
    Und wo Auftragsnummer drinsteht, gehört dann auch eine Auftragsnummer rein.
    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

  9. #9
    Registriert seit
    May 2004
    Beiträge
    476
    Ok, Vielen Dank an alle

Similar Threads

  1. Externe Dateifelder indexierbar machen in Free
    By peterspeer in forum NEWSboard Programmierung
    Antworten: 15
    Letzter Beitrag: 03-02-23, 16:09
  2. Total free rpg
    By harkne in forum NEWSboard Programmierung
    Antworten: 39
    Letzter Beitrag: 07-11-19, 10:56
  3. Systemdatenstruktur(ESDS) in total free
    By Dominic K. in forum NEWSboard Programmierung
    Antworten: 11
    Letzter Beitrag: 04-04-17, 17:25
  4. Total Free und SQL --> Eine schlechte Lösung?
    By ExAzubi in forum NEWSboard Programmierung
    Antworten: 24
    Letzter Beitrag: 19-07-16, 10:38
  5. Total free RPG
    By philsturm in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 05-09-14, 10:09

Berechtigungen

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