-
Parameter-Uebergabe - RNF5343: Feldgruppe hat zu viele übergangene Indizes
Ich such mir hier nen Wolf.
Was mit einem fixed RPGLE Programm funktioniert hat, soll nun plötzlich nicht mehr gehen.
Dabei will ich doch nur mehrere Arrays in einer Prodzedur als Parameter übergeben und bekomm beim Kompilieren einen RNF5343 Fehler.
Also:
DCL-S $ARR char(3) dim(100)
DCL-PR MyProc;
*n like($ARR);
END-PR;
MyProc($ARR);
Andersrum läufts. Hat jemand eine Idee?
Danke.
p.s. in eine DS möcht ich's halt wirklich nicht verpacken.
kf
-
was hälst Du von folgender Idee
PHP-Code:
dcl-s $arr char(3) dim(100);
$arr(01) = 'AAA'; myproc(%addr($arr));
dcl-proc myproc; dcl-pi *n; array_p pointer const; end-pi; dcl-s piarr like($arr) dim(100) based(array_p); piarr(02) = 'BBB'; end-proc;
Viele Grüße
Rainer
-
Ich kann da nicht erkennen, dass Arrays beim Like erlaubt wären:
When the LIKE keyword is specified, the item being defined takes on the length
and the data format of the item specified as the parameter. Standalone fields,
prototypes, parameters, and data-structure subfields may be defined using this
keyword. The parameter of LIKE can be a standalone field, a data structure, a data
structure subfield, a parameter in a procedure interface definition, or a prototype
name. The data type entry (position 40) must be blank.
Wenn du also Like verwendest musst du hier (wie der Fehler ja sagt) einen Index angeben, also "like($arr(1))".
Willst du ein Array komplett als Parameter so stell das Array in eine DS und definiere als Parameter "likeds(MyArrDs)".
Eventuell wirds klarer wenn du dein "fixed"-RPGLE mal postest um zu prüfen, warum das funktioniert hat.
-
@Rainer:
Das möcht ich mir eigentlich nicht antun ;-)
Hab immerhin in etwa 10 Arrays zum übergeben.
@Baldur:
Ich hab's schon befürchtet, irgendwo hab ich's im Hinterkopf, dass es nur noch so geht. Ich versuchs mal. Nach Fixed Methode: DCL-S $ARR char(3) dim(100) und dann CALL xy und PARM $ARR, funktioniert wunderbar. Und in Freeform muss ich halt jetzt eine Prodzedur vorgängig definieren.
kf
-
Dank eure Ueberlegungen, mittlerweile hab ich's gefunden.
In der Tat, produzieren Array-Likes bei Prozeduren wohl keine Fehler im RDi, werden aber nicht als solche bei Parameterübergaben erkannt.
Heisst nun:
DCL-S $ARR char(3) dim(100)
DCL-PR MyProc;
*n char(3) dim(100);
END-PR;
MyProc($ARR);
und so flutscht es. Nicht schön, aber immerhin (bin kein Freund von doppelten Definitionen, wenn man es referenzieren kann).
kf
-
Ich denke mal, dass RDi keinen internen Compiler (incl. Auflösen aller Verweise wie DDS, Copy, Include) verwendet sondern ausschließlich Syntax-Checks macht.
D.h., der Like ist von der Syntax halt i.O. aber RDi erkennt den Variablentyp nicht.
-
Auszug aus der RPG-Referenz:
Note:
Attributes such as ALTSEQ(*NONE), NOOPT, ASCEND, DESCEND, CONST, dimension and null capability are not inherited from the parameter of LIKE by the item defined. Only the data type, length, format, decimal positions, and CCSID are inherited.
When LIKE is used to define an item like an array, the DIM keyword is required to define the array dimensions. However, DIM(%ELEM(array)) can be used to define an array with the same dimension as another array.
Birgitta
-
Also muss die obige Deklaration wohl sein:
like($arr(1)) dim(%elem($arr))
Ganz schön kompliziert. Da wäre eine DS dann doch einfacher.
-
Nein die Definition muss sein:
Code:
DCL-S NewArr Like($ARR) Dim(%Elem($ARR));
Das war übrigens schon immer so! Bei einer Referenz auf eine Feldgruppe wird die Dimension nicht mitgenommen. Damit ist es möglich, Feldgruppen mit dem gleichen Datentypen und Länge jedoch unterschiedlicher Anzahl an Elemente zu definieren.
Für Array Datenstrukturen gilt übrigens die gleiche Regel
Birgitta
-
Das erklärt aber den RNF5343-Fehler mit dem Index nicht.
Der taucht auch auf, wenn ich in der Verwendung vergesse einen Index anzugebn.
Similar Threads
-
By dschroeder in forum NEWSboard Programmierung
Antworten: 11
Letzter Beitrag: 18-11-15, 15:38
-
By beegee in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 27-05-14, 12:56
-
By HoScHiE in forum IBM i Hauptforum
Antworten: 28
Letzter Beitrag: 17-01-08, 10:35
-
By JonnyRico in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 02-04-03, 15:53
-
By Hans Zuther in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 21-10-02, 15:29
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