PDA

View Full Version : create tabel ohne level check



Seiten : [1] 2

DEVJO
29-09-15, 12:21
Moin moin,

mal wieder ein kleineres Problemchen.

Ich erstelle in einem Programm eine temporäre Datei mit SQL, diese Datei will ich in einem 2. Programm dann lesen, bekomme aber im 2. Programm immer den CPF4131 um die Ohren, da das File neuer als das Programm ist.
Nun kann ich einen CMD bauen und damit den LVLCHK ausschalten.
Gibt es einen eleganteren Weg?

Gruß
Jo

Pikachu
29-09-15, 12:41
Der LVLCHK hat nichts mit älter oder neuer zu tun sondern mit dem Aufbau der Formate.

Robi
29-09-15, 12:42
Wie das mit SQL Erzeugten Dateien ist, weiß ich gerade nicht.
Aber der LevelCheck kommt nur, wenn in der Datei etwas verändert wurde.

Datei erzeugen,
Pgm wandeln,
Datei löschen,
Datei aus gleicher Quelle erzeugen,
Pgm Aufrufen

geht immer!

Gruß
Robi

DEVJO
29-09-15, 12:50
An der Datei wurde ja was verändert....sie wurde erstellt, erst nachdem sie neu erstellt wurde, soll das 2. Programm los laufen.

Der Ablauf ist folgender:

Programm A wird aufgerufen, erstellt Datei (mit CREATE TABLE blablabla) "a_File" in der QTEMP, dann soll Programm B aufgerufen werden.
Wenn Job zuende (sprich Programm B fertig) Datei weg, nächster Aufruf Programm A -> neue Datei erneuter Aufruf Programm B

Nachtrag:
Je nach Parametern kann mal ein Feld mehr drin sein.

cbe
29-09-15, 13:05
An der Datei wurde ja was verändert....sie wurde erstellt, erst nachdem sie neu erstellt wurde
...
Je nach Parametern kann mal ein Feld mehr drin sein.

Das Datum ist kein Problem, aber die andere Struktur (ein Feld mehr oder weniger)

Hier wirst Du mit RPG nicht glücklich.
LVLCHK=*NO könnte vielleicht gehen, ist aber eine gefährliche Fehlerquelle für die Zukunft.

Auf Anhieb habe ich dazu folgende Ideen:
- Wahrscheinlich könntest Du ein SQLRPG verwenden, und die Datei mit einem imbedded SQL-Befehl lesen.
- Oder Du kopierst die Datei auf eine andere Arbeitsdatei mit fester Struktur, und verarbeitest die.

Gruß, Christian

Fuerchau
29-09-15, 13:06
Wenn du per SQL eine Tabelle erstellst, solltest du diese auch mit SQL bearbeiten.
Dann gibt es das Problem gar nicht.

Willst du unbedingt mit File-IO zugreifen solltest du eine Masterdateí haben.
Diese kannst du im CL vor dem Aufruf von Programm A per CRTDUPOBJ in die QTEMP erstellen und mit OVRDBF überschreiben.

Programm A füllt die Daten und Programm B verarbeitet die Daten.
Dann hast du kein LVLCHK-Problem.

Pikachu
29-09-15, 13:06
Eine Datei löschen und mit dem gleichen Aufbau wieder neu erstellen zählt beim LVLCHK nicht als verändern. Hatte die Datei beim Erstellen des Programms B vielleicht einen anderen Aufbau (anderer Formatname, andere Feldnamen oder Datenarten, Datenlängen usw)?

Robi
29-09-15, 13:07
Nachtrag:
Je nach Parametern kann mal ein Feld mehr drin sein.

Na dann ...
Wenn du das feld nicht brauchst, lass es weg!
Wenn du es brauchst, mußt du ja auch ein Pgm C haben, das das Feld verarbeitet.

also
A--> B oder
A--> C

das sollte immer gehen!

cbe
29-09-15, 13:08
Erster!
:-D

DEVJO
29-09-15, 13:17
hm...... kann es nicht weglassen und je nach Aufruf ist halt ein Parameter mehr oder weniger vorhanden...und dann dementsprechend ein weiteres Feld in der Datei, welches dann für eine Berechnung verwendet wird, dafür das Programm kopieren.....nö....
Ich dachte es gibt vielleicht eine Variante mit "set Option" oder so was....naja dann fix nen CL bauen welches eine CHGPF absetzt im Fall der Fälle ....