IBMメインフレームのオペレーティングシステムでは、基本シーケンシャルアクセス方式(BSAM)[ 1 ]は、データセットを順次読み書きするためのアクセス方式です。BSAMは、 OS/360、OS/VS2、MVS、z/OS 、および関連するオペレーティングシステムで使用できます。
BSAMは、パンチカードリーダー、パンチ、ラインプリンタ、磁気テープなど、本質的にシーケンシャルなデバイスに使用されます。また、磁気ディスクなど、直接アドレス指定が可能なデバイス上のデータにも使用されます。BSAMはデバイス非依存性を提供し、可能な限り、異なるデバイスに対して同じAPI呼び出しを使用します。
BSAMでは、プログラムが物理データブロックを読み書きできます。これに対し、より強力ではあるものの柔軟性に劣るキューイングシーケンシャルアクセス方式(QSAM)では、プログラムは物理データブロック内の論理レコードにアクセスできます。BSAMのユーザーは、特にデータセットの末尾、そして多くの場合データセット内でも、短い(切り詰められた)ブロック(データセット内のブロックがデータセットのBLKSIZEよりも短い)に遭遇する可能性があることを認識しておく必要があります。QSAMには、このような制限はありません。
プログラマは、データ制御ブロックDSORG=PS(DCB)でBSAM の使用を指定します。基本的なアクセス方法として、BSAM はメンバ データをブロック単位で読み書きし、I/O 操作は非同期で進行するため、マクロを使用して完了をテストする必要があります。[ 2 ] BSAM は、標準システム マクロ、、、、およびを使用します。マクロ命令は、最後に読み書きされたブロックの位置を返し、マクロは、前ので識別された場所に位置を再配置します。[ 2 ]CHECKOPENCLOSEREADWRITECHECKNOTEPOINTNOTE
データセットがブロック化されていない場合、つまり論理レコード長(LRECL)が物理ブロックサイズ(BLKSIZE)と等しい場合、BSAM はサポートされている任意の直接アクセス デバイス タイプ(DEVD=DA)を使用して直接アクセスされたデータセットをシミュレートするために利用できNOTE、POINTいくつかのプリミティブ アプリケーションはこのように設計されました。
BSAMアプリケーションプログラミングインターフェースは、UnixやWindowsなどの他のオペレーティングシステムにおけるopen、read 、 write、close呼び出し(ファイルハンドルを使用)によって提供されるインターフェースと比較できます。はseekまたはlseekのアナログを提供し、ftellはと同等です。POINTNOTE