Anmelden

View Full Version : CPYTOIMPF ADDCOLNAM



tarkusch
11-05-18, 12:50
Hallo,

möchte einen Tempfile als CSV im IFS ablegen.

Den Tempfile erstelle ich mir mit den benötigten Feldern:
CREATE TABLE QTEMP/TEMPFILE AS
(SELECT FELD1, FELD2, FELD3, … FROM …)
WITH DATA';
Anschließend gebe ich den Feldern mittel Sql-Command Label on sprechende Namen(Rechn.empf., RgKurzbez., Empfaenger, …).
Aber Im IFS sehe ich leider nicht die neuen vergebenen Namen sondern wieder die Überschriften FELD1, FELD2, FELD3, …)

Mein Command:
CPYTOIMPF FROMFILE(QTEMP/TEMPFILE)
TOSTMF('/temp/Testcsvfile.csv')
MBROPT(*REPLACE)
STMFCCSID(*PCASCII)
RCDDLM(*CRLF)
FLDDLM(';')
ADDCOLNAM(*SQL)

Wie bekomme ich das geregelt?

Danke

Fuerchau
11-05-18, 14:25
Weil Label nur Spaltenüberschriften wie für Query/400 verwendet werden.
ADDCOLNAM verwendet die SQL-Namen und nicht die Label.

Mache einfach einen

select feld1 as "Name", feld2 as "Straße", ....

Damit benennst du die Felder gleich richtig und wenn du Anführungszeichen setzt bleiben diese auch casesensitive.
Was ich nicht weiß ist, ob ADDCOLNAM wirklich auf die SQL-Namen und nicht auf die generierten Systemnamen geht. Das bleibt auszuprobieren.

Pikachu
11-05-18, 14:53
Probier' mal mit ADDCOLNAM(*SYS).

Fuerchau
11-05-18, 15:33
Ich nehme mal an, *SYS = Systemname, *SQL = SQL-Name.
Bei letzterem könnte also der SQL-Spaltenname genommen werden.
Nochmal: Label setzt das COLHDG-Attribut, das aber in einem Resultset nicht übergeben wird.

Pikachu
11-05-18, 19:32
Es gibt bei Feldern 2 Arten von LABEL ON.
Die eine setzt die Spaltenüberschrift (COLHDG), die andere den Text (TEXT).
Aber CPYTOIMPF gibt wohl tatsächlich "nur" die SQL- oder System-Spaltennamen mit aus.

tarkusch
13-05-18, 08:58
Hallo,

danke vorab für eure Antworten.

Ich habe beide Arten von Label on bereits versucht(.. is ..; ... Text is ..).
Leider ohne Erfolg.

Ein Select (select feld1 as "Name", ...) wie es Fürchau vorgeschlagen hat,
geht leider auch nicht da der File inviduell zusammengestellt wird.
Der TEMPFILE kann durch unterschiedliche Aufrufe zwischen 10 - 30 Felder haben.

Fuerchau
13-05-18, 10:41
Trotzdem baut dein Progamm doch irgendwas zusammen um anschließende Lable/Text-Anweisungen zu stricken. Also sollte doch eine "as"-Generierung auch möglich sein.
COLHDG/Text ist nicht SQL-Conform, außerdem bedeutet dies Extraabfragen und zusätzlich lässt sich damit kein Feld im Resultset adressieren.
Du musst auch bedenken, dass das Ergebnis wiederum mit einem CPYTOIMPF kompatibeln sein muss.

Um eine Umbenennung der Spalten kommst du also nicht herum.

Oder mach bei IBM einen Feature-Request auf. Vielleicht erbarmt sich da ja jemand.