Ich filtere in einem SQL-Skript Daten in ca. 250Ausgabedateien aus und kopiere diese anschließend per cpytoimpf als csv ins IFS. Da ich natürlich nicht 250cpytoimpf-Anweisungen programmieren möchte, mache ich das dynamisch über eineStored Procedure, die ich 250 Mal aufrufe. An diese Prozedur übergebe ich Quelle und Ziel des Kopiervorgangs. Daich in der Prozedur direkt keine CL-Anweisung ausführen kann, rufe ich einCL-Programm aus der Prozedur auf, das den cpy ausführt. Wie hier im Forum schonhäufiger besprochen wurde, ist der cpytoimpf nicht threadsafe, so dass imJoblog die Meldung ‚CPD000D - Befehl *LIBL/CPYTOIMPF nicht sicher für Job mitmehreren Nachrichten‘. Aber dabei steht auch, dass ‚Die Verarbeitung desBefehls wird fortgesetzt.‘
Allerdings hängt sich mein Job tatsächlich auf. Der Cpy wirdausgeführt, aber dann stehen plötzlich beide Threads auf Wait:
Gesamt- Aux Ausführungs-
Thread Status CPU I/O priorität
0000011E TIMW 20,324 106013 20
000006E0 THDW 0,013 100 20

Es scheint so, als ob der eine auf der anderen wartet. Aberwarum?
Gibt es eine Möglichkeit zu verhindern, dass die Prozedurbzw. das CL in mehreren Threads läuft?
- Lt. JobD steht der Parameter ‚Mehrere Threadszulassen‘ auf *NO
- Der Systemwert QQRYDEGREE steht auf *NONE
- OS-Release ist V6R1M0
- Die Optionen ‚Unfenced‘ und ‚disallow parallel‘scheint es in einer Prozedur nicht zu geben
Hat einer eine Idee, warum sich mein Job aufhängt?
Oder wie ich Multi-Threading vermeiden kann?
Oder gibt es eine Alternative zu cpytoimpf, die Threadsafeist?