我有一个学生id作为db2表和文件中的主键,该表和文件由大型机中的各种记录组成。如果db2表和文件中的键都匹配,那么我必须将该记录移动到输出文件-1中。我该怎么做?
I第二个评论希望OP显示进度,询问具体的问题。至少共享输入/输出示例、失败的尝试、类型&问题的定义(JCL、编程、Db2…(。但也许这是一种不知道从哪里开始的情况——在大型机领域并不罕见。如果是这样的话,那么我来做一系列假设:(
Db2数据存在于表中。但是您可以将相关数据放入数据集中。使用Db2实用程序,如UNLOAD,示例DSNTEP*程序,DSNTIAUL,供应商工具,内部工具&程序等等。这将使它成为JCL:中的两步过程
{{jobcard}}
//*
//* Get relevant data from Db2 into a dataset
//*
//RUNTEP2 EXEC PGM=IKJEFT01,DYNAMNBR=20
//STEPLIB DD DISP=SHR,DSN={{DB2_HLQ}}.SDSNLOAD
// DD DISP=SHR,DSN={{DB2_HLQ}}.RUNLIB.LOAD
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
DSN SYSTEM({{DB2_SSID}})
RUN PROGRAM(DSNTIAUL) PLAN(DSNTIAUL) PARMS('SQL,10') -
LIB('{{DB2_HLQ}}.RUNLIB.LOAD')
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSREC00 DD DSNAME=&&ROWS,DISP=(NEW,PASS),UNIT=SYSDA
//SYSPUNCH DD DUMMY
//SYSIN DD *
Select EMPNO From {{SCHEMA}}.EMP
Where LASTNAME In ('HAAS', 'YOSHIMURA');
/*
//*
//* In case of the sample EMP table, you should end up with 2 EMPNOs in
//* SYSREC00:
//* 000010 <- HAAS
//* 000170 <- YOSHIMURA
//*
//* Use DFSORT to perform a join.
//*
//SORT EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTJNF1 DD *
000000 spam -
000010 qualifying row 1/2 +
000090 spam -
000170 qualifying row 2/2 +
000900 eggs -
//SORTJNF2 DD DSNAME=&&ROWS,DISP=SHR
//SORTOUT DD SYSOUT=*
//SYSIN DD *
* Control statements for JOINKEYS application
JOINKEYS FILE=F1,FIELDS=(1,6,A)
JOINKEYS FILE=F2,FIELDS=(1,6,A)
REFORMAT FIELDS=(F1:1,70)
* Control statements for main task (joined records)
SORT FIELDS=COPY
/*
以下是您在SORTOUT:中获得的内容片段
********************************* TOP OF DATA ***
000010 qualifying row 1/2 +
000170 qualifying row 2/2 +
******************************** BOTTOM OF DATA *
或者,使用REXX、Java、Python、Node…在Mainframe上编写脚本,DFSORT出口。或者用您觉得最舒服的东西编写大型机脚本,它可以处理基本的数据库&FTP/SSH/HTTP(zOSMF(。比如说,你可以用Python在Jupyter中完成这一切;ibm_db_dbi。我不是建议你这么做,但是,假设这是一个普遍的";如何";问题——这也是其中一种方式。
脚本方法不必转到Db2->数据集->流程->数据集。将文件数据加载到Db2中。聚合,联接,。。。使用SQL,而不是排序、集合、交集或脚本中想要的任何东西。