[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Nov 2002
    Beiträge
    13

    Post Parameterübergabe von RPG nach CL

    Hallo Leute,

    Ich habe ein komisches Problem bei einer Parameterübergabe:

    Zuerst wird ein numerischer Wert linksbündig in ein 8-Stelliges *CHAR-Feld übergeben.

    Code:
    MOVEL#3AYNB  P2AYNB
    Dann wird ein CL aufgerufen.

    Code:
    CALL  'GVRDOC'               90
    PARM           P1B5CD
    PARM  'P'      P1ART
    PARM           P2AYNB
    PARM           P2A4CD
    PARM           P1BSTX
    PARM           P1MOD
    So weit, so gut.

    Im CL interpretiert der Rechner mir allerdings die Variable P2AYNB als Inverse-Stellen.

    Muss die Variable numerisch oder Alpha-numerisch an das CL weitergegeben werden?

    Gruss
    FrEEk


    [Dieser Beitrag wurde von FrEEk am 21. November 2002 editiert.]
    Wer anderen eine Grube gräbt besitzt ein Grubengrabgerät.

  2. #2
    Registriert seit
    Jan 2001
    Beiträge
    340

    Post

    im CL müssen die Parameter in der gleichen Reihenfolge und vom selben Typ sein.
    Code:
    RPG 5p 2  :  CL *dec ( 5 2 )
    RPG 5a    :  CL *char 5
    P2AYNB würde ich noch mal prüfen. Sieht eigentlich wie ein numerisches Feld ( Cool:2E NBR ? ) aus.

    hth + Gruß
    Rolf

  3. #3
    Registriert seit
    Nov 2002
    Beiträge
    13

    Post

    Hmm, auf unserem System geben wir fast nur Alphanumerische Werte an CLs weiter, da wir wir viele Jobs im Batch laufen lassen. Und im Batch gibt es immer Probleme (Dezimaldatenfehler!), wenn mal jemand vergisst ein numerisches Feld sauber zu initialisieren. Daher fast immer *CHAR.

    Ein DCL-Statement im CL sieht dann so aus:

    Code:
     DCL  VAR(&P0AYNB) TYPE(*CHAR) LEN(6)
    oder dann:

    Code:
     DCL VAR(&P0AYNB) TYPE(*DEC) LEN(6 0)
    Wer anderen eine Grube gräbt besitzt ein Grubengrabgerät.

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.928

    Post

    Hallo,

    andere Frage wie sind die Felder aus dem MOVEL definiert.
    Vielleicht sollte das Feld P2AYNB vor dem MOVE initialisiert werden.

    Birgitta
    Birgitta Hauser

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

  5. #5
    Registriert seit
    Nov 2002
    Beiträge
    13

    Post

    Folgendermassen:

    Code:
    MOVE *BLANK P2AYNB   8
    MOVEL#3AYNB P2AYNB
    Also 8 Alphanumerische Stellen.

    Initialisierung erfolgt mit dem Definitionsstatement. Die effektive Wertzuweisung erst dahinter.

    Das selbe Feld ist im CL so

    Code:
    DCL VAR(&P0AYNB) TYPE(*CHAR) LEN(8)
    definiert.
    Wer anderen eine Grube gräbt besitzt ein Grubengrabgerät.

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. Parameterübergabe RPG zu C
    By Marsman in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 31-03-06, 17:24
  3. Antworten: 5
    Letzter Beitrag: 05-12-05, 09:24
  4. Programm in RPG / CL schreiben
    By notbad in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 05-04-05, 12:00
  5. Notes Mail-Client aus RPG oder CL öffnen / starten
    By karin-vogelmann in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 08-06-01, 19:22

Berechtigungen

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