View Full Version : noch eine Änderung die plötzlich die Umwandlung verhindert
Ein PGM hat
D XXX DS Dim(120) inz qualified
D F1 1A
D F2 1A
D ... Diverse Felder verschiedener Größen
im Pgm ist ein
CLEAR *ALL XXX
Das wird jetzt bemeckert.
Was ist den die alternative?
Danke
CLEAR XXX;
*all ist eigentlich eine Konstantenergänzung wie z.b. eval x = *all x'00'.
aber das ging doch vorher und ist ja auch beschrieben
https://www.ibm.com/docs/en/i/7.5.0?topic=codes-clear-clear
(bei uns eingebaut mit v5R4)
Was ist denn genau die Fehlermeldung?
Der CLEAR hat sich nicht geändert.
Nun ja, ggf. wird nur genauer geprüft. *all gilt für occurs, da clear nur die für aktuelle Ebene einer Variablen gilt.
DIM ist permanent erreichbar, occurs muss per "n occurs array<array>" positioniert werden, was heute i.d.R. durch DIM eben einfacher ist.</array>
*RNF5393 Faktor 2 einer Operation Clear oder Reset ist ungültig
Das ist doch eine Aussage:
https://www.ibm.com/docs/en/i/7.4.0?topic=irc-reset-all-is-no-longer-allowed-array-data-structures-in-free-form-calculations
Die Betonung liegt ja auf Free-Form. Occurs hat sich da auch überholt, da man dies locker mit DIM ersetzen kann. Nur die Zugriffe sind dann minimal anzupassen:
- Statt n occur array, eval ai = n
- Zugriff dann bei qualified ds(ai).feld oder feld(ai) bei nicht qualified.
Man beachte:
No change has been made to fixed-form calculations.
Da man Free/Fixed mischen kann, kannst du diese Zeile dann ja ggf. in fixed machen. Free/End-Free sind da nicht mehr erforderlich.
camouflage
29-04-25, 09:54
Bis 7.3 ging dies noch, ab 7.4 wird dieser Fehler produziert. M.M. ist das ein Bug. Mit occurs wird kein Fehler ausgegeben.
Wie war das noch mit Rückwärtskompatiblität?
@Fuerchau
Das ist ein FIX-Format Pgm
@camouflage
Danke für die Bestätigung.
Da werden wir uns wohl angewöhnen müssen nach jedem PTF / Releasewechsel alles sicherheitshalber einmal durch zu wandeln.
Wenn es Zeitlich eng ist, möchte mann solche 'Fehler' nicht zusätzlich bereinigen
Wir machen jetzt statt des clear *all eine
for x = 1 To %elem(xxx)
clear
endfor
nicht schön, aber funktioniert wieder.
Vielen Dank
Dietlinde Beck
Rückwärtskompatiblität: binär aber nicht Source, da das Programm ja auch ohne Umwandlung läuft.