Anmelden

View Full Version : Feld für die Ausgabe umbenennen



ILEMax
20-02-19, 16:01
Hallo *all
ich habe hier ein seltsames Problem

2 (für uns) Fremde Dateien
beide beinhalten ein Feld BEMERK, mal 60 mal 1024 lang

Eine Datei ist im RPG Input add, die andere Update add definiert

auf einer liegt ein


D aa_satz E DS Extname(datei1)


auf der anderen


D xx_satz E DS Extname(datei2)
D xxfeld1 E Extfld(feld1)
D xxbemerk E Extfld(bemerk)


(Feld1 ist auch in beiden Dateien drin, aber hat die gleiche länge)

nun habe ich folgenden Fehler


1379=O BEMERK 1963A CHAR 1024 Bemerkung
======> aaaaa
*RNF6033 30 a 000023 Länge des extern beschriebenen Felds stimmt nicht mit einer
vorherigen Definition überein; die Bestimmung wird
ignoriert.





Das Feld ist das, was oben renamed wurde.

Wie bekomme ich das gewandelt?

Danke!

PS: Prefix Verwendung geht nicht, ca. 2000 Felder mit den wildesten Namen
Außerdem muß es doch auch für ein Feld funktionieren

mk
20-02-19, 16:11
Hi,

qualified Datenstrukturen können da Abhilfe schaffen

ILEMax
20-02-19, 16:46
ich gebe aber in die DATEI aus

und auf mein rename des einen Feldes reagiert es ja nicht

Wie meinst DU das?

Radinator
20-02-19, 20:09
Du kannst nach dem EXTNAME(...) noch QUALIFIED angeben. Wenn Du das nicht machst, dann wird das Feld, welches in Datei1 und in Datei2 definiert ist, direkt als Feld verfügbar gemacht. Da wird der Compiler seine Probleme haben. Im Falle der Verwendung von QUALIFIED kannst Du auf das Feld über aa_satz.BEMERK und über xx_satz.BEMERK zugreifen. Beide haben dann jeweils die Definition des Feldes aus der externen Datei.

Lg Radinator

andreaspr@aon.at
21-02-19, 07:28
Du könntest auch mit einem PREFIX arbeiten. Ich bin jedoch auch ein Freund vom Qualified Schlüsselwort wie schon zuvor beschrieben.

Fuerchau
21-02-19, 08:11
Das löst aber nicht das Bezugsproblem zwischen O-Bestimmungen und der DS.
Ab V6/V7 kann eine F-Bestimmung ebenso "Qualified" sein.

Der Bezug zwischen DS und F geht ausschließlich über Namen.
D.h., da ja jeder Name nur 1x im RPG da sein darf (auch bei qualified, da ist der Name eben x.y), hilft ein Umbenennen in der DS überhaupt nicht.

Umbenennungen für die F passiert ausschließlich in den I-Bestimmungen.
Nun hat eine O-Datei keine I's, somit ist ein Rename nicht möglich.
Lösung: Einfach eine UF draus machen, Rename in den I's, das wirkt auch in den O's.

ILEMax
21-02-19, 08:39
@Fuerchau: Ja, das ist wohl so, Danke

Qualified hat gar nix gebracht außer das das Proramm voller geworden ist.
Ich muß das schreiben anscheinend echt auslagern.

Das ist (fast) das erste mal, das ich RPG (ILE) nicht gut finde.
Andererseits hatte ich das Prob. in > 20 Jahren noch nie ...

Danke
Der ILEMax

Fuerchau
21-02-19, 11:56
Das Problem ist die "Einmal-Definition" einer Variable.
Das Problem hatte ich schon häufiger und konnte es auch nur per I-Zeile lösen.

Vor ILE, also native RPG, habe ich auch O-Dateien per UF definiert und die angemeckerten fehlenden IO-Anweisungen in einer Pseudo-EXSR definiert.
Mit ILE gibt es ja nur Warnungen, wenn man bei UF's nicht alle IO's verwendet.

Ach ja, und SHARE(*YES) sollte man generell vermeiden, sonst kann es schon mal Openprobleme geben.