DB2 z/OS   DB2 LUW
z/OS CICS VTAM

DB2 z/OS Info

Home


LOAD FROM CURSOR :

//*******************************************
//*           DSNUTILB (LOAD FROM CURSOR)
//*******************************************
//UTIL0003 EXEC PGM=DSNUTILB,
//  PARM=(DSN1,'REP.LEVELID')
//STEPLIB   DD DISP=SHR,DSN=<YOUR.LOADLIB>
//SYSPRINT  DD SYSOUT=*
//UTPRINT   DD SYSOUT=*
//*------------------------------------------------------
//*  UTILITY WORK DD STATEMENTS
//*------------------------------------------------------
//SYSUT1 DD DSN=<YOUR.DSN>.SYSUT1,
//         DISP=(NEW,DELETE,DELETE),
//         SPACE=(CYL,(500,500)),
//         UNIT=(WORK,5)
//*------------------------------------------------------
//*  UTILITY SORTOUT WORK DD STATEMENTS
//*------------------------------------------------------
//SORTOUT DD DSN=<YOUR.DSN>.SRTOUT,
//         DISP=(NEW,DELETE,DELETE),
//         SPACE=(CYL,(500,500)), 
//         UNIT=(WORK,5)
//SYSIN     DD *
EXEC SQL
     DECLARE CUR1     CURSOR FOR
SELECT * FROM <SOURCE>.<TABLE>
WITH UR
ENDEXEC

LOAD INCURSOR CUR1     REPLACE LOG NO NOCOPYPEND
     ENFORCE NO  SHRLEVEL NONE
     SORTDEVT WORK      SORTNUM 4
     INTO TABLE <Location.><Creator.Name>
/*

UNLOAD :

//JOBLIB   DD DISP=SHR,DSN=<YOUR.LOADLIB>
//SETRC0   EXEC PGM=IEFBR14
//DELETE  EXEC PGM=IDCAMS
//SYSPRINT  DD SYSOUT=*
//SYSIN     DD *
  DELETE ('DSN1.UNL1.<YOURDB>.<YOURTS>A.UNLOAD       ') NONVSAM
  DELETE ('DSN1.UNL1.<YOURDB>.<YOURTS>B.UNLOAD       ') NONVSAM
/*
//TERM0001 EXEC PGM=IKJEFT01,DYNAMNBR=20,COND=(EVEN)
//SYSPRINT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//UTPRINT  DD SYSOUT=*
//SYSTSIN  DD *
DSN SYSTEM(DSN1)
    -TERM UTIL( UNL.LISTDEF     )
 END
/*
//UNLOAD EXEC PGM=DSNUTILB,REGION=0M,
//*          RESTART('PHASE'),
//           PARM=(DSN1,'UNL.LISTDEF','')
//SYSPRINT DD SYSOUT=*
//UTPRINT  DD SYSOUT=*
//SYSIN   DD *
LISTDEF  UNLDLIST
         INCLUDE  TABLESPACE   <YOURDB>.<YOURTS>A
         INCLUDE  TABLESPACE   <YOURDB>.<YOURTS>B

--
TEMPLATE UNLDSN   DSN DSN1.UNL1.&DB..&TS..UNLOAD
         UNIT WORK
         DISP (NEW,CATLG,CATLG)
         SPACE (50,20) CYL
--
TEMPLATE PUNCHDSN DSN DSN1.UNL1.&DB..&TS..PUNCH
         UNIT WORK
         DISP (NEW,CATLG,CATLG)
         SPACE (1,1) TRK
--
--
UNLOAD    LIST UNLDLIST
UNLDDN         UNLDSN
PUNCHDDN       PUNCHDSN
SHRLEVEL       CHANGE
ISOLATION      UR
EBCDIC
/*

//JOBLIB   DD DISP=SHR,DSN=<YOUR.LOADLIB>
//STEP1 EXEC PGM=DSNUTILB,PARM=(DSN1,'ULOAD.LOAD'),REGION=0M
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//UTPRINT  DD SYSOUT=*
//SYSOUT   DD SYSOUT=*
//SYSREC   DD DSN=USERID.SMPLUNLD.SYSREC,
//         DISP=(NEW,CATLG,CATLG),
//         UNIT=SYSDA,SPACE=(CYL,(200,100))
//SYSPUNCH DD DSN=USERID.SMPLUNLD.SYSPUNCH,
//         DISP=(NEW,CATLG,CATLG),
//         UNIT=SYSDA,SPACE=(TRK,(1,1))
//SYSIN    DD *
  UNLOAD TABLESPACE <YOURDB>.<YOURTS>
    FROM TABLE <Creator>.<NAME>
    WHEN (     COL1 = 'D'
           AND COL2 > 25000
         )
/*

//JOBLIB   DD DISP=SHR,DSN=<YOUR.LOADLIB>
//STEP1    EXEC PGM=DSNUTILB,PARM=(DSN1,'UNL.TABLE')
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//UTPRINT  DD SYSOUT=*
//SYSOUT   DD SYSOUT=*
//SYSIN    DD *
  UNLOAD TABLESPACE <DB>.<TS>
         UNLDDN   SYSREC
         PUNCHDDN SYSPUNCH
         SHRLEVEL CHANGE ISOLATION UR
         FROM TABLE <CREATOR>.<TBNAME1>
         FROM TABLE <CREATOR>.<TBNAME2>
         FROM TABLE <CREATOR>.<TBNAME3>
//*
//SYSREC DD DSN=DSN1.UNL1.<DB>.<TS>,
//         DISP=(NEW,CATLG,CATLG),
//         DCB=<YOUR.MODEL>,
//         SPACE=(CYL,(100,100),RLSE),
//         UNIT=SYSDA
//SYSPUNCH DD DSN=DSN1.PUNCH.<DB>.<TS>,
//         DISP=(NEW,CATLG,CATLG),
//         DCB=<YOUR.MODEL>,
//         SPACE=(CYL,(2,2),RLSE),
//         UNIT=SYSDA
//*


UNLOAD MIT DSNTIAUL

//JOBLIB   DD DISP=SHR,DSN=<YOUR.LOADLIB>
//DSNTIAD EXEC PGM=IKJEFT01
//SYSPRINT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//SYSMDUMP DD SYSOUT=*
//SYSREC00 DD UNIT=SYSDA,SPACE=(CYL,(10,10)),DISP=(,CATLG),
//            DSN=<YOUR.DATASET>
//SYSPUNCH DD UNIT=SYSDA,SPACE=(CYL,(1,1)),DISP=(NEW,CATLG),
//            DSN=<YOUR.DATASET>.PUNCH
//SYSTSIN DD *
 DSN S(DSN1)
     RUN PROGRAM(DSNTIAUL)  PLAN(DSNTIAUL)    -
     PARMS('SQL,1000')          -
     LIB('DSN1.RUNLIB.LOAD')
 END
/*
//SYSIN   DD *
  SELECT * FROM <CREATOR>.<TBNAME>
  ;
/*

UNLOAD MIT DELIMITED (FUER TRANSFERE ZU LUW):

Eignet  sich sehr gut für ETL mit z.b DB2/LUW (Oder Import zu EXCEL, ....)

//JOBLIB   DD DISP=SHR,DSN=<YOUR.LOADLIB>
//SETRC0   EXEC PGM=IEFBR14
//DELETE  EXEC PGM=IDCAMS
//SYSPRINT  DD SYSOUT=*
//SYSIN     DD *
  DELETE ('DSN1.UNL1.<YOURDB>.<YOURTS>.UNLOAD       ') NONVSAM
  SET MAXCC = 0
/*
//UNLOAD EXEC PGM=DSNUTILB,REGION=0M,
//           PARM=(DSN1,'UNL.LISTDEF','')
//SYSPRINT DD SYSOUT=*
//UTPRINT  DD SYSOUT=*
//SYSIN   DD *
LISTDEF  UNLDLIST
         INCLUDE  TABLESPACE   <YOURDB>.<YOURTS>
--
TEMPLATE UNLDSN   DSN DSN1.UNL1.&DB..&TS..UNLOAD
         UNIT WORK
         DISP (NEW,CATLG,CATLG)
         SPACE (50,20) CYL
--
UNLOAD    LIST UNLDLIST
UNLDDN         UNLDSN
SHRLEVEL       CHANGE
ISOLATION      UR
EBCDIC
DELIMITED
    COLDEL ';'
    CHARDEL '"'
    DECPT ','
/*

Danach einen ftp auf den Server und die Daten Importiren oder Laden
Bei mir ist die Codepage 850 je nach dem muss sie angepasst werden !

db2 IMPORT
       FROM /daten/import/<yourTable>.del OF DEL
       MODIFIED BY COMPOUND=5
                                 CHARDEL0x22
                                 COLDEL0x3b
                                 DECPT0x2c
                                 CODEPAGE=850
                                 COMMITCOUNT 1000
         REPLACE INTO <yourcreator>.<yourTable>
db2 LOAD CLIENT
    FROM /daten/import/<yourTable>.del OF DEL
    MODIFIED BY CHARDEL0x22
                              COLDEL0x3b
                              DECPT0x2c
                             CODEPAGE=850
    REPLACE INTO <yourcreator>.<yourTable>






Oder eben umgedreht :

db2 Export  to tabelle.del of del
        MODIFIED BY  CHARDEL0x22   -- ;
                                   COLDEL0x3b      -- "
                                   DECPT0x2e         -- .
                                   CODEPAGE=850
      select * from creator.name ;

Dann die Daten mit FTP zum z/OS bringen und laden !

//************************************************************
//* ASCII    : X'3B' = ; X'22' = " X'2C' = ,  X'2E' = .
//* EBCDIC: X'5E' = ; X'7F' = " X'6B' = ,  X'4B' = .
//************************************************************
//LOAD    EXEC PGM=DSNUTILB,PARM='DSN1'
//SYSUDUMP DD DUMMY
//SYSUT1       DD SPACE=(CYL,(10,10)),UNIT=WORK
//SORTOUT   DD SPACE=(CYL,(10,10)),UNIT=WORK
//SYSPRINT  DD SYSOUT=*
//UTPRINT    DD SYSOUT=*
//SYSIN         DD *
LOAD DATA
     INDDN SYSREC
     LOG YES
     RESUME NO
     REPLACE
     FORMAT DELIMITED COLDEL   X'5E'
                                           CHARDEL X'7F'
                                           DECPT       X'4B'
INTO TABLE CREOATO.NAME_DEL
( COL1 POSITION(*) CHAR
, COL2 POSITION(*) DECIMAL
, COL3 POSITION(*) VARCHAR
, COL4 POSITION(*) INTEGER
, COL5 POSITION(*)
)
/*
//SYSREC DD *
"ROW 1";14.5;"DAS IST DIE ERSTE ROW";1;"01.10.2010"
"ROW 2";127.14;"DAS IST DIE ZWEITE ROW";2;"15.10.2010"
/*



Aendern Syspunch (RESUME YES --> REPLACE und insert Stats)

//CHANGE1 EXEC PGM=IKJEFT01,DYNAMNBR=20
//SYSTSPRT DD  SYSOUT=*
//SYSPRINT DD  SYSOUT=*
//SYSUDUMP DD  SYSOUT=*
//SYSTSIN  DD  *
  EDIT 'HLQ.<your DB>.<your TS>.UNLOAD.PUNCH' +
        TEXT OLD NONUM NORECOVER ASIS
  CHANGE * 4   /RESUME YES/REPLACE NOCOPYPEND/
  TOP
  DOWN 4
  INSERT  STATISTICS TABLE(ALL) INDEX(ALL) REPORT NO UPDATE ALL
  END SAVE
/*