本文主要是介绍JCL中的SORT,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- JCL中的SORT
- 一 SORT语法
- 1 、JOB CONTROL LANGUAGE
- 2、控制选项
- 二 SORT例子
- 1、 一个SORT完整的输入和输出
- 2、Sort STEP
JCL中的SORT
SORT是JCL里面非常一个功能,在3.4打开的数据集中输入SORT可以直接进行排序,这个名字叫做DATA Facility,用来对数据集进行SORT、COPY、MERGE,总的来说,很常见,注意,笔者这篇总结主要是FB的定长数据集,VB的变长数据集,暂未写上去
一 SORT语法
1 、JOB CONTROL LANGUAGE
EXEC🥂🎸:规定作业步参数
SYSOUTDD💝🎮:主要是输出执行信息,一些错误LOG会被这个送出来
SORTIN DD💃🕵:定义输入的待排序数据集
SORTOUT DD💃🕵:定义要排序完的待输入数据集,可以CATALOG为实体、可以设定为临时文件
SORTWKdd DD💃🕵:定义一些排序工作DATASET,看到那个dd就知道,这是成组出现的
/SORTWKdd DDDefines a work data set for a sort. Typically not needed, because DFSORT can allocate work data sets for a sort dynamically.
这句英文说了,我们通常是不需要这个参数,一般都是给SORT自动处理的,除非太大了,咱们SORT处理不了,扛不住了,才用这个STEP
SYSIN👨👨👧👦✊:定义一些控制信息
2、控制选项
SORT: 指定对数据集进行排序操作
MERGE: 指定对数据集进行合并操作
COPY: 指定对数据集进行拷贝操作
FIELDS: 指定排序键值的信息,格式为
FIELDS=(起始位置,长度,升降序[,起始位置,长度,升降序]),FORMAT=数据类型
其中位置和长度都是以字节为单位,顺序可选的有 A:升序,D:降序,E:适用用户出口例程序;
FORMAT=指定键字的类型,可选项有 CH:字符,PD:压缩十进制,BI:二进制,AC:ASCII码型
RECORD:
RECORD 制御ステートメントは、次のような場合に必要です。
- ユーザー出口でレコード長が変更される。
- ユーザー出口ですべての入力レコードが提供される。
- 従来のマージやテープ作業データ・セットのソートで、VSAM 入力が使用される。
TYPE和LENGTH都是可变的,TYPE分为F、V、D:固定長レコード処理,可変長レコード処理,ASCII 可変長レコード処理,LENGTH分为三级,笔者感觉风格像是三级缓存,就是有本书微机原理里面讲的,这几个长度在SORT里面要求相等
RECORD TYPE=F,LENGTH=(120,120,120)
其中L1、L2、L3的长度,下文也有一定说法。
>>-LENGTH=--(--------------------------------------------------->>--+-L1-------------------------------------------------------------------+-->+-+----+--,--L2--------------------------------------------------------+ | '-L1-' | +-+----+--,--+----+--,--L3---------------------------------------------+ | '-L1-' '-L2-' | +-+----+--,--+----+--,--+----+--,--L4----------------------------------+ | '-L1-' '-L2-' '-L3-' | +-+----+--,--+----+--,--+----+--,--+----+--,--L5-----------------------+ | '-L1-' '-L2-' '-L3-' '-L4-' | +-+----+--,--+----+--,--+----+--,--+----+--,--+----+--,--L6------------+ | '-L1-' '-L2-' '-L3-' '-L4-' '-L5-' | '-+----+--,--+----+--,--+----+--,--+----+--,--+----+--,--+----+--,--L7-' '-L1-' '-L2-' '-L3-' '-L4-' '-L5-' '-L6-' >--)-----------------------------------------------------------><
二 SORT例子
1、 一个SORT完整的输入和输出
JCL code:(笔者对这个环境的配置有一丢丢感兴趣,下期试着配置一下)
***************************** Top of Data ******************************//SORTTEST JOB 'DDS1602',MSGCLASS=S,TIME=1440,NOTIFY=&SYSUID//STEP01 EXEC PGM=SORT//SYSOUT DD SYSOUT=*,OUTLIM=5000//SYSPRINT DD SYSOUT=*,OUTLIM=5000//SYSTSPRT DD SYSOUT=*,OUTLIM=5000//SYSUDUMP DD DUMMY//PLIDUMP DD DUMMY//SORTWK01 DD UNIT=SYSDA,SPACE=(TRK,(30),,CONTIG)//SORTWK02 DD UNIT=(SYSDA,SEP=SORTWK01),SPACE=(TRK,(30),,CONTIG)//SORTWK03 DD UNIT=(SYSDA,SEP=(SORTWK01,SORTWK02)),// SPACE=(TRK,(30),,CONTIG)//SORTIN DD DSN=DDS1602.XUWEN.DATA,DISP=SHR//SORTOUT DD DSN=DDS1602.XUWEN.DATAOUT,DISP=(MOD,CATLG,DELETE),// UNIT=SYSDA,SPACE=(TRK,(2,1),RLSE),// DCB=(RECFM=FB,LRECL=23,DSORG=PS)//SYSIN DD *SORT FIELDS=(10,10,CH,A),SKIPREC=1OMIT COND=(24,1,CH,EQ,C'F')SUM FIELDS=(20,04,ZD)OUTREC FIELDS=(10,10,20,4,C'END')/*//*SKIPREC=1 SKIP THE TOP 1 RECORD//*STOPAFT=1 JUST SELECT THE TOP 1 RECORD//*OMIT COND=(X,X,PD,LT,0) OMIT THE RECORD WHICH SATISFY THE CONDITION//***************************** Bottom of Data ****************************
输入数据:
----+----1----+----2----+----3----+Number---Name------Qty-FlagNumber1 Xuwen 1000SNumber2 Tony Lv 2000SNumber3 Hanbao Liu3000FNumber4 Xuwen 0111SNumber5 Tony Lv 0222FNumber6 Hanbao Liu0333S
输出:
----+----1----+----2---Hanbao Liu0333ENDTony Lv 2000ENDXuwen 1111END
2、Sort STEP
The following is a typical example of JCL to run DFSORT.
//EXAMP JOB A492,PROGRAMMER
//SORT EXEC PGM=SORT
//SYSOUT DD SYSOUT=A
//SORTIN DD DSN=A123456.SORT.SAMPIN,DISP=SHR
//SORTOUT DD DSN=SYSDA,SPACE=(CYL,(1,1))
//SORTOUT DD DSN=A123456.SORT.SAMPOUT,DISP=OLD
//SYSIN DD *SORT FORMAT=CH,FIELDS=(110,10,A,145,17,A,1,75,A)
/*
If you cannot fit your SORT statement (or any other DFSORT control statement) between columns 2 through 71, you can continue it on the next line. If you end a line with a comma followed by a blank, DFSORT treats the next line as a continuation. The continuation can begin anywhere between columns 2 through 71.
这个就是说,如果SORT KEY太多了,那么就连在后面第二行写
For example:
SORT FORMAT=CH,FIELDS=(110,10,A,145,17,A,1,75,A)
这篇关于JCL中的SORT的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!