MVSでは当初からQSAM、BSAM、BPAM等によるデータセットのアクセスは24ビットモード・プロセッシングが基本でした。ベーシックなI/OメカニズムはCCWも含めMVS/XAの時点で31ビット化されていましたがQSAMなどのアクセス法レベルではMVSがESAになってDFPがDFSMSに統合された時から31ビットモード・プロセッシングが可能になりました。APIのパラメーター(1部を除く)やデータセットのI/Oバッファが16MBラインの上へ配置できるようになったことはプログラムを作成する上でも恩恵が大きいです。しかしながら従来の24ビットモード・インタフェースではMVSとMSPおよびVOS3にはほぼ完全な互換がありましたが、31ビットモード・インタフェースでは各社各様の仕様になっておりAPIの互換はありません。なおMSPでは31ビットモード・インタフェースはサポートされていません。
DCBの大きさ(QSAM)
MVS/DFP | 96バイト(24ビットモードAPI) |
MSP/データ管理 | 96バイト(24ビットモードAPI) |
VOS3/データ管理 | 96バイト(24ビットモードAPI) |
XSP/データ管理 | 100バイト(24ビットモードAPI) |
MVS/DFSMS | 96バイト(31ビットモードAPI) ※ただしDCB領域は16MBラインの下に置かねばならない |
VOS3/データ管理 | 104バイト(31ビットモードAPI) ※ただしDCB領域は16MBラインの下に置かねばならない |
拡張DCB(DCBE)の大きさ(QSAM)
MVS/DFSMS | 56バイト(31ビットモードAPI) |
VOS3/データ管理 | なし(不要) |
QSAMバッファプールの解放
従来はCLOSEマクロの後でFREEPOOLが必要であったが、DCBEでQSAM I/Oバッファを31ビットにする場合はCLOSEルーチン内で自動的に解放されるため不要となった。FREEPOOLマクロはエンハンスされず24ビットモードのバッファしか解放できないため。(DFSMS/MVS Macro Instructions for Data Sets SC26-4913)
サンプルコード
MVS/DFSMS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
OPEN (dcb,mode),MODE=31 PLISTはRMODE=ANYでOK CLOSE (dcb,mode),MODE=31 PLISTはRMODE=ANYでOK GET dcb,area GET,PUTはAMODE=31で発行できる PUT dcb,area dcb DCB DCBE=dcbe, DCB領域はRMODE=24でなければならない EXLST=, EXLST領域はRMODE=24でなければならない EXLST領域で指定するEXITルーチンは RMODE=24でなければならない (AMODE=24で制御を受ける) dcbe DCBE RMODE31=BUFF, DCBE領域はRMODE=ANYでOK EODAD=, EODADルーチンはRMODE=ANYでOK SYNAD= SYNADルーチンはRMODE=ANYでOK |
Sample Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
*---------------------------------------------------------------------* * I/O APPENDAGE ROUTINE (DUMMY ROUTINE FOR OUR EXCP I/O) * *---------------------------------------------------------------------* DC 0D'0',CL8'APENDAGE' FOR DIAGNOSE IOAPENDR BR 14 DUMMY APPENDAGE ROUTINE SPACE , SR R0,RE GR0 --> READ LENGTH + (ACTUAL DATA LENGTH ON TRACK) L R1,AIOBUF GR1 --> ALL CKD DATA ON TRACK *---------------------------------------------------------------------* * D E B (SIMULATE DEB FOR EXCP I/O) AND D C B (DUMMY) * *---------------------------------------------------------------------* DC 0D'0',CL8'DEBAVT-8' FOR DIAGNOSE DEBAVT DS 0D DEB -36 (DEB APPENDAGE VECTOR) DEBEOEA DC A(IOAPENDR) EOE APPENDAGE ROUTINE DEBSIOA DC A(IOAPENDR) SIO APPENDAGE ROUTINE DEBPCIA DC A(IOAPENDR) PCI APPENDAGE ROUTINE DEBCEA DC A(IOAPENDR) CHANNEL-END APPENDAGE ROUTINE DEBXCEA DC A(IOAPENDR) ABNORMAL-END APPENDAGE ROUTINE DEBPREFX DS 0A DEB -16 (DEB PREFIX) DEBWKARA DC XL1'00' IOS WORKAREA DEBDSCBA DC XL7'00' IOS USE DSCB ADDRESS |
MSPでは従来通りのためAMODE=31のプログラムではGET,PUT発行前にAMODEを24に変更しなければならない。EODADも24ビットのまま入ってくるので注意しなければならない。
MVSでは当初からQSAM、BSAM、BPAM等によるデータセットのアクセスは24ビットモード・プロセッシングが基本でした。ベーシックなI/OメカニズムはCCWも含めMVS/XAの時点で31ビット化されていましたがQSAMなどのアクセス法レベルではMVSがESAになってDFPがDFSMSに統合された時から31ビットモード・プロセッシングが可能になりました。APIのパラメーター(1部を除く)やデータセットのI/Oバッファが16MBラインの上へ配置できるようになったことはプログラムを作成する上でも恩恵が大きいです。しかしながら従来の24ビットモード・インタフェースではMVSとMSPおよびVOS3にはほぼ完全な互換がありましたが、31ビットモード・インタフェースでは各社各様の仕様になっておりAPIの互換はありません。なおMSPでは31ビットモード・インタフェースはサポートされていません。