2016-08-13 28 views
1

私は頻繁にISPF編集マクロを作成して使用します。しかし、それらをフォアグラウンドで呼び出すには時間がかかります。 Rexxプログラムを使用して、バッチ経由でPDSのすべてのメンバーまたは選択したメンバーに対して編集マクロを実行できますか?ここでISPF編集マクロをバッチで実行するには

+0

あなたは自分自身の質問に答えていますか? ;) –

+1

David、そうです。どうやら他の人やSOの精神を助けるように配慮しているので、そうするのは大丈夫です。 – MikeT

答えて

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のすべてに対してあなたのマクロを実行している間、それをオフに戻って座る。

関連する問題