PDA

View Full Version : Kopieren IFS-Daten mit QSHELL



Seiten : [1] 2

Peter P
08-08-17, 12:44
Hallo,
vielleicht kann mir jemand hier einen Tipp geben.

Aufgabe:
Daten aus einem IFS-Verzeichnis in ein anderes IFS-Verzeichnis kopieren (mit *REPLACE)

CPYF ist leider nicht möglich, da der IFS-Dateinname ASCII Zeichen enthält.
Die Dateinamen die im IFS-Verzeichnis stehen sind auch unterschiedlich lang.
Ohne diese ASCII Zeichen im Dateinamen würde es natürlich mit CPYF gehen.

Gibt es einen QSHELL Befehl mit dem ich den Inhalt der Ordner kopieren kann, und der sich nicht an Dateinamen mit ASCII Zeichen stört.
Ein Beispiel wäre auch schön.

Besten Dank
Peter

Fuerchau
08-08-17, 12:53
Das Problem mit dem ASCII-Zeichen verstehe ich nicht.
D.h., dass ein Zeichen im Namen vorkommt, dass nicht in EBCDIC übersetzbar ist?
Für IFS-Objekte gibt es den nativen CPY-Befehl.
In der Qshell heißt der Befehl z.B. "cp file1 [file2] ... ZielVerzeichnis".
Man kann auch mittels "find ... -exec {cp ...}" erst suchen, dann finden. u.v.m.

Peter P
08-08-17, 13:16
Ja es sind nicht übersetzbare Zeichen im Dateinamen
Hier ein Auszug aus dem DEBUG
file:///C:/DOKUME~1/Pflaum/LOKALE~1/Temp/1/XPgrpwise/5989C0ADFrankfurtFRA-PO10013531651170EE1/IMAGE_1.pngfile:///C:/DOKUME~1/Pflaum/LOKALE~1/Temp/1/XPgrpwise/5989C0ADFrankfurtFRA-PO10013531651170EE1/IMAGE_1.png396
Dann probiere ich es mal mit dem CP Befehl, oder bekomme ich diese Zeichen anderweitig weg.

Peter P
08-08-17, 13:57
Da ich nicht so fit in QSH Verarbeitung bin,
wie lautet den der CP Befehl wenn ich den gesamten Inhalt aus Verzeichnis X in das Verzeichnis Y kopieren möchte.
cp /X /Y
oder
cp X/* Y/*

Fuerchau
08-08-17, 14:21
Das das Bild irgendwie aus dem Debugger stammt, vermute ich eher einen Programmfehler bei der Variablendeklaration. Der weiße Block deutet auf Schrottdaten hin. Das deutet auf falsche Längeninformation bzw. inkorrekte Verarbeitung der Längen hin.

Peter P
09-08-17, 07:23
Der Dateiname wird aus dem IFS Ausgelesen und steht dann in einem 256 Stellen Feld
Erst kommt der Name XXXXXXX111111111 dann kommen einige Stellen mit NULL Werten (HEX 00) und dann erst *BLANKS (Hex 40).

Gibt es auch die Möglichkeit mit %SCAN oider %CHECK NULL Werte abzufragen bzw. HEX-Werte ??

Fuerchau
09-08-17, 08:33
Da ich nicht sehe, wie du den Namen der Datei ermittelst gehe ich von einem API aus.
Dieses gibt dir i.d.R. auch die Längeninformation mit. Du brauchst also nur per %subst() auf den Namen zugreifen und eliminierst den Schrott.
Per %scan() kann man natürlich auch nach X'00' bzw. *LOVAL suchen um dann den %subst() zu machen.

Peter P
09-08-17, 10:25
ich habe die NULL Werte (X'00') entfernt, jetzt funktioniert auch der "normale" CPY Befehl.
Danke für die Hilfe

Fuerchau
09-08-17, 10:27
Trotzdem würde ich gerne wissen, welche API's du bei der Ermittlung der IFS-Namen verwendest.
Kannst du das noch mitteilen?

Peter P
09-08-17, 11:12
na klar,
von Scott Klement Working with the IFS in RPG IV
OpenDir, ReadDir, CloseDir usw.