-
Anderer Vorschlag
So kann man es auch machen :
COBOL
Code:
identification division.
program-id. PREPART.
environment division.
configuration section.
special-names.
decimal-point is comma.
data division.
working-storage section.
EXEC SQL
include SQLCA
END-EXEC.
01 DEFINITIONEN.
* PREPARE-String
05 EXECSTRING pic x(99).
* Hier kommen die Felder aus der Datei 1 (Num. Felder GEZONT
* definieren !)
05 VARNAME pic x(10)
value "LAENGE ".
05 WERT pic s9(9)
value 1200.
05 ARTNR pic s9(15)
value 4711.
/
*****************************************************************
* Haupsteuerung
*****************************************************************
procedure division.
steuerung.
perform init.
* Hier muss eine Schleife 'rein, die die Datei 1 abarbeitet und
* bei Gruppenwechsel der Artikelnummer einen Satz mit der neuen
* Artikelnummer (ohne die anderen Feldwerte) in die Datei 2
* schreibt und ggf. den Update für alle Felder der Datei2 durch-
* führt.
* Zusammenbasteln des PREPARE-Strings für alle Felder der Datei 2
string "update ARTIKEL set " delimited by size,
VARNAME delimited by size,
" = " delimited by size,
WERT delimited by size,
" where ARTNR = " delimited by size,
ARTNR delimited by size,
into EXECSTRING
end-string.
EXEC SQL
prepare SETFLD from :EXECSTRING
END-EXEC.
EXEC SQL
execute SETFLD
END-EXEC.
goback.
init.
initialize SQLCODE,
SQLSTATE.
DDS
Code:
A UNIQUE
A R ARTIKELREC
A*
A ARTNR 15P 0
A LAENGE 9P 0
A BREITE 7P 0
A HOEHE 5P 0
A*
A K ARTNR
Hth
Bernd
Last edited by bwachs; 24-07-12 at 11:46.
Grund: tippfehler
-
Lösung
Cobol kann ich leider nicht.
Ich habe den Vorschlag von Birgitta umgesetzt:
Code:
PGM
/* SQL-Statement für View löschen */
CLRPFM FILE(OWAPF558)
/* View löschen */
DLTF FILE(CCMPDTAP/OWALF558)
MONMSG MSGID(CPF2105)
/* SQL-Statement für View schreiben */
CALL PGM(OWAPG558)
/* View erstellen */
OVRPRTF FILE(QSYSPRT) OUTQ(LOESCH) SPLFOWN(*JOBGRPPRF)
RUNSQLSTM SRCFILE(OWAPF558) SRCMBR(OWAPF558) +
COMMIT(*NONE)
ENDPGM
Mit RPG lese ich den Merkmalsstamm und baue folgende SQL-Source zusammen:
Code:
CREATE VIEW CCMPDTAP/OWALF558 AS SELECT
SUBSTR(OJKYHJ, 18, 8) AS ARTNR,
MAX(CASE WHEN FCKYHJ = 'LAENGE' THEN FSN1HJ ELSE 0 END) AS LAENGE,
MAX(CASE WHEN FCKYHJ = 'BREITE' THEN FSN1HJ ELSE 0 END) AS BREITE,
MAX(CASE WHEN FCKYHJ = 'DICKE ' THEN FSN1HJ ELSE 0 END) AS DICKE ,
MAX(CASE WHEN FCKYHJ = 'BAUSTO' THEN FSA1HJ ELSE '' END) AS BAUSTO,
...
MAX(CASE WHEN FCKYHJ = 'NADELA' THEN FSA1HJ ELSE '' END) AS NADELA
FROM CASPDTAP/CATPF0HJ
GROUP BY OJKYHJ;
Das funktioniert so wie es soll!
Danke
-
 Zitat von B.Hauser
Angenommen die Datei hat 3 Spalten: Artikel-Nr. ArtNr, Merkmal MRK, Wert Wert.
Dann könnte die View etwa so aussehen:
Code:
Create View MySchema/MyView
as Select ArtNr, Max(Case When MRK = 'LAENGE' Then Wert Else '' End) as Laenge,
Max(Case When MRK = 'BREITE' Then Wert Else '' End) as Breite, ...
From MySchema/MyTable
Group By ArtNr;
Wie Birgitta vorgeschlagen. Was musst du tun um das zu automatisieren?
Erstelle einen Array mit den vorhandenen Merkmalen (%Scan Merkmal: vorhanden ja = nix tun, nicht vorhanden = in's nächste freie Element einfügen (Blank-Scan).
Aufgrund des Arrays, SQL-Statements wie oben erstellen. Betrifft jetzt nur die Selects, der Rest bleibt ja immer gleich.
Automatisiert und ohne Handarbeit
Similar Threads
-
By c.b. in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 26-07-06, 12:22
-
By rr2001 in forum IBM i Hauptforum
Antworten: 9
Letzter Beitrag: 11-07-06, 14:10
-
By M Scheid in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 12-06-06, 13:02
-
By Sulla in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 17-05-06, 16:06
-
By jogisarge in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 10-05-06, 16:26
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks