[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Apr 2002
    Beiträge
    792

    Parameterübergabe in Prozedur -> Compiler schmiert ab



    Also ich werd gleich verrückt. Was mach ich denn nur falsch. Ich will doch nur einen Parameter an eine Prozedur übergeben. So siehts aus

    DWriteXXX PR
    D Dat1 6S 0

    .
    .
    .
    .
    Feld aus Datenbank (10000%tig 6S 0) in Datum1 lesen

    /Free
    WriteXXX(Datum1);
    /End-Free


    .
    .
    .
    PWriteXXX B
    DWriteXXX PI
    D Dat1 6S 0
    /Free
    //Mach was mit dem Datum
    /End-Free
    PWriteXXX E

    Ich bekomme immer die Meldung:
    *RNF7535 30 246 001103 Art und Attribute von Parameter 1 stimmen nicht mit dem Prototyp überein.

    Was um alles in der Welt ist das Problem??? Ich hoffe mir kann jemand einen Tip geben und ich bin nicht einfach nur ein bissel blind vom ganzen Kaffee

    Gruß

    Sascha

  2. #2
    Registriert seit
    May 2002
    Beiträge
    1.121
    hallo sascha!

    bist du dir wirklich sicher, das in der DB das feld mit 6S 0 angegeben ist ?!?!
    ich habe an hand deines bsp. folgendes kleine proggie gemacht
    PHP-Code:
    h dftactgrp(*no)                         
                                             
    d True            c                   *On
    d Datum1          s              6s 0    
    d WriteXXX        pr                     
    d  dat1                          6s 0    
                                             
     
    /Free                                   
       WriteXXX
    Datum1 );                   
       *
    InLr  =  True;                       
     /
    End-Free                               
                                             
    p WriteXXX        b                      
    d WriteXXX        pi                     
    d  Dat1                          6s 0    
     
    /Free                                   
       Dat1 
    Dat1;                          
     /
    End-Free                               
    p WriteXXX        e 
    diese kann ich wandeln, wenn Datum1 mit 6S 0 angegeben ist.
    wenn es mit 6 0 oder 6p 0 def. ist, dann kann ich es nicht umwandeln. schau doch noch mal uff den db-feld

    tschau ronald

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Wenn der Feldname in einer anderen Datei auch definiert ist, nimmt RPG ggf. die optimierte Definition, also gepackt, an.
    Prüfe auch, ob das Feld ggf. mehrfach definiert ist (Compiler-Liste).

    Für den Parameter kannst du ach Option "value" nehmen, dann ist das fast egal.
    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

  4. #4
    Registriert seit
    Apr 2002
    Beiträge
    792
    mmm...das ist alles komisch.

    Wenn ich noch einmal ein Feld in der D-Karte angebe das auch 6S 0 ist und dann

    Feld = Datum1;
    WriteXXX(Feld);

    mache dann funktioniert es.
    Kann ich denn keinen Feldnamen direkt der Prozedur übergeben?

  5. #5
    Registriert seit
    Apr 2002
    Beiträge
    792
    Juhu,

    damit hast du mir jetzt den Feierabend gerettet. Das hätte mich heute Nacht noch beschäftigt. Der "Value" war's. Danke Baldur.

    Gruß

    Sascha

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von JonnyRico
    mmm...das ist alles komisch.

    Wenn ich noch einmal ein Feld in der D-Karte angebe das auch 6S 0 ist und dann

    Feld = Datum1;
    WriteXXX(Feld);

    mache dann funktioniert es.
    Kann ich denn keinen Feldnamen direkt der Prozedur übergeben?
    Wenn es sich um input only Felder handelt kannst Du das Schlüssel-Wort VALUE oder CONST verwenden. In diesem Fall wird ein temporäres Feld mit der erwarteten Feld-Definition generiert. Dann ist es egal, ob das Feld gepackt, gezont oder integer ist.

    In RPG werden gezonte Felder soweit möglich in gepackte Felder umgesetzt. Eine Möglichkeit gezonte Datei-Felder zu erhalten ist, die Datei als externe Datenstruktur anzugeben.
    Felder in Datenstrukturen werden nicht konvertiert, sondern das Format beibehalten.
    Damit wird dann auch das gezonte Feld an die Prozedur übergeben.

    Felder, die in den D-Bestimmungen definiert sind, werden ebenfalls nicht konvertiert.

    Werden gepackte Datei-Felder in Datenstrukturen ohne Angabe einer Definition hinterlegt, also nur aufgelistet, werden sie in gezonte Felder umgesetzt.

    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

Similar Threads

  1. Prozedur, in welchem Modul
    By loeweadolf in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 06-11-06, 15:05
  2. cpyfrmpcd --> cpyfrmstmf
    By malzusrex in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 26-07-06, 12:09
  3. strsst -> SB01
    By TARASIK in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 27-06-06, 13:32
  4. Spool -> PDF benötigte Lizenzprogramme
    By cseitz in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 20-06-06, 14:40
  5. Rückgabe von 2 Werten aus einer Prozedur
    By BUG in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 18-10-04, 13:55

Berechtigungen

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