Archive for 'MVS実践アセンブラー・プログラミング' Category

アセンブラーで区分データセットのディレクトリー部を読み込む

By 神居 - Posted: 水曜日, 5月 1, 2019

区分データセットのディレクトリー部は、構造的には256バイト固定長の非ブロック化レコードの順次データセットと同じです。そのため、区分データセット内にどのようなメンバーが格納されているかを知るために、BSAMまたはQSAM […]

QSAMでPDSメンバーにアクセスする

By 神居 - Posted: 火曜日, 4月 30, 2019

順次データセットは、QSAMを利用すれば論理レコード単位で簡単にアクセスできます。区分データセット用にはBPAMが提供されています。しかしながら、BPAMの場合はブロック(物理レコード)単位でないとアクセスできず、ブロッ […]

サブプール・ゼロ(0)の落とし穴

By 神居 - Posted: 火曜日, 4月 30, 2019

GETMAIN R,LV=2000 OBTAIN 2KB STORAGE LR R6,R1 GR6 —> STORAGE ADDRESS : : プログラムの外側に領域を確保して使用する際、GETMAINマクロで長さ […]

記号*を活用する

By 神居 - Posted: 金曜日, 7月 13, 2018

シンボル(記号)*を活用する:レベル1タイトル&#9312 アセンブラーにはロケーション・カウンターという仕組みがあります。アセンブラー言語でプログラムを書く際は、B ERROR、ST R1,AREA2のように […]

ダンプリスト解析入門⑩

By 神居 - Posted: 水曜日, 3月 27, 2013

ダンプリスト解析入門⑩:プログラム割込みによるABENDダンプ解析サンプル シリーズの最後に、簡単なプログラムを使ってABENDダンプの解析を行ってみます。アセンブラー・プログラムで起こりがちなS0C4 AB […]

ダンプリスト解析入門⑨

By 神居 - Posted: 木曜日, 3月 7, 2013

ダンプリスト解析入門⑨:ダンプ解析に関連するOSコントロール・ブロック&#9316 タスクで実行中のプログラムがGETMAINマクロなどで獲得した仮想記憶域は、サブプール毎に獲得済みの領域とフリー領 […]

ダンプリスト解析入門⑧

By 神居 - Posted: 火曜日, 1月 29, 2013

ダンプリスト解析入門⑧:ダンプ解析に関連するOSコントロール・ブロック&#9315 TIOT TIOT(Task Input/Output Table)は、ジョブを実行するためのJCLに定義されたD […]

ダンプリスト解析入門⑦

By 神居 - Posted: 月曜日, 12月 17, 2012

ダンプリスト解析入門⑦:ダンプ解析に関連するOSコントロール・ブロック&#9314 LLE LLE(Load List Element)は、タスクがローディングしたロードモジュールを示すコントロール […]

ダンプリスト解析入門⑥

By 神居 - Posted: 水曜日, 11月 14, 2012

ダンプリスト解析入門⑥:ダンプ解析に関連するOSコントロール・ブロック&#9313 ASCB ASCB(Address Space Control Block)は、アドレス空間を管理するコントロール […]

ダンプリスト解析入門⑤

By 神居 - Posted: 金曜日, 10月 19, 2012

ダンプリスト解析入門⑤:ダンプ解析に関連するOSコントロール・ブロック&#9312 ダンプリストには、レジスター内容と関連する仮想記憶域の内容だけでなく、OSのさまざまなコントロール・ブロックが編集 […]

ダンプリスト解析入門④

By 神居 - Posted: 木曜日, 9月 20, 2012

ダンプリスト解析入門④:ABENDの原因を調べる&#9313 レジスターセーブエリア・トレース プログラムが1つのモジュール(CSECT)しか持たない場合や、複数のモジュールで構成されていても動的構 […]

ダンプリスト解析入門③

By 神居 - Posted: 土曜日, 9月 8, 2012

ダンプリスト解析入門③:ABENDの原因を調べる&#9312 モジュール内のどこでプログラムがABENDしたのかが特定できたら、エラーの原因を究明していきます。まずはABENDコードによってABEN […]

ダンプリスト解析入門②

By 神居 - Posted: 木曜日, 8月 23, 2012

ダンプリスト解析入門②:ABEND箇所を特定する プログラムの誤りを正すための一般的な手順は概ね以下の通りとなります。 どこでABENDしたのか? →ABEND(エラーの)箇所を特定する どうしてA […]

ダンプリスト解析入門①

By 神居 - Posted: 金曜日, 8月 17, 2012

ダンプリスト解析入門①:ダンプの種類と解析に必要な準備 アセンブラー・プログラミングをする上で避けて通れないのが、ダンプリストの解析です。MVS(および互換OS)には、プログラムが実行中に異常終了すると、その […]

TR命令とTRT命令

By 神居 - Posted: 火曜日, 3月 20, 2012

TR命令 機能と構文 TR(Translate)は、メモリー内のデータの変換を行う命令です。A番地にあるバイト・データをB番地にある変換用テーブルにしたがってバイト単位に変換します。ある文字を別の文字に変更する、といった […]

MVC命令

By 神居 - Posted: 金曜日, 3月 9, 2012

MVC命令 機能と構文 MVC(Move)は、メモリー内でのデータの移動を行う命令です。A番地にあるバイト・データをB番地に移します(写します)。命令の名前はMoveですが、転送元のメモリー内容はそのままなので、実際の動 […]

ダンプリスト解析入門(番外編①)

By 神居 - Posted: 火曜日, 10月 18, 2011

ダンプリスト解析入門(番外編①):正しいアドレスなのにS0C4でABENDする?? MVCL命令でデータの移動先アドレスや移動するデータの長さなどを間違えた場合に、データの移動中にプログラムチェック割り込みを […]

ベースレジスターが足りないと嘆く前に

By 神居 - Posted: 月曜日, 5月 16, 2011

アセンブラーを覚えたての頃に多いと思うのですが、ある程度の規模や機能を持ったプログラムを作っている最中にベースレジスターが足りなくて困ったという経験をするかも知れません。1つのベースレジスターで4KB(ベースアドレス+変 […]

ブランク行で見やすいコードを書く

By 神居 - Posted: 木曜日, 4月 7, 2011

プログラムを見やすくするために、ロジックのブロックとブロックの間に空白行を入れるといいでしょう。空白行がないままで何十、何百という長いステートメントが続くと、見にくいですしバグ対応でコードを調べる時も追いにくいものです。 […]

カット&ペーストでバグが起きる?

By 神居 - Posted: 水曜日, 2月 16, 2011

プログラムをコーディングする際に、複数行のリピートやカット&ペーストなどで、すでにコーディング済みのロジックを複製してその内容の一部を変えて使うような場合があります。 SUBRTN1 DS 0H +—— […]