2009-11-04 45 views
1

在z/OS下,我想編寫一個REXX或CLIST腳本來將一個順序數據集複製到另一個,然後運行另一個腳本(REXX)。另一個腳本需要特定的SDS存在,我希望能夠在運行第二個腳本之前將許多選項中的一個複製到該成員。這是來自TSO,所以我不能訪問任何花哨的ISPF的東西。如何使用REXX/CLIST批處理程序(無ISPF)複製成員?

因此,基本上:

Copy 'level1.level2.name.type1' to 'level1.level2.name' 
runother p1 p2 p3 

runother的Rexx腳本使用「level1.level2.name」做自己的魔法 - 我只是提供一個不同的,我的每個機會。

所以我需要一個名爲'xx42'的腳本來複制'level1.level2.name.42',然後我可以修改其他值爲42的值。更好的做法是參數化該腳本,這樣我就可以使用

xx 42 p1 p2 p3 

xx 27 p1 p2 p3 

,而不是爲每個值的腳本。這將複製給定的SDS,然後將參數p1,p2p3直到runother

回答

0

有點擺弄周圍後,我想通了,你可以手動分配所需的數據集和運行IEBGENER做副本:

/* REXX */ 

"ALLOC FI(SYSPRINT) DUMMY REUSE" 
"ALLOC FI(SYSIN) DUMMY REUSE" 
"ALLOC FI(SYSUT1) DA('LEVEL1.LEVEL2.NAME.42') SHR REUSE" 
"ALLOC FI(SYSUT2) DA('LEVEL1.LEVEL2.NAME') SHR REUSE" 
"IEBGENER" 
RC2 = RC 
"FREE FI(SYSUT1)" 
"FREE FI(SYSUT2)" 
"FREE FI(SYSPRINT)" 
"FREE FI(SYSIN)" 
IF RC2 ^= 0 THEN DO 
    SAY "IEBGENER FAILED." 
    END 
ELSE DO 
    RUNOTHER P1 P2 P3 
    END 
2

在尋找別的東西,我碰到這個職位來了。 (即我沒有花2年的時間來制定這種迴應),並認爲未來的主流人士(我們還存在嗎?)可能會發現它有用。

你也可以做一個SMCOPY:

address TSO "SMCOPY FDS('LEVEL1.LEVEL2.NAME.42') TDS('LEVEL2.LEVEL2.NAME')" 

FDS - 從數據集,TDS - 對數據集。如果TDS不存在,您將得到一個返回代碼4,但副本將被執行。您也可以使用SMCOPY複製庫成員。

0

您也可以使用SORT從SORTIN複製到SORTOUT。您可以使用參數或使用SET語句將該JCL包含在proc中。