LoginSignup
0
0

レコード記述子ワード(RDW)とは?

Posted at

はじめに

メインフレーム(汎用機)で稼働しているシステムをオープン系に移行(マイグレーション)する業務に従事することになった。
その中で得た知見を整理するために記事にすることにしました。
また、この現代に汎用機に関わる業務に従事することになってしまった方の役に少しでもなればと思います。
不定期になるかと思いますが、メインフレームマイグレーションで得られた知見を共有していきたいと思います。

第一弾は、可変長データセットを扱う上で必須知識になるレコード記述子ワード(RDW)についてまとめてみました

レコード記述子ワード(RDW)とは

端的に言うと、データ内の各レコード(行)の長さが格納された領域です。
各行の先頭4バイトに格納されています。
最初の2バイトが各行のレコード長で、残りの2バイトがスパンドレコード用の予約領域です。
大抵、スパンドレコード用の予約領域は「0」つまり"0000"になります。
最初の2バイトに格納されるレコード長ですが、ここはRDW領域の4バイトも含むものになります。そして、レコード長は16進数の値が入ります。

私の経験では、メインフレーム上で可変長データを参照してもRDW領域は表示されません:sweat:
:warning:メーカによっては表示されるかもしれません。

例えば、以下のようなファイルがあった場合

サンプルファイル
     ----+----+----+----+----
0001 abcdefghij
0002 1234567890abcdef

1行目は、10文字あるため純粋なレコード長は10バイトですが、RDWに格納されるレコード長は+4バイトした14バイトとなります。
そのため、RDWには「000e0000」となります。
2行目は、16文字あるため純粋なレコード長は16バイトですが、RDWに格納されるレコード長は+4バイトした20バイトとなります。
そのため、RDWには「00140000」となります。

最後に

メインフレームからオープ系にデータ移行する際の簡易なツールを作成してみた。
ファイルを読んで、指定したRDW情報を各行の先頭に付加して出力するシェルスクリプトです。

参考情報

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0