EXCPマクロ
By 神居 - Posted: 2010/02/26 Last updated: 2010/02/26
- Leave a Comment
EXCPはEXecute Channel Programのことで、I/Oデバイスの直接の操作指令であるCCW(Channel Command Word)を実行するためのAPIです。現在では一般のプログラムがEXCPを使うことはまずありません。
BSAMやQSAMなど用意されているアクセス法がサポートしていないデバイス(例えばCTCA:チャネル間結合装置など特別な目的で使われるデバイス)をアクセスしたり、特殊な編成やレコード長を持つデータセット(レコード長が32760バイトを超えるなど)をアクセスしたりする場合に利用されます。一部のシステム・ソフトウェアにおいて、デバイスのアクセス速度を上げるためにOSのアクセス法を使わずに、独自のアクセス法を実装するようなこともありますが、データセットをアクセスするためにEXCPを使うことはほとんどなく、DASDやTAPEなどのボリューム全体の中から任意の位置をランダムにアクセスしなければできない機能を提供するような場合などに利用されます。
簡単なEXCP発行プログラム:DASDのデバイス特性を得る(問題プログラムで動作可能)
----+----1----+----2----+----3----+----4----+----5----+----6----+----7-- 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
実行後の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バイトのデバイス特性情報が読み込まれます。
関連する技術情報の詳細はマニュアル等を参照して下さい。
Posted in キーワードから(何が知りたいですか) • • Top Of Page