-
Ich habe versucht den Parameter anzuhänger, bekomme aber da einen Fehler.
Muss ich da qualified angeben?
Mir ist nur nicht klar wo.
Code:
D CheckCode PR EXTPGM('CHKCD01R')
D CHK03R DS 50 INZ
D PaSL3 1 2 0
D PaCD3 3 5
D PaBZ3 6 30
D PaKB3 31 35
D ParCHK03R DS likeds(CHK03R)
D redturnCode 1a
*RNF3703 20 a 013200 Unterfeld- oder Parameterdefinition nicht in einer Gruppe
angegeben.
-
Probiers mal so (ohne Gewähr):
Code:
D CheckCode PR EXTPGM('CHKCD01R')
D P1 LIKE(CHK03R) CONST
D P2 LIKE(RC)
D
D CHK03R DS 50 INZ
D PaSL3 1 2 0
D PaCD3 3 5
D PaBZ3 6 30
D PaKB3 31 35
D RC S 1
/free
callp(e) CheckCode(CHK03R:RC);
eval *inlr = *on;
/end-free
-
Hallo,
ich glaube eher, dass man die Struktur nicht direkt im Prototyp definieren darf. Man muss sie unabhängig vom Prototyp deklarieren und dann im Prototyp mit likeds darauf verweisen.
Hier der Code:
D CHK03R_Templ DS 50 Template
D PaSL3 1 2 0
D PaCD3 3 5
D PaBZ3 6 30
D PaKB3 31 35
*
D CheckCode PR EXTPGM('CHKCD01R')
D CHK03R LIKEDS(CHK03R_Templ)
D RC 1A
/free
callp(e) CheckCode(CHK03R:RC);
eval *inlr = *on;
/end-free
Bei diesem Code ist die Struktur im Prototyp einfach ein einzelner Parameter, der mit LIKEDS auf eine Strukturdefinition verweist.
Möglicherweise kannst du die Struktur auch nicht mit CONST deklarieren. Das geht nur, wenn dein Programm CHKCD01R das auch als CONST empfängt.
Gruß,
Dieter
-
Const dient für den Compiler nur als Definition, dass der Inhalt nicht verändert wird.
Übergeben wird trotzdem nur eine Adresse.
Der Empfänger benötigt kein Const.
Const hat noch dann den Vorteil, wenn ich Ausdrücke an eine Funktion übergeben will und nicht immer erst eine Variable füllen muss.
-
 Zitat von Fuerchau
Const dient für den Compiler nur als Definition, dass der Inhalt nicht verändert wird.
Übergeben wird trotzdem nur eine Adresse.
Der Empfänger benötigt kein Const.
Const hat noch dann den Vorteil, wenn ich Ausdrücke an eine Funktion übergeben will und nicht immer erst eine Variable füllen muss.
... die Hoffnung stirbt zuletzt. RPG stellt vielleicht sicher, dass die Variable nicht verändert wird, wenn sie durchgereicht wird, ist dem Compiler das völlig egal. Der Versuch wird bereits mit einem Programm belohnt, wie so oft, bei der Huddel Programmiersprache RPG.
D*B
-
 Zitat von dschroeder
Hallo,
ich glaube eher, dass man die Struktur nicht direkt im Prototyp definieren darf. Man muss sie unabhängig vom Prototyp deklarieren und dann im Prototyp mit likeds darauf verweisen.
Hier der Code:
D CHK03R_Templ DS 50 Template
D PaSL3 1 2 0
D PaCD3 3 5
D PaBZ3 6 30
D PaKB3 31 35
*
D CheckCode PR EXTPGM('CHKCD01R')
D CHK03R LIKEDS(CHK03R_Templ)
D RC 1A
/free
callp(e) CheckCode(CHK03R:RC);
eval *inlr = *on;
/end-free
Bei diesem Code ist die Struktur im Prototyp einfach ein einzelner Parameter, der mit LIKEDS auf eine Strukturdefinition verweist.
Möglicherweise kannst du die Struktur auch nicht mit CONST deklarieren. Das geht nur, wenn dein Programm CHKCD01R das auch als CONST empfängt.
Gruß,
Dieter
Hallo,
habe es mit Likeds versucht, aber ich kenne den Ausdruck Template nicht bzw. habe auch mit dem noch nicht gearbeitet.
gehört beim Callp(e) CheckCode(CHK03R:RtnCode); nicht das RtnCode entfernt?
Was habe ich da vermurkst?
Code:
D CHK03R_Templ DS 50 Template
D PASL3 1 2 0
D PACD3 3 5
D PABZ3 6 30
D PAKB3 31 35
D*
D CheckCode PR EXTPGM(' CHKCD01R')
d
d CHK03R DS likeds(CHK03R_Templ)
d RtnCode 1a
======> aa
*RNF3703 20 a 013300 Unterfeld- oder Parameterdefinition nicht in einer Gruppe
angegeben.
/FREE
PACD3 = 'TEST';
PASL3 = *ZEROS;
======> aa
*RNF0655 30 2 Der mit dem Schlüsselwort TEMPLATE definierte Eintrag kann in
Callp(e) CheckCode(CHK03R:RtnCode);
*RNF5407 20 2 Mehr Parameter im Prototypaufruf übergeben als zulässig.
IF RtnCode = '0';
// Error in ...
EndIf;
/END-FREE
-
Template bedeutet, dass die Struktur nur eine "leere" Vorlage ist. Für eine Template-Struktur werden nur 16 Bytes Speicher belegt. Du brauchst die Struktur ja nicht wirklich für den Prototyp. Du benötigt an der Stelle ja nur die Strukturdefinition (ohne Daten). Deshalb habe ich da Template hingeschrieben. Das geht natürlich auch ohne "Template". Dann musst du aber einen andere Namen für die Struktur verwenden (du kannst dich bei likeds ja schließlich nicht auf dich selbst beziehen).
Dein Problem mit der Fehlermeldung ist das "DS". Da die Struktur nicht selbständig ist, sondern nur ein Parameter des Prototyps, darf da kein DS stehen:
D CheckCode PR EXTPGM(' CHKCD01R')
d
d CHK03R likeds(CHK03R_Templ)
d RtnCode 1a
Gruß,
Dieter
-
Hallo Dieter,
das hätte ich schon mal weggelassen, aber da kommt die Fehlermeldung
*RNF7030 30 1780 103000 Der Name oder die Bezugszahl/der Anzeiger CHK03R ist nicht
definiert.
In dem Template wären ja schon Deklarationen für PACD3 und PASL3 angegeben. Wieso kommt dann aber die Fehlermeldung:
======> aa
*RNF0655 30 2 Der mit dem Schlüsselwort TEMPLATE definierte Eintrag kann in
diesem Kontext nicht verwendet werden.
-
Du musst natürlich auch noch eine richtige Struktur (ohne Template) deklarieren. Du willst die Felder ja schließlich nutzen.
Folgender Code funktioniert bei mir:
D CHK03R_Templ DS 50 Template
D PASL3 1 2 0
D PACD3 3 5
D PABZ3 6 30
D PAKB3 31 35
*
D CheckCode PR EXTPGM('CHKCD01R')
d CHK03R likeds(CHK03R_Templ)
d RtnCode 1a
*
d CHK03R DS likeds(CHK03R_Templ)
d RtnCode S 1a
/FREE
CHK03R.PACD3 = 'TEST';
CHK03R.PASL3 = *ZEROS;
Callp(e) CheckCode(CHK03R:RtnCode);
IF RtnCode = '0';
// Error in ...
EndIf;
*inlr = *on;
/END-FREE
-
-
danke schön an euch, spezial thanks to Dieter.
Similar Threads
-
By muadeep in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 04-07-06, 14:57
-
By LoCal in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 25-01-05, 14:58
-
By two in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 04-12-02, 15:10
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks