[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jul 2007
    Beiträge
    30

    Umwandlung bricht mit Fehler CPD5D02 ab (Definition für Symbol ... nicht gefunden)

    Jetzt muss ich mich doch mal an die Profis wenden.

    Bei mir bricht die Umwandlung immer mit dem Fehler CPD5D02 ab (Definition für Symbol ... nicht gefunden). Das scheint im Bindeprozess stattzufinden. Ich verstehe nicht warum.

    Jetzt aber von Vorne:

    ich habe eine Prozedur in einem Serviceprogramm erstellt:
    Code:
         // Control Specifications
         Ctl-Opt
           Nomain;
         .
         .
         .
         // langen Barcode im Format GS128 parsen
         Dcl-PR Parse_GS128_Barcode ind;
           pi_Barcode char(74)   const; //Input
           po_EAN     zoned(14);        //Output
           po_MHD     date;             //Output
           po_Charge  char(20);         //Output
         End-PR;
         .
         .
         .
         Dcl-Proc Parse_GS128_Barcode export pgminfo(*yes);
    
             // Programm-Interface
             Dcl-PI Parse_GS128_Barcode ind;
               pi_Barcode char(74)  const; //Input
               po_EAN     zoned(14);       //Output
               po_MHD     date;            //Output
               po_Charge  char(20);        //Output
             End-PI;
    
         .
         .
         .
             // Wurde eine wichtige Information im Barcode gefunden?
             if  po_EAN     <> 0          //Ja
             or  po_MHD     <> *loval
             or  po_Charge  <> '';
                 return *on;
             else;
                 return *off;
             endif;
         .
         .
         .
         End-Proc Parse_GS128_Barcode;
    Ich habe diese Prozedur auch im Bindeprogramm aufgeführt:
    Code:
                 strpgmexp  signature(*gen) lvlchk(*yes) pgmlvl(*current)
                    export     symbol(Parse_GS128_Barcode)
                 endpgmexp
    Dann habe ich das Serviceprogramm ohne Fehler erstellt.

    Anschließend habe ich das Serviceprogramm in mein Bindeverzeichnis aufgenommen:
    Code:
    Aus-                                                ------Erstellung------
    wahl  Objekt      Art      Bibliothek  Aktivierung  Datum       Zeit      
                                                                              
          WAWSRV01    *SRVPGM  TEST        *IMMED       25.02.21    08:44:01

    Und nun möchte ich diese Prozedur in meinem Programm WAW165 vom Typ SQLRPGLE nutzen:
    Code:
          * Control Specifications
         h DftActGrp(*no) Actgrp(*new) BndDir('*LIBL/BIEBNDD')
         .
         .
         .
         d Parse_Barcode   pr              n   extproc('Parse_GS128_Barcode')
         d  pi_Barcode                   74a
         d  po_EAN                       14s 0
         d  po_MHD                         d
         d  po_Charge                    20a
         .
         .
         .
    
         // Langen Barcode parsen
         if  Parse_Barcode(bbarcdl:u25_ean:u25_mhd:u25_charge) = *on;
             // Bildschirmfelder füllen
         else;
             // Fehler ausgeben
         endif;
    Leider bekomme ich bei der Umwandlung meines Programmes WAW165 über die Auswahl 14 folgende Meldung im Joblog (Fehler CPD5D02):
    Code:
    Nachricht . . . :   Definition für Symbol 'Parse_GS128_Barcode' nicht         
      gefunden.                                                                   
    Ursache  . . . . :  Für Referenz Parse_GS128_Barcode in *MODULE Objekt WAW165 
      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. Fehlerbeseitigung:  Den Befehl      
      CRTPGM (Programm erstellen) wiederholen, wobei ein Objekt angegeben wird,   
      das eine Definition für Symbol Parse_GS128_Barcode enthält.
    Ich habe schon alles mögliche ausprobiert:
    - Programm WAW165 zuerst mit Auswahl 15 zu einem Modul wandeln (geht ohne Probleme)
    - anschließend CRTPGM mit Angabe meines Serviceprogrammes

    Aber es bleibt bei der gleichen Fehlermeldung.

    Was mache ich falsch?

    Gruß
    Artur Janzen

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Die Reihenfolge stimmt schon:
    Service:
    CRTRPGMOD
    CRTSRVPGM

    Hauptprogramm:
    CRTRPGPGM ...

    Hier sind die einzubindenden Serviceprogramme aufzuzählen. Besse wäre es ein Binderverzsichnis zu erstellen, das Serviceprogramm hinzuzufügen und im Hauptprogramm CTL-OPT BNDDIR(); zu verwenden.
    Wichtig ist die Beachtung der Groß-Kleinschreibung.
    In der SRV-Source gibst du den Namen ohne Hochkomma an, dann wird er in Großbuchstaben übersetzt.
    Prüfe mal die Schreibweise im DSPMOD der Exporte.
    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
    Jul 2007
    Beiträge
    30
    Die Großschreibung hat mein Problem gelöst. Ich danke dir für die schnelle Hilfe.

    Ich gebe jetzt in meinem Programm WAW165 die Prototype-Definition folgendermaßen an:

    d Parse_Barcode pr n extproc('PARSE_GS128_BARCODE')
    d pi_Barcode 74a
    d po_EAN 14s 0
    d po_MHD d
    d po_Charge 20a


    Und damit läuft es jetzt.

    Vielen Dank für die schnelle Hilfe.

    Gruß
    Artur Janzen

  4. #4
    Registriert seit
    Jan 2001
    Beiträge
    832
    HI,

    bei der dcl-pr Definition kann man auch extproc(*dclcase) angeben.
    Dann klappts auch

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Aber nur, wenn man in der SRVPGM-Quelle dann die Namen in Hochkomma packt.
    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

Similar Threads

  1. SQL-Precompiler Fehler gefunden ?
    By Fuerchau in forum NEWSboard Programmierung
    Antworten: 16
    Letzter Beitrag: 20-03-20, 14:31
  2. SQL Fehlermeldung : Spalte oder globale Variable nicht gefunden!!!
    By svente in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 05-12-16, 19:15
  3. Antworten: 4
    Letzter Beitrag: 23-02-16, 12:15
  4. V7R1 Fehler Umwandlung SQLRPGLE
    By Peet in forum NEWSboard Programmierung
    Antworten: 9
    Letzter Beitrag: 29-10-14, 08:54
  5. CRTRPGPGM nicht gefunden
    By DEVJO in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 13-11-02, 10:41

Tags for this Thread

Berechtigungen

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