ISPF 編集マクロを頻繁に作成して使用しています。ただし、それらをフォアグラウンドで呼び出すには時間がかかります。Rexx プログラムを使用して、編集マクロを PDS のすべてのメンバーまたは一部のメンバーに対してバッチで実行できますか?
2088 次
2 に答える
0
PDS のすべてのメンバーに対して別のマクロを実行する編集マクロを次に示します。
/*REXX - Edit macro to invoke the same macro against all members */
/* in the data set being edited. */
/* Syntax: */
/* ALLMEM macro prefix */
/* macro is the name of a macro to execute. If it */
/* is a program macro, remember to specify the */
/* exclamation point before the name. */
/* */
/* prefix is an optional prefix to use when selecting */
/* members to process. for example, ISR will */
/* process all members starting with ISR. */
/* */
/* Note that the macro which this calls can have an */
/* ISREDIT END or ISREDIT CANCEL in it to avoid the display */
/*------------------------------------------------------------------*/
Address 'ISPEXEC'
'ISREDIT MACRO (WORKMAC,PREFIX)'
'ISREDIT (DATA1) = DATAID'
'ISREDIT (THISONE) = MEMBER '
Address 'ISPEXEC' 'LMOPEN DATAID('data1') OPTION(INPUT)'
parse upper var prefix prefix .
member1=''
Do Until lmrc\=0
Address 'ISPEXEC' 'LMMLIST DATAID('data1') OPTION(LIST)',
'MEMBER(MEMBER1) STATS(YES)'
lmrc = rc
If lmrc = 0 ,/* if member name returned */
& member1\=thisone ,/* and it isn't this member */
& ( ,/* and prefix check is ok... */
prefix='' ,/* No prefix specified */
| substr(member1,1,length(prefix))=prefix,/* or prefix match*/
) Then
Do /* invoke edit with specified initial macro*/
Address 'ISPEXEC' 'CONTROL ERRORS CANCEL'
Address 'ISPEXEC' 'EDIT DATAID('data1')',
'MEMBER('member1') MACRO('workmac')'
Address 'ISPEXEC' 'CONTROL ERRORS CANCEL'
End
End
Address 'ISPEXEC' 'LMMLIST DATAID('data1') OPTION(FREE)'
Address 'ISPEXEC' 'LMCLOSE DATAID('data1')'
'ISREDIT DEFINE 'workmac' MACRO CMD'
If prefix='' ,/* No prefix specified */
| substr(thisone,1,length(prefix))=prefix, /* or prefix match*/
then
'ISREDIT 'workmac /* perform macro for this member */
これは ISPF ビューまたは編集の下で使用するためのものですが、バッチで動作させることもできますが、マクロをすべての PDS に対して実行している間、起動して座って待つこともできるため、各メンバーで手動で実行する必要がなくなります。 .
于 2016-09-05T13:21:44.033 に答える