Anmelden

View Full Version : Heftige free form Frage



Seiten : [1] 2

camouflage
12-09-24, 14:59
Ich habe ein tolles Konstrukt einer logischen Datei mit mehreren Records aus verschiedenen Files drin in fixed RPGLE. Das hat/hatte den Vorteil, dass ich nur ein File lesen musste und ich die Records aufgrund der Record DS mit einer Bezugszahl identifizieren konnte.

Also:
I mySuperRec 55 (Bezugszahl)
I myWeirdRec 99
....

Je nachdem was kommt, geht die entsprechende BZ an.

Geht das auch in free?

Und jetzt keine Diskussionen über Design bitte!
Danke.

Fuerchau
12-09-24, 15:28
Hat nix mit Freeform zu tun:
https://www.ibm.com/docs/en/i/7.5?topic=information-infds-inputoutput-feedback-example

"<code class="hljs language-plaintext-ibm"> IO_RCD_FMT CHAR(10) POS(261); // Rcd format name"</code>

BenderD
12-09-24, 15:45
Ich habe ein tolles Konstrukt einer logischen Datei mit mehreren Records aus verschiedenen Files drin in fixed RPGLE. Das hat/hatte den Vorteil, dass ich nur ein File lesen musste und ich die Records aufgrund der Record DS mit einer Bezugszahl identifizieren konnte.

Also:
I mySuperRec 55 (Bezugszahl)
I myWeirdRec 99
....

Je nachdem was kommt, geht die entsprechende BZ an.

Geht das auch in free?

Und jetzt keine Diskussionen über Design bitte!
Danke.

... da helfen auch keine Diskussionen, da helfen nur noch Handschellen und ein Heizkörper!

camouflage
12-09-24, 16:59
Ich weiss gar nicht was Du hast Dieter, ist doch eine kreative Lösung. :-D

Fuerchau
12-09-24, 17:27
In SQL macht man das ja heute per Union. Also so unmodern ist die LF also gar nicht.

select 'TableA' as TableName, F1, F2 , F3 ..., FN from TableA
union all
select 'TableB' as TableName, F1, F2 , F3 ..., FN from TableB

Wobei man hier halt eine Spalte hinzufügen muss um die Herkunft zu eruieren.
Anders macht man das bei ETL-Prozessen für die gemeinsame Konsolidierung von BI-Auswertungen ja auch nicht.

Übrigens:
Bei Bildschirmen mit mehreren aktiven Satzformaten (geht mit Invite, Overlay aber ohne Overlap) und einem "Read File" statt "Read Format", erfährt man auch erst aus dem IO-Feedback (INFDS), welches Format gelesen wird.

dschroeder
13-09-24, 08:00
Hier ist noch ein Lösungsbeispiel in fully free. (Ich habe es aber nicht ausprobiert)

dcl-s MyFormat1DS likeds(MyFormat1);
dcl-s MyFormat2DS likeds(MyFormat2);


exec sql declare C1 cursor for select * from MyLogicalFile;


exec sql open C1;


dow sqlstate = '00000';
exec sql fetch C1 into :MyFormat1DS, :MyFormat2DS;
if sqlstate = '00000';
// Verarbeiten des gelesenen Datensatzes
endif;
enddo;


exec sqlclose C1;
[/CODE]

dschroeder
13-09-24, 08:02
Wahrscheinlich wäre es gut, die Formate vor jedem Fetch zu clearen. Nach dem Fetch muss man dann prüfen, welches Format gefüllt ist.

LG, Dieter

BenderD
13-09-24, 08:14
In SQL macht man das ja heute per Union. Also so unmodern ist die LF also gar nicht.

select 'TableA' as TableName, F1, F2 , F3 ..., FN from TableA
union all
select 'TableB' as TableName, F1, F2 , F3 ..., FN from TableB

Wobei man hier halt eine Spalte hinzufügen muss um die Herkunft zu eruieren.
Anders macht man das bei ETL-Prozessen für die gemeinsame Konsolidierung von BI-Auswertungen ja auch nicht.

Übrigens:
Bei Bildschirmen mit mehreren aktiven Satzformaten (geht mit Invite, Overlay aber ohne Overlap) und einem "Read File" statt "Read Format", erfährt man auch erst aus dem IO-Feedback (INFDS), welches Format gelesen wird.

... das kann man so nicht stehen lassen. Ein Union ist genau das Gegenteil von dem vorher beschriebenen Datenkompost, auf dem Kraut und Rüben liegen. Ein Union führt gleichartige Daten, die von Dilettanten verstreut gespeichert wurden zusammen.

D*B

Fuerchau
13-09-24, 08:58
Bzgl. SQL meine ich aus der Vergangenheit, dass bei einer Multi-Format-LF von SQL ausschließlich das 1. Format gelesen wird.
Somit ist das ein rein Nicht-SQL-Thema.

Die Multiformat-LF gibts in vielen ERP-Systemen und vor allem bei Nicht-SQL-Entwicklern;-).

camouflage
13-09-24, 11:55
Ja soll ich mal erklären, dass man Gnocchi nicht Knocktschi ausspricht oder der Chianti auch nicht Tschianti heisst. Danke Baldur und Dieter, der D*B kann sich gerne der deutschen Aussprache des italienischen bedienen.

Abgesehen davon, ich lass die DS mal fixed stehen - es funktioniert ja, das Programm ist ja free. Ist halt eine "alte" Lösung und was soll ich einen grossen Aufwand betreiben, nur damit es schöner aussieht. Alles andere würde und Redesign fallen und ja, SQL kann ich auch.

Dachte nur, es gäbe auf die Schnelle eine Idee/Lösung.