Examples of the batch interface

Example 1. Import - all XML members on HFM.XMLINP to HFM.IMPORT.TEMPLATE

//HFMBAT EXEC PGM=HFMMAIN
//STEPLIB  DD DISP=SHR,DSN=HLQ.SHFMMOD1
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
$$FILEM TPIMP DSNIN=HFM.XMLINP,
$$FILEM MEMBER=*,
$$FILEM DSNOUT=HFM.IMPORT.TEMPLATE,
$$FILEM REPLACE=YES
/*

Example 2. Import - same as example 1 except using default input and output ddnames. Note keywords INPUT, and OUTPUT can be used to point to different DD names.

//HFMBAT EXEC PGM=HFMMAIN
//STEPLIB  DD DISP=SHR,DSN=HLQ.SHFMMOD1
//DDIN  DD DISP=SHR,DSN=HFM.XMLINP
//DDOUT DD DISP=SHR,DSN=HFM.IMPORT.TEMPLATE
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
$$FILEM TPIMP MEMBER=*,REPLACE=YES
/*

Example 3. Import from XML that is inline in the jobstream into one member

//HFMBAT EXEC PGM=HFMMAIN
//STEPLIB  DD DISP=SHR,DSN=HLQ.SHFMMOD1
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
$$FILEM TPIMP DSNOUT=HFM.TEMPLATE(CBL1),INPUT=*
<template lang="COBOL" type="BASE">
 <copybooks>
  <library>HFM.COBOL</library>
  <member name="COPY01"/>
  <member name="COPY02"/>
 </copybooks>
 <layout copybook="COPY01">
  <criteria type="ID">
   <exp><![CDATA[#2 = '01']]></exp>
  </criteria>
 </layout>
 <layout copybook="COPY02">
  <criteria type="ID">
   <exp><![CDATA[#2 = '02']]></exp>
  </criteria>
 </layout>
</template>
/*

Example 4. Export all template members in a PDS - Replace output members, ISPF statistics and only produce XML for copybook and criteria.

//HFMBAT EXEC PGM=HFMMAIN
//STEPLIB  DD DISP=SHR,DSN=HLQ.SHFMMOD1
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
$$FILEM TPEXP DSNIN=HFM.IMPORT.TEMPLATE,
$$FILEM MEMBER=*,
$$FILEM DSNOUT=HFM.XMLOUT.NEW,
$$FILEM COPYCRIT=YES,
$$FILEM STATS=YES,
$$FILEM REPLACE=YES
/*

Example 5. Export same as example 4 except using default DD names for input and output. Keywords INPUT, and OUTPUT could also be used.

//HFMBAT EXEC PGM=HFMMAIN
//STEPLIB  DD DISP=SHR,DSN=HLQ.SHFMMOD1
//SYSPRINT DD SYSOUT=*
//DDIN  DD DISP=SHR,DSN=HFM.IMPORT.TEMPLATE
//DDOUT DD DISP=SHR,DSN=HFM.XMLOUT.NEW
//SYSIN DD *
$$FILEM TPEXP MEMBER=*,
$$FILEM COPYCRIT=YES,
$$FILEM STATS=YES,
$$FILEM REPLACE=YES
/*

Example 6. Export single member to producing XML output on SYSOUT

//HFMBAT EXEC PGM=HFMMAIN
//STEPLIB  DD DISP=SHR,DSN=HLQ.SHFMMOD1
//SYSPRINT DD SYSOUT=*
//XMLDD    DD SYSOUT=*
//SYSIN DD *
$$FILEM TPEXP DSNIN=HFM.TEMPLATE,MEMBER=COPY0102,COPYCRIT=YES,
$$FILEM OUTPUT=XMLDD
/*

Example 7. Run a compare job using XML dynamic templates specified in the JCL to perform column compares. This compares columns 1 to 5 input file with columns 8 to 12 of the output file, and columns 6 to 10 of the input file with columns 13 to 17 of the output file.

//HFMBAT EXEC PGM=HFMMAIN
//SYSPRINT DD SYSOUT=*
//DDOLD DD DISP=SHR,DSN=HFM.DATA(COMP1OLD)
//DDNEW DD DISP=SHR,DSN=HFM.DATA(COMP1NEW)
//TDOLD DD DATA
<template type="DYNAMIC">
 <layout>
  <symbol name="comp1" start="1" length="5" type="AN"/>
  <symbol name="comp2" start="6" length="5" type="AN"/>
 </layout>
</template>
/*
//TDNEW DD DATA
<template type="DYNAMIC">
 <layout>
  <symbol name="comp1" start="8"  length="5" type="AN"/>
  <symbol name="comp2" start="13" length="5" type="AN"/>
 </layout>
</template>
/*
//SYSIN DD *
$$FILEM DSM TYPE=FORMATTED,LIST=DELTA
/*

Example 8. Print sample file using XML dynamic template - multiple layouts and ID criteria.

//HFMBAT EXEC PGM=HFMMAIN
//SYSPRINT DD SYSOUT=*
//DDIN  DD DISP=SHR,DSN=hlq.SHFMSAM1(HFMCDATA)
//TDDIN DD DATA
<template type="DYNAMIC">
 <layout name="rec-type01">
  <symbol name="type" start="1" length="2" type="AN"/>
  <symbol name="name" start="3" length="20" type="AN"/>
  <symbol name="empno" start="23" length="2" type="BI"/>
  <symbol name="age"   start="25" length="2" type="BI"/>
  <symbol name="salary"  start="27" length="4" type="PD"/>
  <criteria type="ID">
    <exp><![CDATA[#type = '01']]></exp>
  </criteria>
 </layout>
 <layout name="rec-type02">
  <symbol name="type" start="1" length="2" type="AN"/>
  <symbol name="name" start="3" length="20" type="AN"/>
  <symbol name="title" start="23" length="14" type="AN"/>
  <symbol name="addr1" start="37" length="20" type="AN"/>
  <symbol name="addr2" start="57" length="20" type="AN"/>
  <symbol name="postcode" start="77" length="4" type="AN"/>
  <criteria type="ID">
    <exp><![CDATA[#type = '02']]></exp>
  </criteria>
 </layout>
</template>
/*
//SYSIN DD *
$$FILEM DSP FORMAT=SNGL
/*

Example 9. Run a Db2® import job that either creates or updates a Db2 template specifying new headings for fields. Note we have the XML inline - the input could come from a member.

//HFMDB2   EXEC PGM=HFMDB2,PARM=('SSID=ssss,SQID=userid')
//SYSPRINT DD SYSOUT=*
//SYSTERM  DD SYSOUT=*
$$FILEM TPIMP DSNOUT=hlq.TEMPLATE(EMPHD),
$$FILEM REPLACE=YES,
$$FILEM INPUT=*
<template type="DB2">
 <db2object>DSN8810.EMP</db2object>
 <layout>
  <symbol name="empno">
   <heading>Employee</heading>
  </symbol>
  <symbol name="FIRSTNME">
   <heading>First Name</heading>
  </symbol>
  <symbol name="MIDINIT">
   <heading>Middle</heading>
  </symbol>
  <symbol name="LASTNAME">
   <heading>Last Name</heading>
  </symbol>
  <symbol name="BIRTHDATE">
   <heading>Birth Date</heading>
  </symbol>
 </layout>
</template>