-
CL Basics
Guten Tag @ alle. Ich hoffe mir kann jemand helfen.
Ich versuche ein CL Progamm zu erstellen, das 4 normale CL befehle ausführt, mit 4 möglichen variablen.
Befehle: CPYTOIMPF FROMFILE(LIB/DBFILE) TOSTMF('/home/DBFILE.as400.csv') MBROPT(*REPLACE) STMFCODPAG(*STMF) RCDDLM(*CRLF) FLDDLM(';')
CPY OBJ('/home/DBFILE.as400.csv') TOOBJ('/home/DBFILE.pc.csv') FROMCCSID(37) TOCCSID(1208) DTAFMT(*TEXT)
CHGAUT OBJ('/home/DBFILE.as400.csv') USER(*PUBLIC) DTAAUT(*RWX) OBJAUT(*ALL)
CHGAUT OBJ('/home/DBFILE.pc.csv') USER(*PUBLIC) DTAAUT(*RWX) OBJAUT(*ALL)
Variablen:
- Quellebibliothek (z.B LIB)
- Quellfile (z.B DBFILE)
wenn möglich auch mehrere DBFILEs ?
- Zielpfad (z.B /home/)
- Zielccsid (z.B. 1208)
Bis jetzt habe ich mir eine Bibliothek erstellen, die PF QCLSRC erstellt, darin ein member CPYTOCSV
Dann habe ich versucht die befehle dort einzugeben und die variablen vorher mit DCL zu definieren und einfach im befehl auszutauschen.
Das hat aber nicht so ganz funktioniert.
Bin leider blutiger iSeries anfänger, komme aus der win / lin welt.
Ich hoffe, einer von den hier versammelten experten ist so freundlich, mich in die richtige Richtung zu schubsen.
Vielen Dank.
MfG Sebastian Jürges
Last edited by sjuerges; 27-10-09 at 10:39.
Grund: format war im eimer :(
-
So könnte es gehen.
PHP-Code:
DCL VAR(&LIB) TYPE(*CHAR) LEN(10) DCL VAR(&DBFILE) TYPE(*CHAR) LEN(10) DCL VAR(&PFAD) TYPE(*CHAR) LEN(1024) DCL VAR(&STMF1) TYPE(*CHAR) LEN(1024) DCL VAR(&STMF2) TYPE(*CHAR) LEN(1024) DCL VAR(&TOCCSID) TYPE(*DEC) LEN(5)
CHGVAR VAR(&PFAD) VALUE('/home/') CHGVAR VAR(&LIB) VALUE(QWERTZ) CHGVAR VAR(&DBFILE) VALUE(DATEI) CHGVAR VAR(&TOCCSID) VALUE(1208)
CHGVAR VAR(&STMF1) VALUE(&PFAD *TCAT &DBFILE *TCAT '.as400.csv') CHGVAR VAR(&STMF2) VALUE(&PFAD *TCAT &DBFILE *TCAT '.pc.csv')
CPYTOIMPF FROMFILE(&LIB/&DBFILE) TOSTMF(&STMF1) + MBROPT(*REPLACE) STMFCODPAG(*STMF) + RCDDLM(*CRLF) FLDDLM(';')
CPY OBJ(&STMF1) TOOBJ(&STMF2) FROMCCSID(37) + TOCCSID(&TOCCSID) DTAFMT(*TEXT)
CHGAUT OBJ(&STMF1) USER(*PUBLIC) DTAAUT(*RWX) OBJAUT(*ALL) CHGAUT OBJ(&STMF2) USER(*PUBLIC) DTAAUT(*RWX) OBJAUT(*ALL)
-
Vielen Dank ! 
Funktioniert für eine Datei einwandfrei 
2 kleine Fragen:
1) Der erste CHGVAR Block, überschreibt der nicht eventuell eingegebene aufrufparameter ?
2) Wie würde ein LOOP funktionieren, der mehrere vorher definierte DBFILE's durchläuft ? In Pseudecode so ungefähr:
ANZAHLDBFILES=5
DBFILE1= DATEI1
DBFILE2=DATEI2
DBFILE3...
LOOP FOR DBFILE1 to DBFILEn
CPYTOIMPF usw...
ENDLOOP
Ich habe es getestet mit
DCL VAR(&DBFILE1) TYPE(*CHAR) LEN(10)
DCL VAR(&DBFILE2) TYPE(*CHAR) LEN(10)
LOOP1: DOFOR VAR(&DBFILE) FROM(1) TO(5)
[schnipp]
ENDDO
Wollte nich so wie ich das will.
*edit: +Frage bzgl. Dateilöschung*
Wenn ich die erste der beiden ausgabedateien, also DBFILE.as400.csv nach dem CPY löschen will, funktioniert das mit
DLTF /home/DBLFILE.AS400.csv ?
Last edited by sjuerges; 27-10-09 at 11:59.
Grund: +Frage bzgl. Dateilöschung
-
Mit dem DOFOR hab ich bis jetzt noch nichts gemacht. Aber du könntest dieses Programm von einem anderen mehrmals aufrufen lassen, jedes Mal mit anderen Werten. Die CHGVARs mußt du natürlich entfernen wenn die Werte beim Aufruf übergeben werden. Eine Verbindung zu einer Datenstromdatei kann mit den Befehlen DEL, ERASE oder RMVLNK aufgehoben werden.
-
Ich hab mal folgendes fabriziert:
PHP-Code:
DCL VAR(&PFAD) TYPE(*CHAR) LEN(1024) VALUE('/home/') DCL VAR(&TOCCSID) TYPE(*DEC) LEN(5) VALUE(1208)
DCL VAR(&LIB1) TYPE(*CHAR) LEN(10) VALUE(DBLDTA) DCL VAR(&DBFILE1) TYPE(*CHAR) LEN(10) VALUE(ARSTAP)
DCL VAR(&LIB2) TYPE(*CHAR) LEN(10) VALUE(DBLDTA) DCL VAR(&DBFILE2) TYPE(*CHAR) LEN(10) VALUE(ARSTKP)
DCL VAR(&LIB3) TYPE(*CHAR) LEN(10) VALUE(DBLDTA) DCL VAR(&DBFILE3) TYPE(*CHAR) LEN(10) VALUE(FBSPOP)
DCL VAR(&LIB4) TYPE(*CHAR) LEN(10) VALUE(DBLDTA) DCL VAR(&DBFILE4) TYPE(*CHAR) LEN(10) VALUE(KDSTAP)
DCL VAR(&LIB5) TYPE(*CHAR) LEN(10) VALUE(DBLDTA) DCL VAR(&DBFILE5) TYPE(*CHAR) LEN(10) VALUE(KGSTAP)
DCL VAR(&LIB6) TYPE(*CHAR) LEN(10) VALUE(DBLDTA) DCL VAR(&DBFILE6) TYPE(*CHAR) LEN(10) VALUE(KOSTAP)
DCL VAR(&LIB7) TYPE(*CHAR) LEN(10) VALUE(DBLDTA) DCL VAR(&DBFILE7) TYPE(*CHAR) LEN(10) VALUE(KUKONP)
DCL VAR(&LIB8) TYPE(*CHAR) LEN(10) VALUE(DBLDTA) DCL VAR(&DBFILE8) TYPE(*CHAR) LEN(10) VALUE(LISTAP)
DCL VAR(&LIB9) TYPE(*CHAR) LEN(10) VALUE(DBLDTA) DCL VAR(&DBFILE9) TYPE(*CHAR) LEN(10) VALUE(PRSTAP)
DCL VAR(&LIB10) TYPE(*CHAR) LEN(10) VALUE(DBLDTA) DCL VAR(&DBFILE10) TYPE(*CHAR) LEN(10) VALUE(RASTAP)
DCL VAR(&LIB11) TYPE(*CHAR) LEN(10) VALUE(DBLDTA) DCL VAR(&DBFILE11) TYPE(*CHAR) LEN(10) VALUE(SOSTAP)
DCL VAR(&LIB12) TYPE(*CHAR) LEN(10) VALUE(DBLDTA) DCL VAR(&DBFILE12) TYPE(*CHAR) LEN(10) VALUE(TRSTAP)
DCL VAR(&LIB13) TYPE(*CHAR) LEN(10) VALUE(DBLDTA) DCL VAR(&DBFILE13) TYPE(*CHAR) LEN(10) VALUE(TSSTAP)
DCL VAR(&LIB14) TYPE(*CHAR) LEN(10) VALUE(DBLDTA) DCL VAR(&DBFILE14) TYPE(*CHAR) LEN(10) VALUE(TTPOSP)
DCL VAR(&LIB15) TYPE(*CHAR) LEN(10) VALUE(DBLDTA) DCL VAR(&DBFILE15) TYPE(*CHAR) LEN(10) VALUE(TTSTAP)
DCL VAR(&LIB16) TYPE(*CHAR) LEN(10) VALUE(DBLDTA) DCL VAR(&DBFILE16) TYPE(*CHAR) LEN(10) VALUE(VPSTAP)
DCL VAR(&LIB17) TYPE(*CHAR) LEN(10) VALUE(DBLDTA) DCL VAR(&DBFILE17) TYPE(*CHAR) LEN(10) VALUE(VSSTAP)
DCL VAR(&LIB18) TYPE(*CHAR) LEN(10) VALUE(DBLDTA) DCL VAR(&DBFILE18) TYPE(*CHAR) LEN(10) VALUE(VSSTPP)
DCL VAR(&LIB19) TYPE(*CHAR) LEN(10) VALUE(DBLDTA) DCL VAR(&DBFILE19) TYPE(*CHAR) LEN(10) VALUE(VTSTAP)
DCL VAR(&LIB20) TYPE(*CHAR) LEN(10) VALUE(DBLDKD) DCL VAR(&DBFILE20) TYPE(*CHAR) LEN(10) VALUE(XDINFPU)
DCL VAR(&LIB) TYPE(*CHAR) LEN(10) DCL VAR(&DBFILE) TYPE(*CHAR) LEN(10) DCL VAR(&STMF1) TYPE(*CHAR) LEN(1024) DCL VAR(&STMF2) TYPE(*CHAR) LEN(1024) DCL VAR(&LOOP) TYPE(*INT) LEN(2) VALUE(0)
DOFOR VAR(&LOOP) FROM(1) TO(20)
CHGVAR VAR(&LIB) VALUE(&LIB *TCAT &LOOP) CHGVAR VAR(&DBFILE) VALUE(&DBFILE *TCAT &LOOP) CHGVAR VAR(&STMF1) VALUE(&PFAD *TCAT &DBFILE *TCAT '.as400.csv') CHGVAR VAR(&STMF2) VALUE(&PFAD *TCAT &DBFILE *TCAT '.pc.csv') CPYTOIMPF FROMFILE(&LIB/&DBFILE) TOSTMF(&STMF1) + MBROPT(*REPLACE) STMFCODPAG(*STMF) + RCDDLM(*CRLF) FLDDLM(';')
CPY OBJ(&STMF1) TOOBJ(&STMF2) FROMCCSID(37) + TOCCSID(&TOCCSID) DTAFMT(*TEXT)
CHGAUT OBJ(&STMF1) USER(*PUBLIC) DTAAUT(*RWX) OBJAUT(*ALL) CHGAUT OBJ(&STMF2) USER(*PUBLIC) DTAAUT(*RWX) OBJAUT(*ALL)
ENDDO
Will leider nicht so ganz kompilieren:
PHP-Code:
7200- CHGVAR VAR(&LIB) VALUE(&LIB *TCAT &LOOP) * CPD0712 30 Art von Operand für Operator ungültig. * CPD0711 30 Art der Ausdrucksoperanden unterschiedlich. 7300- CHGVAR VAR(&DBFILE) VALUE(&DBFILE *TCAT &LOOP) * CPD0712 30 Art von Operand für Operator ungültig. * CPD0711 30 Art der Ausdrucksoperanden unterschiedlich.
-
Über dynamisch erzeugte Variablennamen kann man soweit ich weiß in CL nicht auf Variablen zugreifen.
Aber pack das eigentliche Kopierprogramm doch in ein eigenes Programm (Programm CPYTOCSV2) und mach ein paar CALLs anstelle des DOFORs:
PHP-Code:
CALL PGM(CPYTOCSV2) PARM(&LIB1 &DBFILE1)
CALL PGM(CPYTOCSV2) PARM(&LIB2 &DBFILE2)
CALL PGM(CPYTOCSV2) PARM(&LIB3 &DBFILE3)
CALL PGM(CPYTOCSV2) PARM(&LIB4 &DBFILE4)
CALL PGM(CPYTOCSV2) PARM(&LIB5 &DBFILE5)
...
-
Jep. So machichs. Danke für deine Hilfe.
Problem gelöst. Zwar nicht so elegant wie ich mir das erhofft hatte, aber meh.
Beggars cant be choosers 
MfG
SJürges
-
Lib ist char,
und Loop ist int.
Das geht nicht. Mußt du vorher umwandeln.
GG
Similar Threads
-
By Sony in forum IBM i Hauptforum
Antworten: 27
Letzter Beitrag: 20-07-09, 21:48
-
By schatte in forum NEWSboard Programmierung
Antworten: 19
Letzter Beitrag: 10-01-07, 11:32
-
By RLPforum in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 04-01-07, 14:58
-
By bo1 in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 23-06-06, 15:00
-
By becama in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 23-06-06, 14:46
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