2014-01-31 11 views
0

聲明符號值:早期文件從遠程服務器位置大型機牽強。然後 這些文件內容被獲取並保存在大型機中的一個順序文件中。但有時候,某些文件名包含空格。由於此作業在獲取 內容時失敗。傳遞使用DFSORT到文件

現在要解決這個問題,我們從獲取服務器的所有文件,並分離良好的文件 和壞的文件。現在我們只抓取好的文件內容。

問題:當重命名文件,我們添加前綴Process_和大館(從沒控制M牽強),以文件名。 但是早些時候它是通過unix代碼在jcl中完成的,如下所示。

僞代碼: 打印 「重命名」 $ 1 「」 「Process_」 %% DAT 「_」 $ 1

我們正在從一個軟件控制-M取大館。

JCL代碼:

//JOBNAME JOB (DEE),'Job Desc',CLASS=P,MSGCLASS=J, 
//  MSGLEVEL=(1,1),COND=(0,NE)       
//* %%SET %%DAT = %%$ODATE 
//STEP01 EXEC PROC1 

PROC1代碼:

//STEP02 EXEC PGM=SORT                
//SORTIN DD DSN=DS.FILE1,   
//    DISP=SHR      
//SORTOUT DD DSN=DS.FILE2,  
//    UNIT=SYSSF,         
//    DCB=(RECFM=FB,LRECL=80,BLKSIZE=0),    
//    SPACE=(27920,(29,6),RLSE),  
//    DISP=(NEW,CATLG,DELETE)      
//SYSIN DD DSN=DS.PARM(PARM03),DISP=SHR  

PARM03包含: 在這裏,我創建的UNIX代碼重命名文件:

SORT FIELDS=COPY            
OUTFIL BUILD=(1:C'print "get " r_fi',18:SEQNUM, -    
    3,ZD,22:C'" //DD:upload"',/,1:C'print "rename " r_fi', - 
     21:SEQNUM,3,ZD,24:C' ', -       
25:C' " " "Process_" %%DAT "_" r_fi',53:SEQNUM,3,ZD,80:X)  
/*               

Unix的代碼,我正在動態創建: 這裏取決於文件數p_fi01,生成p_fi02,p_fi03 .....。 我將unix代碼保存在數據集中,並將其作爲instream傳遞以運行。

的問題是,它是不是能得到DAT變量的值。 有什麼辦法,我可以從JCL通過d的值proc和與
「Process_」使用排序在PROC卡添加它。

示例數據: 文件File1.csv內容是獲取並更名爲Process_20140101_File1.csv

+1

我可以看到JCL嗎? – SaggingRufus

+0

@BillWoodger我很高興看到另一個COBOL程序員在這裏XD – SaggingRufus

+0

@BillWoodger:我在這裏使用了DFSORT。我也提供了一些示例數據。 – deepaklearner

回答

1

假設你的代碼的其餘部分是確定的,它與DFSORT相當簡單,採用日本,這是一個特殊的DFSORT符號,允許在控制卡中使用最多10個參數的單獨值。

下面是一個例子:

// SET INPARM='ABC' 
//* 
//STEP0100 EXEC PGM=SORT,PARM='JP0"&INPARM"' 
//SYSOUT DD SYSOUT=* 
//SYMNOUT DD SYSOUT=* 
//SORTOUT DD SYSOUT=* 
//SYSIN DD * 
    OPTION COPY 
    INREC BUILD=(JP0) 
//SORTIN DD * 
IRRELEVANT DATA, JUST AN EXAMPLE 

我已經使用SET創建JCL符號,但你有你已經從CONTROL-M,所以只需更換與您的CONTROL-M符號的PARM & INPARM 。

JPN指通過JP9 JP0。三個獨立的數據塊看起來是這樣的:

//STEP0100 EXEC PGM=SORT,PARM='JP0"&INPARM1",JP1"&INPARM2",JP2"&INPARM3"' 

SYMNOUNT DD是可選的,但是非常非常有用,因爲它會告訴你這些符號的翻譯值。

假設你的代碼的其餘部分是正確的,你會作出這樣的變化:

25:C' " " "Process_"',JP0,C'"_" r_fi',53:SEQNUM,3,ZD,80:X) 

,幷包括EXEC卡上的PARM,PARM='JP0"[yourControl-M-symbol]"'

Syncsort公司沒有日本,所以這是幸運的是你有DFSORT。 SyncSort需要不同的技術。

+0

非常感謝。我在嘗試。請讓你知道,它的工作與否。 :-) – deepaklearner

+0

它的工作。 :) – deepaklearner

+0

@Raushan你可能想考慮接受這個答案,以便其他人會看到它是:1)你在找什麼; 2)正確地解決你的問題; 3)是否發佈了最佳答案(這可能是唯一的答案,但其他人發佈後續答案並不罕見,因爲他們希望他們會得到答案) – NealB

相關問題