PDA

View Full Version : Sätze in Quellen über Programm einfügen



peter.kinne
31-03-11, 11:46
Hallo Forum,

ich muss bei allen Quellen einen Header maschinell einfügen.

Dafür habe ich nun ein Programm erstellt, dass die neuen Sätze mit der Sequenz 0,01, 0,02, 0,03 etc. in die QRPGLESRC geschrieben hat.

Wenn ich nun SEU starte, kommt die Fehlermeldung "Sätze in falscher oder doppelter Reihenfolge. Die Sätze wurden neu sortiert."

Und schon stehen meine Sätze ganz am Ende der Quelle.

Gibt es da einen Trick um das zu realisieren. Ist ja von der Sache ehr ziemlich einfach.

Viele Grüße

Peter

andreaspr@aon.at
31-03-11, 12:27
Hallo Peter,

ich musste auch mal Anpassungen automatisch durchführen lassen. Habe dafür folgenden Trick verwendet:

001 C....
002 C....
003 C*<--- Nach 002 soll der Satz hinzugefügt werden => also:

Update QRPGLESRC
Set Sequenzen = Sequenzen + 1
Where Sequenzen > 002

lg

peter.kinne
31-03-11, 13:15
Hallo Andreas,

das klappt leider nicht.

Ich habe die Zeilenummer mit SQL verändert und dan 3 neue Zeilen ebenfalls mit SQL eingefügt.

Das Member sieht wie folgt aus.

3,00 Zeile 1
4,00 zeile 2
1,00 Eingefügt mit SQL 001
2,00 Eingefügt mit SQL 002

Und wenn ich dann SEU starte kommt die Fehlermeldung:

"Sätze nicht in aufsteigender Reihenfolge..bla..bla..bla"

Und aus 1,00 wird 5,00 und aus 2,00 wird 6,00.

Ich lade nun des gesamten Quelltext inTabellen, füge dort ein, lösche die Quelle und lege sie dann neu an.

Eine andere Möglichkeit sehe ich im Moment nicht.

Gruß

Peter

RobertMack
31-03-11, 14:27
Hallo Peter, das ist der Trick:

In einer QxxxSRC arbeiten, die bei CRTSRCPF mit ACCPTH(*KEYED) erstellt worden ist.

Gruß,
Robert

Nachtrag: http://newsolutions.de/forum-systemi-as400-i5-iseries/newsboard-programmierung/15594-programm-schreibt-quelle.html#post68665

peter.kinne
31-03-11, 14:39
Hallo Robert,

vielen dank für den Tipp und natürlich liebe Grüße.

Aber es ist schon zu spät, ich mache es wie beschrieben.

LG Peter

RobertMack
31-03-11, 14:42
...aber hoffentlich mit Sicherheitskopie und/oder COMIT :)

peter.kinne
31-03-11, 14:54
aber sicher doch!!!!!

Fuerchau
31-03-11, 18:14
Das war schon immer so, dass man in sequentielle Dateien keine Sätze einfügen sondern nur anhängen konnte.
Deshalb gibts auch (was eher selten verwendet wird) die *Keyed-SRCPF.
Auch SEU arbeitet da nicht anders.

andreaspr@aon.at
01-04-11, 20:24
Hallo Andreas,

das klappt leider nicht.

Ich habe die Zeilenummer mit SQL verändert und dan 3 neue Zeilen ebenfalls mit SQL eingefügt.

Das Member sieht wie folgt aus.

3,00 Zeile 1
4,00 zeile 2
1,00 Eingefügt mit SQL 001
2,00 Eingefügt mit SQL 002

Hallo Peter,
willst sollen die eingefügten Zeilen mit 5 und 6 nummeriert werden?

Ich habe gerade mein PGM angeschaut und war doch etwas aufwändiger. Habe es wie folgt gemacht:

1. Teildatei bearbeiten
beim Insert die gewünschte Sequenznummer mit angeben aber davor das Update mit SeqNr. + 1.

2. Teildatei in ein Temp-File einfügen (sortiert) und wieder zurück.

// Daten herumkopieren,
// damit die Reihnfolge wieder stimmt
Exec Sql Delete From QTEMP/TEMPMBR;

Exec Sql Insert Into QTEMP/TEMPMBR
(Select SRCSEQ, SRCDAT, SRCDTA
From QTEMP/MEMBER Order By SRCSEQ);

Exec Sql Delete From QTEMP/MEMBER;

Exec Sql Insert Into QTEMP/MEMBER
(Select SRCSEQ, SRCDAT, SRCDTA
From QTEMP/TEMPMBR Order By SRCSEQ);

lg