EXCPは、EXecute Channel Programのことで、入出力デバイスの直接の操作指令であるCCW(Channel Command Word)を実行するためのアセンブラー・サービス(API)で、EXCPマクロは、EXCPサービスを呼び出すためのアセンブラー・マクロ命令です。現在では、一般のプログラムが直接EXCPを使うことはまずありません。
BSAMやQSAMなど、予め用意されているアクセス方式がサポートしていないデバイス(例えばCTCA:チャネル間結合装置など、特別な目的で使われるデバイス)をアクセスしたり、特殊な編成やレコード長を持つデータセット(レコード長が32760バイトを超えるなど)をアクセスしたりする場合に利用されます。一部のシステム・ソフトウェアにおいて、デバイスのアクセス速度を上げるために、OSのアクセス方式を使わずに、独自のアクセス方式を実装するようなこともありますが、データセットをアクセスするためにEXCPを使うことはほとんどなく、DASDやTAPEなどのボリューム全体の中から任意の位置をランダムにアクセスしなければできない機能を提供するような場合などに利用されることが多いです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
RDJFCB DCB READ JFCB OF SYSUT1 DD STMT MVC JFCBAREA+JFCBDSNM-INFMJFCB(44),=44X'04' SET VTOC DSNAME OPEN DCB,TYPE=J OPEN TARGET VOLUME L R1,DCB+DCBDEBAD-IHADCB LOAD DEB ADDRESS LA R1,DEBBASND-DEBBASIC(,R1) LOCATE TO DASD SECTION MVC IOBCC,DEBSTRCC-DEBDASD(R1) SET VTOC CCCC MVC IOBHH,DEBSTRHH-DEBDASD(R1) SET VTOC HHHH EXCP IOBSTDRD ISSUE EXCP I/O WAIT ECB=ECB WAIT FOR I/O COMPLETION CLOSE DCB CLOSE TARGET VOLUME : : CCW CCW X'64',RDCHAREA,X'00',64 READ DEVICE CHARACTERISTICS CMD RDCHAREA DC XL64'00' DEVICE CHARACTERISTICS READAREA ECB DC F'0' ECB IOB IEZIOB DSECT=NO IOB ORG IOBECBPB (REDEFINE TO SET ECB ADDR) DC AL3(ECB) ORG IOBSTRTB (REDEFINE TO SET IOB ADDR) DC AL3(CCW) ORG IOBDCBPB (REDEFINE TO SET DCB ADDR) DC AL3(DCB) DCB DCB DDNAME=SYSUT1, DCB FOR EXCP + MACRF=E,EXLST=EXLST EXLST DC X'87' (INDICATE TO READ JFCB) DC AL3(JFCBAREA) DS 0F JFCBAREA DC XL176'00' JFCB READ AREA : : IEFJFCBN , JFCB DCBD DEVD=DA DCB IEZDEB DEB |
- 簡単なEXCP発行プログラム:DASDのデバイス特性を得る(問題プログラムで動作可能)
実行後のRDCHAREAの内容
======================
3990C233 9006D000 00022027 08B2000F
E000E5A2 05940222 13090674 00000000
00000000 00000000 27271000 DFEE0000
06770800 00000000 FFFF0000 00000000
SYSUT1 DDステートメントで指定されたDASDボリュームに、EXCPマクロによってチャネル・コマンド「Read Device Characteristics」を発行しています。コマンドの結果、指定された領域RDCHAREAに64バイトのデバイス特性情報が読み込まれます。(関連する技術情報の詳細はマニュアル等を参照して下さい)
- z/OS DFSMSdfp拡張サービス:SD88-6462
- IBM 3990 Storage Control Reference:GA32-0099