Beispiel für LOAD-Steueranweisungen
Verwenden Sie die Beispiel-Steueranweisungen als Vorlage für die Entwicklung Ihrer eigenen LOAD-Steueranweisungen.
Festlegen der Feldpositionen
Die folgende LOAD-Anweisung gibt an, dass das Dienstprogramm die Datensätze aus dem Datensatz, der durch die SYSREC DD-Anweisung definiert ist, in die Tabelle DSN8810.DEPT laden soll. SYSREC ist der Standard-Eingabedatensatz.
Jede POSITION-Klausel gibt die Position eines Feldes im Eingabedatensatz an. In diesem Beispiel akzeptiert LOAD die Eingabe und interpretiert sie wie folgt:
- Die ersten 3 Bytes jedes Datensatzes werden in die Spalte DEPTNO der Tabelle geladen.
- Die nächsten 36 Bytes, einschließlich der abschließenden Leerzeichen, werden in die Spalte DEPTNAME geladen.
Wenn diese Eingabespalte als VARCHAR(36) definiert wäre, müssten die Eingabedaten ein 2-Byte-Binärlängenfeld enthalten, das den Daten vorausgeht. Dieses binäre Feld würde bei Position 4 beginnen.
- Die nächsten drei Felder werden in Spalten geladen, die als CHAR(6), CHAR(3) und CHAR(16) definiert sind.
Die RESUME YES-Klausel legt fest, dass der Tabellenbereich nicht leer sein muss; neue Datensätze werden am Ende der Tabelle hinzugefügt.
LOAD DATA
RESUME YES
INTO TABLE DSN8C10.DEPT
(DEPTNO POSITION (1:3) CHAR(3),
DEPTNAME POSITION (4:39) CHAR(36),
MGRNO POSITION (40:45) CHAR(6),
ADMRDEPT POSITION (46:48) CHAR(3),
LOCATION POSITION (49:64) CHAR(16))Das folgende Beispiel zeigt die Eingabe für den vorherigen LOAD-Job.
A00SPIFFY COMPUTER SERVICE DIV. 000010A00USIBMSTODB21
B01PLANNING 000020A00USIBMSTODB21
C01INFORMATION CENTER 000030A00USIBMSTODB21
D01DEVELOPMENT CENTER A00USIBMSTODB21Die folgende Tabelle zeigt das Ergebnis der Ausführung der Anweisung SELECT * FROM DSN8C10. DEPT, nachdem die vorhergehenden Eingabedatensätze geladen wurden.
| DEPTNO | KBEZ | MGRNO | ADMRDEPT | POSITION |
|---|---|---|---|---|
| A00 | SPIFFY COMPUTER SERVICE DIV. | 000010 | A00 | USIBMSTODB21 |
| B01 | PLANNING | 000020 | A00 | USIBMSTODB21 |
| C01 | INFORMATION CENTER | 000030 | A00 | USIBMSTODB21 |
| D01 | DEVELOPMENT CENTER | A00 | USIBMSTODB21 |
Ersetzen von Daten in einer bestimmten Partition
Die folgende Steueranweisung gibt an, dass Daten aus dem Datensatz, der durch die SYSREC DD-Anweisung definiert ist, in die erste Partition der Tabelle DSN8810.DEPT geladen werden sollen. Der Standard-Eingabedatensatz ist SYSREC. Die Option "REPLACE" gibt an, dass die Eingabedaten nur die angegebene Partition ersetzen sollen. Wenn die Option REPLACE vor der Option PART angegeben wurde, gibt REPLACE an, dass der gesamte Tabellenbereich ersetzt werden soll und die Daten in die angegebene Partition geladen werden sollen. Beachten Sie, dass das Schlüsselwort DATA nicht angegeben werden muss.
LOAD
INTO TABLE DSN8C10.DEPT PART 1 REPLACEAusgewählte Datensätze in mehrere Tabellen laden
Die folgende LOAD-Anweisung gibt an, dass das Dienstprogramm bestimmte Daten aus dem EMPLDS -Eingabedatensatz in die Tabellen DSN8C10.EMP, SMITH.EMPEMPL und DSN8810.DEPT laden soll. Der Eingabedatensatz wird durch die Option INDDN identifiziert. Die WHEN-Klauseln geben an, welche Datensätze in jede Tabelle geladen werden sollen. Für die Tabellen EMP und DEPT besteht der Nutzen darin, nur Datensätze zu laden, die mit der Zeichenfolge LKA beginnen. Für die EMPEMPL-Tabelle besteht der Nutzen darin, nur Datensätze zu laden, die mit der Zeichenkette ABC beginnen. Die Option "YES" gibt an, dass der Tabellenbereich nicht leer sein muss, damit der LOAD-Job fortgesetzt werden kann. Die neuen Zeilen werden am Ende der Tabellen hinzugefügt. In diesem Beispiel wird davon ausgegangen, dass die ersten beiden zu ladenden Tabellen genau dasselbe Format haben und dass die Eingabedaten diesem Format entsprechen. Daher sind für diese beiden INTO TABLE-Klauseln keine Feldspezifikationen erforderlich. Die dritte Tabelle hat ein anderes Format, sodass Feldspezifikationen erforderlich sind und im Beispiel bereitgestellt werden.
Die drei zu ladenden Tabellen enthalten jeweils eine unterschiedliche Anzahl von Datensätzen. Um die Größe der Sortierarbeitsdatensätze zu verbessern, die das LOAD-Dienstprogramm benötigt, wird die Anzahl der Datensätze, die in jede Tabelle geladen werden, für jede Tabelle im Schlüsselwort NUMRECS angegeben.
Die POSITION-Klauseln geben die Position der Felder in den Eingabedaten für die DEPT-Tabelle an. Für jeden Quelldatensatz, der in die DEPT-Tabelle geladen werden soll:
- Die Zeichen in den Positionen 7–9 werden in die Spalte DEPTNO geladen.
- Die Zeichen in den Positionen 10–35 werden in die Spalte DEPTNAME geladen.
- Die Zeichen in den Positionen 36–41 werden in die Spalte MGRNO geladen.
- Die Zeichen in den Positionen 42–44 werden in die Spalte ADMRDEPT geladen.
LOAD DATA INDDN EMPLDS
RESUME YES
INTO TABLE DSN8C10.EMP
NUMRECS 100000
WHEN (1:3)='LKA'
INTO TABLE SMITH.EMPEMPL
NUMRECS 100
WHEN (1:3)='ABC'
INTO TABLE DSN8C10.DEPT
NUMRECS 500
WHEN (1:3)='LKA'
(DEPTNO POSITION (7:9) CHAR,
DEPTNAME POSITION (10:35) CHAR,
MGRNO POSITION (36:41) CHAR,
ADMRDEPT POSITION (42:44) CHAR)Laden von Daten verschiedener Datentypen
Die folgende LOAD-Anweisung gibt an, dass das Dienstprogramm Daten aus dem SYSRECPJ-Eingabedatensatz in die Tabelle DSN8C10.PROJ laden soll. Der Eingabedatensatz wird durch die Option INDDN identifiziert. Angenommen, der Tabellenbereich, der die Tabelle DSN8C10.PROJ enthält, ist derzeit leer.
Für jeden Eingabedatensatz werden Daten in die angegebenen Spalten (d. h. PROJNO, PROJNAME, DEPTNO usw.) geladen, um eine Tabellenzeile zu bilden. Alle anderen PROJ-Spalten, die nicht in der LOAD-Steueranweisung angegeben sind, werden auf den Standardwert gesetzt.
Die POSITION-Klauseln definieren die Startpositionen der Felder im Eingabedatensatz. Die Endpositionen der Felder im Eingabedatensatz werden implizit entweder durch die Längenangabe des Datentyps (CHAR-Länge ) oder die Längenangabe des externen numerischen Datentyps (LÄNGE) definiert.
Die numerischen Daten, die im SQL-Konstantenformat (EXTERNAL-Format) dargestellt werden, werden vom LOAD-Prozess in das richtige interne Format konvertiert und in den angegebenen Spaltennamen platziert. Es wird davon ausgegangen, dass die beiden Daten (PRSTDATE und PRENDATE) durch acht Ziffern und zwei Trennzeichen dargestellt werden, wie im USA-Format (z. B. 15.11.2006). Die Länge der Datumsfelder wird ausdrücklich mit 10 angegeben, obwohl in vielen Fällen der Standardwert derselbe ist.
LOAD DATA INDDN(SYSRECPJ)
INTO TABLE DSN8C10.PROJ
(PROJNO POSITION (1) CHAR(6),
PROJNAME POSITION (8) CHAR(22),
DEPTNO POSITION (31) CHAR(3),
RESPEMP POSITION (35) CHAR(6),
PRSTAFF POSITION (42) DECIMAL EXTERNAL(5),
PRSTDATE POSITION (48) DATE EXTERNAL(10),
PRENDATE POSITION (59) DATE EXTERNAL(10),
MAJPROJ POSITION (70) CHAR(6))Laden von Daten im Format "getrennte Werte"
Die Steueranweisung gibt an, dass Daten im Format mit Trennzeichen in die angegebenen Spalten (FILENO, DATE1, TIME1 und TIMESTMP) in der Tabelle TBQB0103 geladen werden sollen. Die Option "FORMAT DELIMITED" gibt an, dass die Daten im Format "delimited" vorliegen. Die Daten werden standardmäßig aus dem SYSREC-Datensatz geladen.
Die Option COLDEL gibt an, dass das Spaltentrennzeichen ein Komma (,) ist. Die Option CHARDEL gibt an, dass das Trennzeichen für die Zeichenkette ein doppeltes Anführungszeichen (") ist. Die Option DECPT gibt an, dass das Dezimalzeichen ein Punkt (.) ist. Sie müssen diese Zeichen nicht explizit angeben, da es sich bei allen um Standardzeichen handelt.
//*
//STEP3 EXEC DSNUPROC,UID='JUQBU101.LOAD2',TIME=1440,
// UTPROC='',
// SYSTEM='SSTR'
//SYSERR DD DSN=JUQBU101.LOAD2.STEP3.SYSERR,
// DISP=(MOD,DELETE,CATLG),UNIT=SYSDA,
// SPACE=(4096,(20,20),,,ROUND)
//SYSDISC DD DSN=JUQBU101.LOAD2.STEP3.SYSDISC,
// DISP=(MOD,DELETE,CATLG),UNIT=SYSDA,
// SPACE=(4096,(20,20),,,ROUND)
//SYSMAP DD DSN=JUQBU101.LOAD2.STEP3.SYSMAP,
// DISP=(MOD,DELETE,CATLG),UNIT=SYSDA,
// SPACE=(4096,(20,20),,,ROUND)
//SYSUT1 DD DSN=JUQBU101.LOAD2.STEP3.SYSUT1,
// DISP=(MOD,DELETE,CATLG),UNIT=SYSDA,
// SPACE=(4096,(20,20),,,ROUND)
//UTPRINT DD SYSOUT=*
//SORTOUT DD DSN=JUQBU101.LOAD2.STEP3.SORTOUT,
// DISP=(MOD,DELETE,CATLG),UNIT=SYSDA,
// SPACE=(4096,(20,20),,,ROUND)
//SYSIN DD *
LOAD DATA
FORMAT DELIMITED COLDEL ',' CHARDEL '"' DECPT '.'
INTO TABLE TBQB0103
(FILENO CHAR,
DATE1 DATE EXTERNAL,
TIME1 TIME EXTERNAL,
TIMESTMP TIMESTAMP EXTERNAL)
/*
//SYSREC DD *
"001", 2000-02-16, 00.00.00, 2000-02-16-00.00.00.0000
"002", 2001-04-17, 06.30.00, 2001-04-17-06.30.00.2000
"003", 2002-06-18, 12.30.59, 2002-06-18-12.30.59.4000
"004", 1991-08-19, 18.59.30, 1991-08-19-18.59.30.8000
"005", 2000-12-20, 24.00.00, 2000-12-20-24.00.00.0000
/*Verknüpfung mehrerer Eingabedatensätze
Die folgende LOAD-Anweisung gibt an, dass Daten aus dem SYSRECOV-Eingabedatensatz in die Tabelle DSN8C10.TOPTVAL geladen werden sollen. Der Eingabedatensatz wird durch die Option INDDN identifiziert. Der Tabellenbereich, der die TOPTVAL-Tabelle enthält, ist derzeit leer.
Einige der Daten, die in eine einzelne Zeile geladen werden sollen, erstrecken sich über mehr als einen Eingabedatensatz. In dieser Situation zeigt ein X in Spalte 72 an, dass der Eingabedatensatz Felder enthält, die in dieselbe Zeile geladen werden sollen wie die Felder im nächsten Eingabedatensatz. In der LOAD-Steuerungsanweisung gibt CONTINUEIF(72:72)='X' an, dass LOAD alle Eingabedatensätze, die in Spalte 72 ein X enthalten, mit dem nächsten Datensatz verketten soll, bevor die Daten geladen werden.
Für jeden zusammengestellten Eingabedatensatz (d. h. nach der Verkettung) werden Felder in die Spalten der DSN8C10.TOPTVAL-Tabelle geladen (d. h. MAJSYS, ACTION, OBJECT... DSPINDEX), um eine Tabellenzeile zu bilden. Alle Spalten, die nicht in der LOAD-Steuerungsanweisung angegeben sind, werden auf den Standardwert gesetzt.
Die POSITION-Klauseln definieren die Startpositionen der Felder in den zusammengesetzten Eingabedatensätzen. Die Startpositionen werden ab der ersten Spalte des intern zusammengestellten Eingabedatensatzes nummeriert, nicht ab dem Beginn der Eingabedatensätze im sequenziellen Datensatz. Die Endpositionen der Felder werden implizit durch die Längenangabe des Datentyps (CHAR-Länge ) definiert.
Es sind keine Konvertierungen erforderlich, um die eingegebenen Zeichenketten in die dafür vorgesehenen Spalten zu laden, die ebenfalls als Zeichenketten mit fester Länge definiert sind. Da die Spalten INFOTXT, HELPTXT und PFKTXT jedoch eine Länge von 79 Zeichen haben und die zu ladenden Zeichenketten eine Länge von 71 Zeichen haben, werden diese Zeichenketten beim Laden mit Leerzeichen aufgefüllt.
LOAD DATA INDDN(SYSRECOV) CONTINUEIF(72:72)='X'
INTO TABLE DSN8C10.TOPTVAL
(MAJSYS POSITION (2) CHAR(1),
ACTION POSITION (4) CHAR(1),
OBJECT POSITION (6) CHAR(2),
SRCHCRIT POSITION (9) CHAR(2),
SCRTYPE POSITION (12) CHAR(1),
HEADTXT POSITION (80) CHAR(50),
SELTXT POSITION (159) CHAR(50),
INFOTXT POSITION (238) CHAR(71),
HELPTXT POSITION (317) CHAR(71),
PFKTXT POSITION (396) CHAR(71),
DSPINDEX POSITION (475) CHAR(2))Laden von Nullwerten
Die folgende LOAD-Anweisung gibt an, dass Daten aus dem SYSRECST-Datensatz in die angegebenen Spalten in der Tabelle SYSIBM.SYSSTRINGS geladen werden sollen. Der Eingabedatensatz wird durch die Option INDDN identifiziert. Die Option NULLIF für die Spalten ERRORBYTE und SUBBYTE gibt an, dass LOAD einen Nullwert in die angegebene Spalte für diese bestimmte Zeile einfügt, wenn das Eingabefeld ein Leerzeichen enthält. Die Option DEFAULTIF für die Spalte TRANSTAB gibt an, dass das Dienstprogramm den Standardwert für diese Spalte laden soll, wenn der Wert des Eingabefelds GG ist. Die Option CONTINUEIF gibt an, dass LOAD alle Eingabedatensätze, die in Spalte 80 ein X enthalten, mit dem nächsten Datensatz verknüpfen soll, bevor die Daten geladen werden.
LOAD DATA INDDN(SYSRECST) CONTINUEIF(80:80)='X' RESUME(YES)
INTO TABLE SYSIBM.SYSSTRINGS
(INCCSID POSITION( 1) INTEGER EXTERNAL(5),
OUTCCSID POSITION( 7) INTEGER EXTERNAL(5),
TRANSTYPE POSITION( 13) CHAR(2),
ERRORBYTE POSITION( 16) CHAR(1) NULLIF(ERRORBYTE=' '),
SUBBYTE POSITION( 18) CHAR(1) NULLIF(SUBBYTE=' '),
TRANSPROC POSITION( 20) CHAR(8),
IBMREQD POSITION( 29) CHAR(1),
TRANSTAB POSITION( 31) CHAR(256) DEFAULTIF(TRANSTYPE='GG'))Durchsetzung von Referenzbeschränkungen beim Laden von Daten
Die folgende LOAD-Anweisung gibt an, dass Daten aus dem SYSREC-Eingabedatensatz in die Tabelle DSN8C10.PROJ geladen werden sollen. Der Standard-Eingabedatensatz ist SYSREC. Der Tabellenbereich, der die Tabelle PROJ enthält, ist nicht leer. "RESUME YES" gibt an, dass die Datensätze am Ende der Tabelle hinzugefügt werden sollen.
Die Option "ENFORCE CONSTRAINTS" gibt an, dass LOAD referenzielle Einschränkungen für die hinzugefügten Daten erzwingen soll. Diese Option ist auch die Standardeinstellung. Alle Verstöße werden in der Ausgabe gemeldet. Alle Datensätze, die diese Verstöße verursachen, werden nicht geladen und in den SYSDISC-Datensatz eingefügt, der der Standarddatensatz für verworfene Datensätze ist.
Die Option CONTINUEIF gibt an, dass LOAD vor dem Laden der Daten alle Eingabedatensätze, die in Spalte 72 ein X enthalten, mit dem nächsten Datensatz verketten soll.
LOAD DATA INDDN(SYSREC) CONTINUEIF(72:72)='X'
RESUME YES
ENFORCE CONSTRAINTS
INTO TABLE DSN8C10.PROJ
(PROJNO POSITION (1) CHAR (6),
PROJNAME POSITION (8) VARCHAR,
DEPTNO POSITION (33) CHAR (3),
RESPEMP POSITION (37) CHAR (6),
PRSTAFF POSITION (44) DECIMAL EXTERNAL (5),
PRSTDATE POSITION (50) DATE EXTERNAL,
PRENDATE POSITION (61) DATE EXTERNAL,
MAJPROJ POSITION (80) CHAR (6) NULLIF(MAJPROJ=' '))Laden von Daten ohne Durchsetzung von referenziellen Beschränkungen
Die folgende LOAD-Anweisung gibt an, dass Daten aus dem SYSRECAC-Eingabedatensatz in die Tabelle DSN8810.ACT geladen werden sollen. Die INDDN-Option identifiziert den Eingabedatensatz.
ENFORCE NO gibt an, dass das Dienstprogramm LOAD keine referenziellen Beschränkungen erzwingen soll und die Tabelle in den Status CHECK-pending versetzt. Verwenden Sie diese Option, wenn Sie Daten in mehrere Tabellen laden, die so miteinander verknüpft sind, dass die referenziellen Einschränkungen erst überprüft werden können, wenn alle Tabellen geladen sind. Zum Beispiel hängt eine Spalte in Tabelle A von einer Spalte in Tabelle B ab; eine Spalte in Tabelle B hängt von einer Spalte in Tabelle C ab; und eine Spalte in Tabelle C hängt von einer Spalte in Tabelle A ab.
Die POSITION-Klauseln definieren die Startpositionen der Felder im Eingabedatensatz. Die Endpositionen der Felder im Eingabedatensatz werden implizit durch die Längenangabe des Datentyps (CHAR-Länge ) definiert. In diesem Fall werden die Zeichen in den Positionen 1 bis 3 in die Spalte ACTNO geladen, die Zeichen in den Positionen 5 bis 10 in die Spalte ACTKWD und die Zeichen ab Position 13 in die Spalte ACTDESC. Da die Spalte ACTDESC vom Typ VARCHAR ist, müssen die Eingabedaten ein 2-Byte-Binärfeld enthalten, das die Länge des Zeichenfelds angibt. Dieses binäre Feld beginnt an Position 13.
//STEP1 EXEC DSNUPROC,UID='IUIQU2UB.LOAD',
// UTPROC='',
// SYSTEM='DSN'
//SYSRECAC DD DSN=IUIQU2UB.LOAD.DATA,DISP=SHR,VOL=SER=SCR03,
// UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)
//SYSUT1 DD DSN=IUIQU2UB.LOAD.STEP1.SYSUT1,
// DISP=(MOD,DELETE,CATLG),
// UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)
//SORTOUT DD DSN=IUIQU2UB.LOAD.STEP1.SORTOUT,
// DISP=(MOD,DELETE,CATLG),
// UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)
//SYSIN DD *
LOAD DATA INDDN(SYSRECAC) RESUME YES
INTO TABLE DSN8C10.ACT
(ACTNO POSITION(1) INTEGER EXTERNAL(3),
ACTKWD POSITION(5) CHAR(6),
ACTDESC POSITION(13) VARCHAR)
ENFORCE NO
//*Daten laden und einen parallelen Indexaufbau verwenden
Die folgende LOAD-Anweisung gibt an, dass Daten aus dem SYSREC-Eingabedatensatz in die Tabelle DSN8810.DEPT geladen werden sollen. Angenommen , es müssen 22.000 Zeilen in die Tabelle DSN8C10.DEPT geladen werden, die über drei Indizes verfügt. In diesem Beispiel wird die Option SORTKEYS verwendet, um die Leistung zu verbessern, indem ein paralleler Indexaufbau erzwungen wird. Die Option SORTKEYS gibt 66.000 als Schätzwert für die Anzahl der Schlüssel an, die während der SORTBLD-Phase parallel sortiert werden sollen. (Diese Schätzung wurde anhand der unter "Verbesserung der LOAD-Leistung " beschriebenen Berechnung ermittelt.) Da mehr als ein Index erstellt werden muss, erstellt LOAD die Indizes parallel.
Die Schlüsselwörter SORTDEVT und SORTNUM geben an, dass das Sortierprogramm die erforderlichen Datensätze dynamisch zuweisen soll. Wenn ausreichend virtuelle Speicherressourcen verfügbar sind, wird ein Dienstprogramm-Unteraufgabenpaar gestartet, um jeden Index zu erstellen. Dieses Beispiel erfordert keine UTPRINnn DD-Anweisungen, da es DSNUPROC verwendet, um die Utility-Verarbeitung aufzurufen, die eine DD-Anweisung enthält, die UTPRINT SYSOUT zuweist.
Die Option CONTINUEIF gibt an, dass LOAD vor dem Laden der Daten alle Eingabedatensätze, die in Spalte 79 und Spalte 80 ein Pluszeichen (+) enthalten, mit dem nächsten Datensatz verketten soll.
//SAMPJOB JOB …
//STEP1 EXEC DSNUPROC,UID='SAMPJOB.LOAD',UTPROC='',SYSTEM='DSN'
//SORTOUT DD DSN=SAMPJOB.LOAD.STEP1.SORTOUT,DISP=(MOD,DELETE,CATLG),
// UNIT=SYSDA,SPACE=(CYL,(10,20),,,ROUND)
//SYSUT1 DD DSN=SAMPJOB.LOAD.STEP1.SYSUT1,DISP=(MOD,DELETE,CATLG),
// UNIT=SYSDA,SPACE=(CYL,(10,20),,,ROUND)
//SYSERR DD DSN=SAMPJOB.LOAD.STEP1.SYSERR,DISP=(MOD,DELETE,CATLG),
// UNIT=SYSDA,SPACE=(2000,(20,20),,,ROUND)
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=2400)
//SYSMAP DD DSN=SAMPJOB.LOAD.STEP1.SYSMAP,DISP=(MOD,DELETE,CATLG),
// UNIT=SYSDA,SPACE=(2000,(20,20),,,ROUND),
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=2400)
//SYSREC DSN=SAMPJOB.TEMP.DATA,DISP=SHR,UNIT=SYSDA
//SYSIN DD *
LOAD DATA REPLACE INDDN SYSREC CONTINUEIF(79:80)='++'
SORTKEYS 66000 SORTDEVT SYSDA SORTNUM 3
INTO TABLE DSN8C10.DEPT
/*Erstellen von Inline-Kopien mit der Option "REPLACE"
Die folgende LOAD-Anweisung gibt an, dass das Dienstprogramm Daten aus dem SYSREC-Datensatz in die angegebenen Spalten der Tabelle ADMF001.TB0S3902 laden soll.
COPYDDN( COPYT1 ) gibt an, dass LOAD Inline-Kopien erstellen und die primäre Bildkopie in den Datensatz schreiben soll, der durch die Vorlage COPYT1 definiert ist. Diese Vorlage ist in einer der vorangehenden TEMPLATE-Steueranweisungen definiert.
Um eine Inline-Kopie zu erstellen, können Sie die Option "REPLACE" angeben, die angibt, dass alle Daten im Tabellenbereich ersetzt werden sollen.
CONTINUEIF(79:80)='++' gibt an, dass LOAD vor dem Laden der Daten alle Eingabedatensätze, die in Spalte 79 und Spalte 80 ein Pluszeichen (+) enthalten, mit dem nächsten Datensatz verketten soll.
Die Optionen ERRDDN(ERRDDN) und MAPDDN(MAP) geben an, dass Informationen über Fehler in die Datensätze geschrieben werden sollen, die durch die Vorlagen ERRDDN und MAP definiert sind. DISCARDDN(DISCARD) gibt an, dass verworfene Datensätze (die gegen referenzielle Einschränkungen verstoßen) in den Datensatz geschrieben werden sollen, der durch die DISCARD-Vorlage definiert ist. WORKDDN( UT1,OUT ) gibt die temporären Arbeitsdateien für die Sortierungseingabe und -ausgabe an; LOAD verwendet den Datensatz, der durch die Vorlage UT1 für die Sortierungseingabe definiert ist, und den Datensatz, der durch die Vorlage OUT für die Sortierungsausgabe definiert ist.
//STEP1 EXEC DSNUPROC,UID='JUOSU339.LOAD1',TIME=1440,
// UTPROC='',
// SYSTEM='SSTR'
//SYSREC DD DSN=CUST.FM.CINT135.DATA,DISP=SHR,VOL=SER=FORDMD,
// UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)
//SYSIN DD *
TEMPLATE ERRDDN UNIT(SYSDA)
DSN(JUOSU339.T&TI..&ST..ERRDDN)
SPACE(50,10) TRK
TEMPLATE UT1 UNIT(SYSDA)
DSN(JUOSU339.T&TI..&ST..SYSUT1)
SPACE(50,10) TRK
TEMPLATE OUT UNIT(SYSDA)
DSN(JUOSU339.T&TI..&ST..SYSOUT)
SPACE(50,10) TRK
TEMPLATE MAP UNIT(SYSDA)
DSN(JUOSU339.T&TI..&ST..SYSMAP)
SPACE(50,10) TRK
TEMPLATE DISCARD UNIT(SYSDA)
DSN(JUOSU339.T&TI..&ST..DISCARD)
SPACE(50,10) TRK
TEMPLATE COPYT1
UNIT(SYSDA)
DSN(JUOSU339.COPY1.STEP1.&SN..COPY&LR.&PB.)
DISP(MOD,CATLG,CATLG)
SPACE(60,30) TRK
LOAD DATA INDDN SYSREC REPLACE
CONTINUEIF(79:80)='++'
COPYDDN(COPYT1)
ERRDDN(ERRDDN)
WORKDDN(UT1,OUT)
MAPDDN(MAP)
DISCARDDN(DISCARD)
INTO TABLE
ADMF001.TBOS3902
( ID_PARTITION POSITION(1) CHAR(1),
CD_PLANT POSITION(2) CHAR(5),
NO_PART_BASE POSITION(7) CHAR(9),
NO_PART_PREFIX POSITION(16) CHAR(7),
NO_PART_SUFFIX POSITION(23) CHAR(8),
NO_PART_CONTROL POSITION(31) CHAR(3),
DT_TRANS_EFFECTIVE POSITION(34) DATE EXTERNAL(10),
CD_INV_TRANSACTION POSITION(44) CHAR(3),
TS_PROCESS POSITION(47) TIMESTAMP EXTERNAL(26),
QT_INV_TRANSACTION POSITION(73) INTEGER,
CD_UNIT_MEAS_USAGE POSITION(77) CHAR(2),
CD_USER_ID POSITION(79) CHAR(7),
NO_DEPT POSITION(86) CHAR(4),
NO_WORK_CENTER POSITION(90) CHAR(6))
/* 
Erstellen von Inline-Kopien während der Serialisierung auf Partitionsebene
Um eine Inline-Bildkopie zu erstellen, während auf Partitionsebene serialisiert wird, geben Sie LOAD mit COPYDDN (oder RECOVERYDDN) auf Anweisungsebene aus, während Sie resume-spec auf der Ebene INTO TABLE PART angeben, wie im folgenden Beispiel gezeigt. Die resultierende Inline-Kopie enthält nur Seiten für Partitionen, die in der Anweisung angegeben sind.
TEMPLATE SCPY DISP(NEW,CATLG,CATLG)
DSN MYHLQ.&DB..&TS..P&PA.
LOAD DATA SHRLEVEL NONE
FORMAT DELIMITED COPYDDN(SCPY)
INTO TABLE MY.TABLEA PART 1 RESUME YES
INDDN SREC1
(“ID” POSITION(*) INTEGER
,“NAME” POSITION(*) VARCHAR
)
INTO TABLE MY.TABLEA PART 2 RESUME YES
INDDN SREC2
(“ID” POSITION(*) INTEGER
,“NAME” POSITION(*) VARCHAR
)
/*

Erfassen von Statistikdaten
Dieses Beispiel ähnelt dem vorherigen Beispiel, außer dass die Option STATISTICS und andere verwandte Optionen hinzugefügt wurden, sodass während des LOAD-Jobs Db2 auch Statistiken für den Tabellenbereich erfasst werden. Durch das Sammeln dieser Statistiken entfällt die Notwendigkeit, nach Abschluss des LOAD-Vorgangs das RUNSTATS-Dienstprogramm auszuführen.
Die Optionen "TABLE", "COLUMN" und "INDEX" geben an, dass Informationen für die Spalten QT_INV_TRANSACTION, NO_DEPT, NO_PART_PREFIX, DT_TRANS_EFFECTIVE und den Index ID0S3902 für die Tabelle TB0S3902 gesammelt werden sollen. BEISPIEL 53 gibt an, dass LOAD 53 % der Zeilen abtasten soll, wenn Statistiken über nicht-führende indizierte Spalten eines Index oder nicht indizierte Spalten erfasst werden. Für den Index werden standardmäßig Statistiken zu allen eindeutigen Werten in allen Schlüsselspaltenkombinationen gesammelt. FREQVAL NUMCOLS 4 COUNT 20 gibt an, dass 20 häufige Werte für die Verkettung der ersten vier Schlüsselspalten gesammelt werden sollen.
BERICHT JA bedeutet, dass die Statistiken als Ausgabe an SYSPRINT gesendet werden sollen. "UPDATE ALL" und "HISTORY ALL" zeigen an, dass alle gesammelten Statistiken im Katalog und in den Katalogverlaufstabellen aktualisiert werden sollen.
//STEP1 EXEC DSNUPROC,UID='JUOSU339.LOAD1',TIME=1440,
// UTPROC='',
// SYSTEM='SSTR'
//SYSREC DD DSN=CUST.FM.CINT135.DATA,DISP=SHR,VOL=SER=FORDMD,
// UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)
//SYSIN DD *
TEMPLATE ERRDDN UNIT(SYSDA)
DSN(JUOSU339.T&TI..&ST..ERRDDN)
SPACE(50,10) TRK
TEMPLATE UT1 UNIT(SYSDA)
DSN(JUOSU339.T&TI..&ST..SYSUT1)
SPACE(50,10) TRK
TEMPLATE OUT UNIT(SYSDA)
DSN(JUOSU339.T&TI..&ST..SYSOUT)
SPACE(50,10) TRK
TEMPLATE MAP UNIT(SYSDA)
DSN(JUOSU339.T&TI..&ST..SYSMAP)
SPACE(50,10) TRK
TEMPLATE DISCARD UNIT(SYSDA)
DSN(JUOSU339.T&TI..&ST..DISCARD)
SPACE(50,10) TRK
TEMPLATE COPYT1
UNIT(SYSDA)
DSN(JUOSU339.COPY1.STEP1.&SN..COPY&LR.&PB.)
DISP(MOD,CATLG,CATLG)
SPACE(60,30) TRK
LOAD DATA INDDN SYSREC REPLACE
CONTINUEIF(79:80)='++'
COPYDDN(COPYT1)
STATISTICS
TABLE (TBOS3902) SAMPLE 53
COLUMN (QT_INV_TRANSACTION,
NO_DEPT,
NO_PART_PREFIX,
DT_TRANS_EFFECTIVE)
INDEX (IDOS3902
FREQVAL NUMCOLS 4 COUNT 20)
REPORT YES UPDATE ALL HISTORY ALL
ERRDDN(ERRDDN)
WORKDDN(UT1,OUT)
MAPDDN(MAP)
DISCARDDN(DISCARD)
INTO TABLE
ADMF001.TBOS3902
( ID_PARTITION POSITION(1) CHAR(1),
CD_PLANT POSITION(2) CHAR(5),
NO_PART_BASE POSITION(7) CHAR(9),
NO_PART_PREFIX POSITION(16) CHAR(7),
NO_PART_SUFFIX POSITION(23) CHAR(8),
NO_PART_CONTROL POSITION(31) CHAR(3),
DT_TRANS_EFFECTIVE POSITION(34) DATE EXTERNAL(10),
CD_INV_TRANSACTION POSITION(44) CHAR(3),
TS_PROCESS POSITION(47) TIMESTAMP EXTERNAL(26),
QT_INV_TRANSACTION POSITION(73) INTEGER,
CD_UNIT_MEAS_USAGE POSITION(77) CHAR(2),
CD_USER_ID POSITION(79) CHAR(7),
NO_DEPT POSITION(86) CHAR(4),
NO_WORK_CENTER POSITION(90) CHAR(6))
/* Laden von Unicode-Daten
Die folgende Steueranweisung gibt an, dass Unicode-Daten aus dem Eingabedatensatz REC1 in die Tabelle ADMF001.TBMG0301 geladen werden sollen. Die UNICODE-Option gibt den Typ der Eingabedaten an. Es dürfen nur Daten geladen werden, die die in der WHEN-Klausel angegebene Bedingung erfüllen. Die CCSID-Option gibt die drei codierten Zeichensatzbezeichner für die Eingabedatei an: einen für SBCS-Daten, einen für gemischte Daten und einen für DBCS-Daten. LOG YES gibt an, dass während des LOAD-Jobs eine Protokollierung erfolgen soll.
LOAD DATA INDDN REC1 LOG YES REPLACE
UNICODE CCSID(00367,01208,01200)
INTO TABLE "ADMF001 "."TBMG0301"
WHEN(00004:00005 = X'0003') Laden von Daten aus mehreren Eingabedatensätzen mithilfe von Partitionsparallelität
Die folgende LOAD-Anweisung enthält eine Reihe von INTO TABLE-Anweisungen, die angeben, welche Daten in welche Partitionen der Tabelle DBA01.TBLX3303 geladen werden sollen. Für jede INTO TABLE-Anweisung:
- Die Daten werden in die Partition geladen, die durch die Option PART identifiziert wird. Zum Beispiel gibt die erste INTO TABLE-Anweisung an, dass Daten in die erste Partition der Tabelle DBA01.TBLX3303 geladen werden sollen.
- Die Daten werden aus dem Datensatz geladen, der durch die Option INDDN identifiziert wird. Zum Beispiel sollen die Daten aus dem Datensatz PART1 in die erste Partition geladen werden.
- Alle verworfenen Zeilen werden in den Datensatz geschrieben, der durch die Option DISCARDDN angegeben wird. Beispielsweise werden Zeilen, die beim Laden von Daten aus dem Datensatz PART1 verworfen werden, in den Datensatz DISC1 geschrieben.
- Die Daten werden in die angegebenen Spalten (EMPNO, LASTNAME und SALARY) geladen.
LOAD verwendet Partitionsparallelität, um die Daten in diese Partitionen zu laden.
Die Steueranweisung des TEMPLATE-Dienstprogramms definiert die Benennungskonvention für den Datensatz, der während des folgenden LOAD-Jobs dynamisch zugewiesen werden soll. Der Name der Vorlage lautet ERR3. Die Option ERRDDN in der LOAD-Anweisung gibt an, dass alle Fehler in den Datensatz geschrieben werden, der durch diese ERR3 -Vorlage definiert ist.
TEMPLATE ERR3
DSN &UT..&JO..&ST..ERR3&MO.&DAY.
UNIT SYSDA DISP(NEW,CATLG,CATLG)
LOAD DATA
REPLACE
ERRDDN ERR3
INTO TABLE DBA01.TBLX3303
PART 1
INDDN PART1
DISCARDDN DISC1
(EMPNO POSITION(1) CHAR(6),
LASTNAME POSITION(8) VARCHAR(15),
SALARY POSITION(25) DECIMAL(9,2))
.
.
.
INTO TABLE DBA01.TBLX3303
PART 5
INDDN PART5
DISCARDDN DISC5
(EMPNO POSITION(1) CHAR(6),
LASTNAME POSITION(8) VARCHAR(15),
SALARY POSITION(25) DECIMAL(9,2))
/* Laden von Daten aus einer anderen Tabelle im selben System mithilfe eines deklarierten Cursors
Die folgende LOAD-Steuerungsanweisung gibt an, dass alle Zeilen, die durch den Cursor C1 identifiziert werden, in die Tabelle MYEMP geladen werden sollen. Die INCURSOR-Option wird verwendet, um den Cursor C1 zu spezifizieren, der in der Steueranweisung des EXEC SQL-Dienstprogramms definiert ist. Der Cursor C1 zeigt auf die Zeilen, die durch die Ausführung der Anweisung SELECT * FROM DSN8810.EMP zurückgegeben werden. In diesem Beispiel sind die Spaltennamen in der Tabelle DSN8810.EMP identisch mit den Spaltennamen in der Tabelle MYEMP. Beachten Sie, dass der Cursor nicht in derselben Tabelle definiert werden kann, in die Db2 die Daten geladen werden sollen.
EXEC SQL
DECLARE C1 CURSOR FOR SELECT * FROM DSN8810.EMP
ENDEXEC
LOAD DATA
INCURSOR(C1)
REPLACE
INTO TABLE MYEMP
STATISTICSGleichzeitiges Laden von Datenpartitionen von einem entfernten Standort mithilfe eines deklarierten Cursors
Die folgende LOAD-Anweisung gibt an, dass für jede angegebene Partition der Tabelle MYEMPP die Zeilen geladen werden sollen, die durch den angegebenen Cursor identifiziert werden. In jeder INTO TABLE-Anweisung gibt die PART-Option die Partitionsnummer und die INCURSOR-Option den Cursor an. Zum Beispiel sollen die Zeilen, die durch den Cursor C1 gekennzeichnet sind, in die erste Partition geladen werden. Die Daten für jede Partition werden parallel geladen.
Jeder Cursor wird in einer separaten Steueranweisung des EXEC SQL-Dienstprogramms definiert und zeigt auf die Zeilen, die durch die Ausführung der angegebenen SELECT-Anweisung zurückgegeben werden. Diese SELECT-Anweisung wird auf einer Tabelle auf einem Remote-Server ausgeführt, sodass der dreiteilige Name zur Identifizierung der Tabelle verwendet wird. In diesem Beispiel sind die Spaltennamen in der Tabelle CHICAGO.DSN8810.EMP mit den Spaltennamen in der Tabelle MYEMPP identisch.
Die vier Trennwände, die geladen werden, enthalten jeweils eine unterschiedliche Anzahl von Datensätzen. Um die Größe der Sortierarbeitsdatensätze zu verbessern, die das LOAD-Dienstprogramm benötigt, wird die Anzahl der Datensätze, die in jede Partition geladen werden, für jede Tabelle im Schlüsselwort NUMRECS angegeben.
EXEC SQL
DECLARE C1 CURSOR FOR SELECT * FROM CHICAGO.DSN8810.EMP
WHERE EMPNO <= '099999'
ENDEXEC
EXEC SQL
DECLARE C2 CURSOR FOR SELECT * FROM CHICAGO.DSN8810.EMP
WHERE EMPNO > '099999' AND EMPNO <= '199999'
ENDEXEC
EXEC SQL
DECLARE C3 CURSOR FOR SELECT * FROM CHICAGO.DSN8810.EMP
WHERE EMPNO > '199999' AND EMPNO <= '299999'
ENDEXEC
EXEC SQL
DECLARE C4 CURSOR FOR SELECT * FROM CHICAGO.DSN8810.EMP
WHERE EMPNO > '299999' AND EMPNO <= '999999'
ENDEXEC
LOAD DATA
INTO TABLE MYEMPP PART 1 REPLACE INCURSOR(C1) NUMRECS 10000
INTO TABLE MYEMPP PART 2 REPLACE INCURSOR(C2) NUMRECS 50000
INTO TABLE MYEMPP PART 3 REPLACE INCURSOR(C3) NUMRECS 100000
INTO TABLE MYEMPP PART 4 REPLACE INCURSOR(C4) NUMRECS 50000Laden von LOB-Daten aus einer Datei
Die folgende LOAD-Anweisung gibt an, dass Daten von 000130DSN!10.SDSNIVPD(DSN8R130 in die Tabelle MY_EMP_PHOTO_RESUME geladen werden sollen. Die Zeichen in den Positionen 1 bis 6 werden in die Spalte EMPNO geladen, und die Zeichen ab Position 7 werden in die Spalte RESUME geladen. CLOBF gibt an, dass die Zeichen an Position 7 der Name einer Datei sind, aus der ein CLOB geladen werden soll.
"ERSETZEN" bedeutet, dass die neuen Daten alle vorhandenen Daten ersetzen. Obwohl keine Protokollierung erfolgen soll, wie durch die Option LOG NO angegeben, darf der Tabellenbereich nicht in den Status CHECK-pending gesetzt werden, da NOCOPYPEND angegeben ist.
SORTKEYS 1 gibt an, dass ein Indexschlüssel sortiert werden soll.
//*****************************************************************
//* LOAD LOB from file
//*****************************************************************
//LOADIT EXEC DSNUPROC,UID='LOADIT',TIME=1440,
// UTPROC='',
// SYSTEM='DSN'
//SYSREC DD*
000130DSN!10.SDSNIVPD(DSN8R130)
//SYSUT1 DD DSN=SYSADM.LOAD.SYSUT1,DISP=(MOD,DELETE,CATLG),
// UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)
//SORTOUT DD DSN=SYSADM.LOAD.SORTOUT,DISP=(MOD,DELETE,CATLG),
// UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)
//SYSIN DD *
LOAD DATA
REPLACE LOG NO NOCOPYPEND
SORTKEYS 1
INTO TABLE MY_EMP_PHOTO_RESUME
(EMPNO POSITION(1:6) CHAR(6),
RESUME POSITION(7:31) CHAR CLOBF)Laden mit parallelen Unteraufgaben
Die folgende LOAD-Anweisung gibt an, dass das Dienstprogramm mehrere parallele Unteraufgaben verwenden soll, wie durch das Schlüsselwort PARALLEL angegeben. Da mit dem Schlüsselwort PARALLEL kein Wert angegeben wird, Db2 bestimmt den optimalen Grad an Parallelität. Diese Verwendung von Parallelität kann möglicherweise die Zeit verkürzen, die zum Laden großer Datenmengen benötigt wird.LOAD DATA
PARALLEL
RESUME YES
SHRLEVEL NONE
INDDN INPUT1
EBCDIC
CONTINUEIF(80:80)='-'
INTO TABLE SCTX1300.TB_HISTORY_PART
(HISTORY_DAILY POSITION(1:11) INT EXTERNAL,
HISTORY_ROWNUM POSITION(13:23) INT EXTERNAL,
HISTORY_CUSTOMER_ID POSITION(25:35) INT EXTERNAL,
HISTORY_CUSTOMER_ACCOUNT_ID POSITION(37:50) DECIMAL EXTERNAL,
HISTORY_CUSTOMER_DISTRICT_ID POSITION(52:53) CHAR,
HISTORY_CUSTOMER_WAREHOUSE_ID POSITION(55:64) CHAR,
HISTORY_DISTRICT_ID POSITION(66:67) CHAR,
HISTORY_TRANSACTION_ID POSITION(69:70) CHAR,
HISTORY_WAREHOUSE_ID POSITION(72:81) CHAR,
HISTORY_DATE POSITION(83:108) TIMESTAMP EXTERNAL,
HISTORY_AMOUNT POSITION(110:126) DECIMAL EXTERNAL,
HISTORY_STATUS POSITION(128:144) VARCHAR,
HISTORY_DATA POSITION(3874:3899) VARCHAR) 
Die Beibehaltung von Zeitstempelwerten beim Laden von Zeilen ändert Zeitstempelspalten, die als GENERATED ALWAYS definiert sind
Angenommen, Sie haben Daten aus einer Tabelle mit einer Spalte für den Zeitstempel der Zeilenänderung entladen und möchten die Daten anschließend in eine Tabelle neu laden, die wie folgt definiert ist:
CREATE TABLE MYDB.MYTB
(TYPE CHAR(1) NOT NULL,
CHANGE TIMESTAMP(6) WITHOUT TIME ZONE NOT NULL GENERATED ALWAYS
FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP
)
IN MYDB.MYTS;
Beachten Sie, dass die Spalte für den Zeitstempel des Zeilenwechsels als "IMMER ERZEUGT" definiert ist. Wenn Sie die Zeitstempelwerte im Entlade-Datensatz beibehalten möchten, wenn Sie die Daten in diese Tabelle laden, geben Sie die Option OVERRIDE(ROWCHANGE) an, wie im folgenden Beispiel für die LOAD-Anweisung gezeigt:
LOAD DATA INDDN SYSREC OVERRIDE(ROWCHANGE)
INTO TABLE
"MYDB"."MYTB"
NUMRECS 10
("TYPE"
POSITION(00001:00001) CHAR(1)
"CHANGE"
POSITION(00004:00029) TIMESTAMP EXTERNAL(26)
)


Mehrere Eingabedatensätze werden geladen
Der folgende LOAD-Job lädt Daten aus drei Eingabedatensätzen, die durch die Vorlagen TSREC1, TSREC2 und TSREC3 definiert sind. Diese Datensätze werden dynamisch verkettet und dann werden die Daten in die Tabelle geladen.
TEMPLATE SU1 DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..SU1'
TEMPLATE CPY DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..SCO'
TEMPLATE SO1 DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..SO1'
TEMPLATE ERR DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..ERR'
TEMPLATE MAP DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..MAP'
TEMPLATE DSC DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..SDI'
TEMPLATE TSREC1 DSN('E44753.DB1.TS1.P00001.SYSREC')
TEMPLATE TSREC2 DSN(‘E44753.DB1.TS1.P00002.SYSREC')
TEMPLATE TSREC3 DSN('E44753.DB1.TS1.P00003.SYSREC')
LOAD DATA INDDN (TSREC1,TSREC2,TSREC3)
RESUME YES LOG YES
SORTDEVT SYSDA SORTNUM 99
WORKDDN(SU1,SO1) ERRDDN(ERR) DISCARDDN(DSC)
INTO TABLE TI01AN.OIGT0055
WHEN(00001:00002) = X'0003'
NUMRECS 8534 

Laden mehrerer Eingabedatensätze in Partitionen
Der folgende LOAD-Job lädt Daten aus mehreren Eingabedatensätzen in jede Partition. Beispielsweise werden die Eingabedatensätze, die durch die Vorlagen TSREC1 und TSREC4 definiert sind, in Partition 1 geladen.
TEMPLATE SU1 DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..SU1'
TEMPLATE CPY DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..SCO'
TEMPLATE SO1 DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..SO1'
TEMPLATE ERR DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..ERR'
TEMPLATE MAP DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..MAP'
TEMPLATE DSC1 DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..SDI1'
TEMPLATE DSC2 DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..SDI2'
TEMPLATE DSC3 DISP(MOD,CATLG,CATLG) DSN 'E44753.&DB..&SN..&UQ..SDI3'
TEMPLATE TSREC1 DSN('E44753.DBE44753.TSE44753.P00001.SYSREC')
TEMPLATE TSREC2 DSN('E44753.DBE44753.TSE44753.P00002.SYSREC')
TEMPLATE TSREC3 DSN('E44753.DBE44753.TSE44753.P00003.SYSREC')
TEMPLATE TSREC4 DSN('E44753.DBE44753.T2E44753.P00001.SYSREC')
TEMPLATE TSREC5 DSN('E44753.DBE44753.T2E44753.P00002.SYSREC')
TEMPLATE TSREC6 DSN('E44753.DBE44753.T2E44753.P00003.SYSREC')
LOAD DATA
RESUME YES LOG YES
SORTDEVT SYSDA SORTNUM 99
WORKDDN(SU1,SO1) ERRDDN(ERR)
INTO TABLE TBE44753 PART 1 INDDN (TSREC1,TSREC4) DISCARDDN(DSC1)
NUMRECS 600
( C1 POSITION(00004:00007) INTEGER NULLIF(00003)=X'FF')
INTO TABLE TBE44753 PART 2 INDDN (TSREC2,TSREC5) DISCARDDN(DSC2)
NUMRECS 600
( C1 POSITION(00004:00007) INTEGER NULLIF(00003)=X'FF')
INTO TABLE TBE44753 PART 3 INDDN (TSREC3,TSREC6) DISCARDDN(DSC3)
NUMRECS 600
( C1 POSITION(00004:00007) INTEGER NULLIF(00003)=X'FF')


Definition von DEFINE NO-Hilfsobjekten zu Beginn der Ausführung des Dienstprogramms
In der folgenden LOAD-Anweisung gibt DEFINEAUX YES an, dass alle Ziel-Hilfsobjekte mit dem DEFINE NO-Attribut zu Beginn der LOAD-Ausführung definiert werden sollen, unabhängig davon, ob diese Objekte von LOAD gefüllt werden.
LOAD INDDN SYSREC RESUME NO REPLACE DEFINEAUX YES
INTO TABLE MYEMP

Standardwerte für Spalten werden geladen
In der folgenden LOAD-Anweisung enthält die INTO TABLE-Klausel zwei DEFAULTIF-Spezifikationen, die angeben, wann der Standardspaltenwert geladen werden soll. Für die Spalte C1 soll der Standardwert geladen werden, wenn der Eingabewert leer ist. Für die Spalte C2 ist der Standardwert zu laden, wenn der Eingabewert nicht leer ist. Für die Spalte C3® ist der Standardwert zu laden, wenn der Wert an Position 5 nicht leer ist.
LOAD DATA INDDN SYSREC
FORMAT DELIMITED COLDEL ',' CHARDEL '"' DECPT '.'
EBCDIC CCSID(00037,00000,00000)
INTO TABLE SYSADM.TB1
IGNOREFIELDS YES
( C1 POSITION(*) DEFAULTIF(C1= '')
, PARTNO POSITION(*)
, C2 POSITION(*) DEFAULTIF(C2<>'')
, C3 POSITION(*) DEFAULTIF((5:5) <> '')
)Ebenso zeigen die DEFAULTIF-Spezifikationen im folgenden Beispiel an, dass bei einem Konvertierungsfehler beim Laden eines Werts in die Spalten C1 oder C2 stattdessen der Standardspaltenwert geladen wird.
LOAD DATA INDDN SYSREC
FORMAT DELIMITED COLDEL ',' CHARDEL '"' DECPT '.'
EBCDIC CCSID(00037,00000,00000)
INTO TABLE SYSADM.TB1
IGNOREFIELDS YES
( C1 POSITION(*) DEFAULTIF(CONV_ERROR)
,C2 POSITION(*) DEFAULTIF(CONV_ERROR)
) 