如何使用 EASYTRIEVE 作为 JCL 文件的一部分将标头"hard code"到我的输出中?



我的目标是在输出的顶部显示三个标题。标题将是";标题"Genre";,以及";评级";。JCL文件输入来自数据集的数据、电影列表、电影类型(使用IF逻辑对其进行编号,然后翻译成单词(和评分(使用打包数据(。我不应该使用任何像SORT这样的程序;硬编码";。

我预计结果如下:预期结果的快照

实际结果如下:

实际结果的快照

作业提交成功,没有任何错误。但是,JCL文件不会产生所需的输出。

我知道JCL文件遵循数据集中每条记录的指令列表,并在每条记录的指示上循环,这就是为什么Title、Genre和Ratings标头重复的原因。我试过用";GOTO";并标记以更改循环从何处恢复,以便JCL文件仅在第一次执行时执行头参数。不幸的是,它似乎不起作用。

我在下面链接了我的JCL文件的截图。正如您所看到的,我将OHEAD变量重新定义为空白("(,这样可以防止标题与电影数据重叠。如果我能找到一种让JCL指令循环的方法;OHEAD";语句,那么我只需要定义OHEAD一次。从概念上讲,这就是我要做的。

我几天前开始在JCL上训练,所以我感谢你的耐心和你能提供的任何意见。

JCL文件截图1

JCL文件截图2

JCL文件截图3

JCL文件截图4

JCL文件截图5

我复制了下面的JCL文件文本。

000001 //DSINC01C JOB (0000,1178),'TRAINING',NOTIFY=DSINC01,
000002 //             MSGCLASS=E                            
000003 //*                                                  
000004 //* DELETE STEP FOR EASIER RE-RUNS                   
000005 //*                                                  
000006 //S01      EXEC PGM=IDCAMS,REGION=40M                
000007 //SYSPRINT DD SYSOUT=*                               
000008 //SYSIN    DD *                                      
000009  DELETE DSINC01.TRAINING.OUTPUT                      
000010  IF MAXCC=8 THEN SET MAXCC = 0                       
000011 /*                                                   
000012 //*                                                  
000013 //* EASYTRIEVE STEP                                  
000014 //*                                                  
000015 //S02     EXEC PGM=EZTPA00,REGION=4M                 
000016 //SYSLIB   DD DSN=ALCHAN.TEST.EMAC,DISP=SHR          
000017 //         DD DSN=SYS3.EASYPLUS.CAIMAC,DISP=SHR      
000018 //FILEI    DD DISP=SHR,DSN=DSINC01.TRAINING.MDATA       
000019 //FILEO    DD DSN=DSINC01.TRAINING.OUTPUT,              
000020 //            DISP=(,CATLG),                            
000021 //            UNIT=PUBLIC,SPACE=(CYL,(500,250),RLSE),   
000022 //            DCB=(LRECL=80,RECFM=FB,BLKSIZE=0,DSORG=PS)
000023 //EZTVFM   DD  UNIT=WORK,SPACE=(CYL,(10,5))             
000024 //SORTWK01 DD  UNIT=WORK,SPACE=(CYL,(10,5))             
000025 //SORTWK02 DD  UNIT=WORK,SPACE=(CYL,(1,1))              
000026 //SORTWK03 DD  UNIT=WORK,SPACE=(CYL,(1,1))              
000027 //SYSOUT   DD  SYSOUT=*                                 
000028 //SYSPRINT DD  SYSOUT=*                                 
000029 //SYSLIZ   DD  SYSOUT=*                                 
000030 //SYSLZ1   DD  SYSOUT=*                                 
000031 //SYUDUMP  DD  SYSOUT=*                                 
000032 //*                                                     
000033 //SYSIN     DD *                                        
000034 FILE SYSLIZ PRINTER                                     
000035 *
000036 * INPUT FILE LAYOUT                                                  
000037 *                                                                    
000038 FILE FILEI                                                           
000039  IMNAME          1     40 A                                          
000040  IMGENRE         41    1  N                                          
000041  IMRATE          42    2  P                                          
000042 * OUTPUT FILE LAYOUT                                                 
000043 *                                                                    
000044 FILE FILEO                                                           
000045  OHEAD          1      80 A                                          
000046  OMNAME         1      30 A                                          
000047  OMGENRE        32     7  A                                          
000048  OMRATE         40     3  N                                          
000049 *--------------------------------------------------------------------
000050 * MAIN LINE                                                          
000051 *--------------------------------------------------------------------
000052 JOB INPUT FILEI NAME DATA                                            
000053  OHEAD = 'TITLE                          GENRE   RATING'             
000054  PUT FILEO
000055  OHEAD = '        '              
000056  OMNAME = IMNAME        
000057  OMGENRE = '      '     
000058   IF IMGENRE = 1        
000059      OMGENRE = 'FANTASY'
000060   END-IF                
000061   IF IMGENRE = 2        
000062      OMGENRE = 'ACTION' 
000063   END-IF                
000064   IF IMGENRE = 3        
000065      OMGENRE = 'COMEDY' 
000066   END-IF                
000067   IF IMGENRE = 4        
000068      OMGENRE = 'HORROR' 
000069   END-IF                
000070   IF IMGENRE = 5        
000071      OMGENRE = 'DRAMA'  
000072   END-IF                
000073  OMRATE = IMRATE
000074  PUT FILEO      
000075  GO TO JOB      
000076 /*  

只复制Easytrive代码,添加标签,然后更改GO TO。

编辑:我再次修改了Easytrieve。我不知道这是否可行,因为我没有大型机可以测试。

获取在线Easytrive手册并学习语言。

000034 FILE SYSLIZ PRINTER                                     
000035 *
000036 * INPUT FILE LAYOUT                                                  
000037 *                                                                    
000038 FILE FILEI                                                           
000039  IMNAME          1     40 A                                          
000040  IMGENRE         41    1  N                                          
000041  IMRATE          42    2  P                                          
000042 * OUTPUT FILE LAYOUT                                                 
000043 *                                                                    
000044 FILE FILEO                                                           
000045  OHEAD          1      80 A                                          
000046  OMNAME         1      30 A                                          
000047  OMGENRE        32     7  A                                          
000048  OMRATE         40     3  N                                          
000049 *--------------------------------------------------------------------
000050 * MAIN LINE                                                          
000051 *--------------------------------------------------------------------
000052 JOB INPUT FILEI NAME DATA                                            
000053  OHEAD = 'TITLE                          GENRE   RATING'             
000054  PUT FILEO
GET FILEI
DO WHILE NOT EOF FILEI
000055    OHEAD = '        '              
000056    OMNAME = IMNAME        
000057    OMGENRE = '      '     
000058    IF IMGENRE = 1        
000059      OMGENRE = 'FANTASY'
000060    END-IF                
000061    IF IMGENRE = 2        
000062      OMGENRE = 'ACTION' 
000063    END-IF                
000064    IF IMGENRE = 3        
000065      OMGENRE = 'COMEDY' 
000066    END-IF                
000067    IF IMGENRE = 4        
000068      OMGENRE = 'HORROR' 
000069    END-IF                
000070    IF IMGENRE = 5        
000071      OMGENRE = 'DRAMA'  
000072    END-IF                
000073    OMRATE = IMRATE
000074    PUT FILEO 
000075    GET FILEI     
000076  END-DO     
000077 /*  

您的头每次都会打印,因为您是在JOB INPUT FILEI内部打印的。相反,将此逻辑移动到JOB INPUT NULL进程(或为此编写STARTER进程(。然后它将只在程序启动时运行。

相关内容

  • 没有找到相关文章

最新更新