-
QSH0005 Status 2
Hallo,
habe mir vor einiger Zeit ein CL geschrieben, was mit QSHELL von IFS in die Datei EDIMP01P ausliest.
Das Programm hat toll funktioniert.
Jetzt habe ich eine ähnliche Anforderung und habe mir das Programm kopiert, das PF ausgetaucht mit EDIHLDFP(statt EDIMP01P) und den Ordnerpfad geändert.
Bekomme aber die Fehlermeldung QSH005 Status 2
Code:
cd /EDI/EINK/DE/OUT/TST1/ && ls *.csv > /QSYS.LIB/T_DTA.LIB/EDIHLDFP.FILE/EDIHLDFP.MBR
qsh: 001-0055 Fehler beim Erstellen der Datei /QSYS.LIB/T_DTA.LIB/EDIHLDFP.FILE/EDIHLDFP.MBR gefunden.
Operation nicht unterstützt.
Die Datei hat auch alle Berechtigungen.
Sobald ich die Datei EDIHLDFP mit der alten austausche(EDIMP01P), funktioniert es wieder.
Kann mir jemand einen Tip geben, was ich noch prüfen kann, bzw wo ich mich am besten über dieses Thema einlesen kann?
lg
Code:
/******************************************************************************/
/* */
/* PROGRAM NAME : EDIHLDFIC */
/* */
/* DESCRIPTION : IMPORT CSV FOR EINKAUF */
/* */
/* CREATION : */
/* */
/******************************************************************************/
PGM
DCL VAR(&LOOP) TYPE(*LGL) VALUE('1')
DCL VAR(&NBRREC) TYPE(*DEC) LEN(10 0)
DCL VAR(&CMD) TYPE(*CHAR) LEN(500)
DCL VAR(&STMFIL) TYPE(*CHAR) LEN(512)
DCL VAR(&MOV) TYPE(*CHAR) LEN(512)
DCL VAR(&IFSPATH) TYPE(*CHAR) LEN(22) +
VALUE('/EDI/EINK/DE/OUT/TST1/')
DCL VAR(&TIMESTMP) TYPE(*CHAR) LEN(20)
DCL VAR(&PSTR) TYPE(*CHAR) LEN(512)
DCL VAR(&STR) TYPE(*CHAR) LEN(513)
DCL VAR(&SRCH) TYPE(*CHAR) LEN(4)
DCL VAR(&X00) TYPE(*CHAR) LEN(1) VALUE(X'00')
DCL VAR(&POS) TYPE(*INT) LEN(4)
DCL VAR(&LOWER) TYPE(*CHAR) LEN(512)
DCL VAR(&UPPER) TYPE(*CHAR) LEN(512)
/* Uppercase based on job default CCSID */
DCL VAR(&REQUEST) TYPE(*CHAR) LEN(22) +
VALUE(X'00000001000000000000000000000000000+
000000000')
DCL VAR(&LENGTH) TYPE(*INT) LEN(4) VALUE(512)
DCL VAR(&ERRCODE) TYPE(*INT) LEN(4) VALUE(0)
DCL VAR(&USER) TYPE(*CHAR) LEN(10)
DCL VAR(&MSGID) TYPE(*CHAR) LEN(7)
DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(256)
DCL VAR(&RESULT) TYPE(*CHAR) LEN(4)
DCL VAR(&STATUS) TYPE(*DEC) LEN(10 0)
DCL VAR(&SIGNAL) TYPE(*DEC) LEN(10 0)
DCL VAR(&CHARSTAT) TYPE(*CHAR) LEN(10)
DCL VAR(&CHARSIG) TYPE(*CHAR) LEN(10)
DCLF FILE(EDIHLDFP)
/*========================================*/
/* MAIN */
/*========================================*/
RTVJOBA USER(&USER)
CHGVAR VAR(&SRCH) VALUE('.CSV' *CAT &X00)
/* CREATE A FILE TO PUT LIST IN. NOTE THAT THIS CANNOT BE +
IN QTEMP, SINCE QSHELL CANNOT ACCESS QTEMP */
CHKOBJ OBJ(T_DTA/EDIHLDFP) OBJTYPE(*FILE)
MONMSG MSGID(CPF9801) EXEC(DO)
CRTPF FILE(T_DTA/EDIHLDFP) RCDLEN(512)
ENDDO
/* LIST ALL FILES FROM IFS IN THE EDIHLDFP FILE */
CLRPFM FILE(T_DTA/EDIHLDFP)
RMVENVVAR ENVVAR(QIBM_QSH_CMD_OUTPUT)
MONMSG MSGID(CPFA981) /* ENVVAR DOES NOT EXIST */
RMVENVVAR ENVVAR(QIBM_QSH_CMD_ESCAPE_MSG)
MONMSG MSGID(CPFA981) /* ENVVAR DOES NOT EXIST */
/* SET THE COMMAND OUTPUT TO NONE, AND TELL QSH TO ISSUE +
ESCAPE MESSAGES FOR ERRORS. */
ADDENVVAR ENVVAR(QIBM_QSH_CMD_OUTPUT) VALUE(NONE)
ADDENVVAR ENVVAR(QIBM_QSH_CMD_ESCAPE_MSG) VALUE(Y)
/* EXECUTE QSHELL COMMAND */
CHGVAR VAR(&CMD) VALUE('cd' *BCAT &IFSPATH *BCAT +
'&&' *BCAT 'ls *.csv >' *BCAT +
'/QSYS.LIB/T_DTA.LIB/EDIHLDFP.FILE/EDIH+
LDFP.MBR')
STRQSH CMD(&CMD)
/* HANDLE ERRORS. */
MONMSG MSGID(QSH0005 QSH0006 QSH0007) EXEC(DO)
RCVMSG MSGTYPE(*LAST) RMV(*YES) MSGDTA(&MSGDTA) +
MSGID(&MSGID)
/* CPF0005 - QSHELL COMMAND ENDED "NORMALLY." +
+
NOTE: THIS DOES *NOT* MEAN THAT THE COMMAND +
SUCCEEDED, BUT RATHER THAT THE COMMAND +
WAS NOT ENDED BY ANOTHER PROGRAM OR BY SOME +
KIND OF FAILURE. (THIS IS THE MOST COMMON +
MESSAGE) */
IF COND(&MSGID *EQ 'QSH0005') THEN(DO)
CHGVAR VAR(&RESULT) VALUE(%SST(&MSGDTA 1 4))
CHGVAR VAR(&STATUS) VALUE(%BIN(&RESULT))
CHGVAR VAR(&SIGNAL) VALUE(0)
ENDDO
/* QSH0006 - QSHELL COMMAND ENDED WHEN IT RECEIVED A SIGNAL. */
IF COND(&MSGID *EQ 'QSH0006') THEN(DO)
CHGVAR VAR(&RESULT) VALUE(%SST(&MSGDTA 1 4))
CHGVAR VAR(&SIGNAL) VALUE(%BIN(&RESULT))
CHGVAR VAR(&STATUS) VALUE(-1)
ENDDO
/* QSH0007 - QSHELL COMMAND ENDED DUE TO AN EXCEPTION, +
FOR EXAMPLE THE PROGRAM CRASHED WITH A CPF MSG. */
IF COND(&MSGID *EQ 'QSH0007') THEN(DO)
CHGVAR VAR(&STATUS) VALUE(-1)
CHGVAR VAR(&SIGNAL) VALUE(-1)
ENDDO
ENDDO
/* WHEN &STATUS IS NOT ZERO, WE KNOW OUR COMMAND FAILED. +
HERE WE CAN TRY TO HANDLE THE ERROR IF WE LIKE +
+
THE POSSIBLE VALUES ARE DIFFERENT FOR EACH QSHELL +
COMMAND, SO FOR THE SAKE OF DEMONSTRATION, I'LL JUST +
SEND AN ESCAPE MESSAGE. */
IF COND(&STATUS *NE 0) THEN(DO)
CHGVAR VAR(&CHARSTAT) VALUE(&STATUS)
CHGVAR VAR(&CHARSIG) VALUE(&SIGNAL)
SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA('QShell +
command failed with status ' *CAT +
&CHARSTAT *CAT ' and signal ' *CAT &CHARSIG)
ENDDO
/* RESTORE DEFAULT BEHAVIOR */
CHGENVVAR ENVVAR(QIBM_QSH_CMD_OUTPUT) VALUE(NONE)
CHGENVVAR ENVVAR(QIBM_QSH_CMD_ESCAPE_MSG) VALUE(Y)
/* READ FILENAMES WHAT ARE LISTED */
DOWHILE COND(&LOOP)
RCVF
MONMSG MSGID(CPF0864) EXEC(LEAVE)
:
:
ENDDO
-
Prüfe den genauen Pfad der Ziel-Datei, denn ein Erstellen geht nur im IFS.
Manchmal (durch CRTDUPOBJ) ändert sich zwar der Datei- aber nicht der Membername.
-
Mit wrklnk bin ich bis zum Member gekommen.
Die neue Datei wurde mit CRTPF (opiton 14) erstellt.
Von den Objektberechtigungen sind beide Dateien auch gleich.
-
wir machen das so:
Code:
/* Alle Textdateien im Pfad auflisten und nach qtemp/T_IFS */
dclf qtemp/t_ifs /* vorher mit SL 512 erstellen */
CHGVAR VAR(&QSHC) VALUE('cd ' *CAT &HK *CAT +
&FROMFILE *TCAT &HK *BCAT ' && ls +
*.[Tt][Xx][Tt]')
OVRDBF FILE(STDOUT) TOFILE(QTEMP/T_IFS) OVRSCOPE(*JOB)
CHGJOB JOB(*) LOG(4 0 *NOLIST)
STRQSH CMD(&QSHC)
DLTOVR FILE(STDOUT) LVL(*JOB)
CHGJOB JOB(*) LOG(4 0 *SECLVL)
RCV: RCVF
MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(WEIT))
/* nix gefunden */
IF COND(%SST(&T_IFS 1 6) *EQ ' ') +
THEN(GOTO CMDLBL(WEIT)) /* leer 1 */
IF COND(%SST(&T_IFS 1 7) *EQ 'ls: 001') +
THEN(GOTO CMDLBL(WEIT)) /* leer 2 */
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
-
Könnte es sein, dass die Datei ggf. geöffnet ist?
Die Ausgabe per ">" macht einen CLRPFM, was dann natürlich nicht geht.
Schau mal ins Joblog, ob es noch eine detaillierte Meldung gibt.
-
Leider ist Joblog unauffällig:
Code:
Inhalt der Teildatei EDIHLDFP in Datei EDIHLDFP in T_DTA gelöscht.
Umgebungsvariable ist nicht vorhanden.
Umgebungsvariable ist nicht vorhanden.
Umgebungsvariable hinzugefügt.
Umgebungsvariable hinzugefügt.
Befehl wurde normal mit Ausführungsstatus 2 beendet.
Weitere Nachrichteninformationen
Nachrichten-ID . . . . : QSH0005 Bewertung . . . . . . : 00
Nachrichtenart . . . . : Abbruch
Sendedatum . . . . . . : 17.08.14 Sendezeit . . . . . . : 13:32:40
Nachricht . . . : Befehl wurde normal mit Ausführungsstatus 2 beendet.
Similar Threads
-
By Amadis in forum NEWSboard Drucker
Antworten: 6
Letzter Beitrag: 19-10-15, 16:37
-
By lucullus in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 17-01-14, 10:14
-
By pille in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 28-11-02, 09:37
-
By H.V in forum NEWSboard Drucker
Antworten: 1
Letzter Beitrag: 10-07-02, 14:03
-
By procher in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 11-06-01, 12:51
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