Anmelden

View Full Version : ALWNULL und SHARED(*YES) Problem



Azaron
17-02-06, 13:23
Hallo,

ich habe folgendes Problem.
In meinem SQLRPGLE-Programm habe ich 2 Dateien.
Die eine davon kann Nullwerte enthalten, die andere darf das nicht.

Wenn ich jetzt das Schlüsselwort ALWNULL(*USRCTL) setze habe ich ein Problem...
Die 2te Datei in der normalerweise keine Nullwerte vorkommen wird bereits in Vorgängerprogrammen mit SHARE(*YES) aber ALWNULL(*NO) geöffnet. Somit kriege ich eine CPF417A.
Nachdem ich das Programm nicht einfach ändern kann auf ALWNULL (das Prog. ist Unterprogramm von noch viel mehr Programmen) stehe ich vor einem Rätsel.

Gibt es eine Möglichkeit nur eine Datei in ILE-RPG mit ALWNULL zu öffnen und die andere nicht oder kann ich dem Programm beim Wandeln irgendwie sagen das es Nullwerte ignorieren soll?

Fuerchau
17-02-06, 14:57
Du kannst allenfalls einen OVRDBF mit SHARE(*NO) vorher mit anschließendem USROPN machen.
Ansonsten darf eben auch dein Unterprogramm keine NULL-Werte erstellen.

Prüfe ggf. das Design und lege eine eigene LF für dieses Programm an.

Azaron
17-02-06, 16:52
ok, wenn es keine elegantere Möglichkeit gibt werd ich das mit einem zwischengeschalteten CL-Programm machen. In dem ich den OVRDBF setzen.:(

Falls jemand doch noch eine schönere Möglichkeit kennt oder findet bin ich sehr dankbar.
;)

Fuerchau
17-02-06, 17:00
Durch den SHARE(*YES) und den ALWNULL(*NO) kann die AS/400 nicht anders handeln. Die Datei wurde mit Restriktion geöffnet !
Das gleiche Problem mit SHARE gibt es auch, wenn das aufrufende Programm die Datei Input geöffnet hat und das gerufene Programm Update/Write durchführen will.

Dies geht nur über einen eigenen Open:
a) OVRDBF ... SHARE(*NO) vor dem OPEN
b) eigene LF

RWehrwein
22-04-08, 13:59
ok, wenn es keine elegantere Möglichkeit gibt werd ich das mit einem zwischengeschalteten CL-Programm machen. In dem ich den OVRDBF setzen.:(

Falls jemand doch noch eine schönere Möglichkeit kennt oder findet bin ich sehr dankbar.
;)
Hab die Erfahrung gemacht, der Fehler resultiert aus Vorprogramm, welches auf denselben Satz zugreift. hab im Vorpgm mit Open/Close Datei nach Chain gearbeitet und der Fehler war weg. Wäre vielleicht mit Chain(n) gegangen.

Roger

BenderD
22-04-08, 15:17
select coalesce(MyNullableAlfa, ' '), coalesce(MyNullableNum, 0) ...
ist dein Freund
Im übrigen braucht man bei SQL kein ALWNULL, da werden Indicator Variablen verwendet und SHARE ist ja so ungefähr das vorletzte...

D*B


Hallo,

ich habe folgendes Problem.
In meinem SQLRPGLE-Programm habe ich 2 Dateien.
Die eine davon kann Nullwerte enthalten, die andere darf das nicht.

Wenn ich jetzt das Schlüsselwort ALWNULL(*USRCTL) setze habe ich ein Problem...
Die 2te Datei in der normalerweise keine Nullwerte vorkommen wird bereits in Vorgängerprogrammen mit SHARE(*YES) aber ALWNULL(*NO) geöffnet. Somit kriege ich eine CPF417A.
Nachdem ich das Programm nicht einfach ändern kann auf ALWNULL (das Prog. ist Unterprogramm von noch viel mehr Programmen) stehe ich vor einem Rätsel.

Gibt es eine Möglichkeit nur eine Datei in ILE-RPG mit ALWNULL zu öffnen und die andere nicht oder kann ich dem Programm beim Wandeln irgendwie sagen das es Nullwerte ignorieren soll?