Skip to content
| Marketplace
Sign in
Visual Studio Code>Visualization>RDW ViewerNew to Visual Studio Code? Get it now.
RDW Viewer

RDW Viewer

zhuuchaofan

|
1 install
| (0) | Free
RDW(前後 4 バイト・リトルエンディアン)付き可変長レコードファイルのビューアー。COBOL の COPY句による項目表示、COMP-3 のデコードに対応
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

RDW Viewer

日本語 | 中文

スクリーンショット

RDW(Record Descriptor Word) 付きの可変長レコードファイルを VS Code で表示する拡張機能です。 1 レコードを 1 行とし、COBOL の COPY句に従って項目を横に並べて表示します。

ファイル形式

[前 RDW 4 バイト][レコード本体 N バイト][後 RDW 4 バイト]
  • RDW はリトルエンディアン。先頭 2 バイトがレコード本体の長さ N、後半 2 バイトは使用しません(画面には表示しません)。
  • 前後の RDW が一致することでレコード境界を判定します。
  • レコード本体は既定で Shift_JIS としてデコードします。画面右上、または設定 rdwViewer.encoding で変更できます。

サンプル

examples/ に、すぐに試せる RDW ファイルと COPY句があります。examples フォルダーを VS Code で開き(設定 .vscode/rdw-viewer.json が自動で使われます)、各 .dat を右クリック →「RDW Viewer で開く」。

ファイル 内容
01-customer.dat 通常のレコード:日本語・半角カナ・COMP-3・ゾーン 10 進。固定形式の COPY句(一連番号・識別領域付き)
02-mixed-length.dat レコード長が混在:ヘッダー 40 / 明細 80 / トレーラー 30 バイト
03-same-length.dat 同じレコード長(64)をレコード区分(1 バイト目)で COPY句を切り替え
04-redefines.dat REDEFINES:支払区分ごとにカード / 銀行 / 現金のレイアウトを切り替え
05-numeric.dat 各種 USAGE(ゾーン 10 進、SIGN SEPARATE、COMP-3、COMP、COMP-5、COMP-1/2)と不正データの例
06-broken.dat RDW エラー:前後不一致・長さ不正・ファイルの途中切れ
07-no-copybook.dat COPY句なし:COMP-3 の自動判別

サンプルは npm run examples で再生成できます(test/fixtures/examples.ts)。

使い方

エクスプローラーでファイルを右クリック →「RDW Viewer で開く」(.dat / .rdw のカスタムエディターとしても登録されており、「アプリケーションから開く…」で既定のエディターに設定できます)。大きなローカルファイルはファイル全体をメモリに読み込まずページ単位で必要な部分だけを読み込み、進行状況の表示と途中中止に対応しています。

  • レコード長ごとのタブ:長さの異なるレコードが混在する場合、長さごとにタブを分け、それぞれに COPY句を指定できます。
  • COPY句の指定:タブ上部の「COPY句を選択…」から選びます。指定がないレコード長は、ワークスペース内で全長が一致する COPY句が 1 つだけなら自動で使います(タブに「自動」と表示。保存はされず、「指定解除」で自動選択も止められます)。全長がレコード長と一致する COPY句は ✓ 付きで先頭に表示されます。指定内容は <ワークスペース>/.vscode/rdw-viewer.json に保存され、次回から自動で適用されます。
  • ファイル順:右上の「ファイル順」で、ファイル上の順序のまま全レコードを表示します。COPY句が切り替わる箇所には見出し(項目名 / 属性 / 相対位置)が挿入されます。
  • セルの詳細:セルをクリックすると、表の下のステータス行にレコード番号・オフセット・項目値・元のバイト(16 進)を、その下にレコード全体の 16 進ダンプを表示します。
  • 画面の操作:タブ上部の行には主な操作(COPY句の選択・変更、エクスポート)だけを置き、解析詳細・指定解除・項目値で切り替えは「⋯」メニューにまとめています。オフセット列はツールバーの「オフセット」で表示できます。
  • エラー:レコード長の超過、ファイルの途中切れ、前後 RDW の不一致は「エラー」タブとファイル順ビューに赤で表示し、オフセットと原因を示します。後続の正しいレコード境界を探して解析を続けます。
  • 表示言語:日本語が既定です。VS Code の表示言語が中国語のときは中国語で表示します。
  • 見やすさ:縞模様、選択行の強調、型による色分け(数値・FILLER・空白)、末尾の埋め空白は「·」「□」で表示。ファイル順ビューでは COPY句ごとに色帯で区別します。色は VS Code のテーマに追従します。
  • セルの数値:数値項目のセルをクリックすると、デコードした数値(例:PIC S9(5)V99 の 009876u → -987.65)も表示します。

エクスポート(CSV / TSV)

  • 各タブ上部の「エクスポート…」:現在のタブを 1 ファイルに出力します。
  • ツールバーの「すべてエクスポート…」:フォルダーを選び、タブごとに 1 ファイル(<ファイル名>_<レコード長>.csv など)を出力します。エラーがあればエラー一覧も出力します。
  • 形式はエクスポート時に CSV / TSV から選択します。1 行目に項目名、2・3 行目に属性と相対位置、各行の先頭にレコード番号とオフセットを出力します。
  • 文字コードは既定で Shift_JIS(設定 rdwViewer.exportEncoding で BOM 付き UTF-8 に変更可)。Shift_JIS で表せない文字は ? に置き換え、件数を通知します。
  • COMP-3 などはデコードした値を出力します。COPY句がない場合に自動判別した COMP-3 は [値]、判別できないバイトは <16 進> で出力します。
  • 大きなファイルも分割して書き込むため、メモリを大量に使いません。進行状況が表示され、途中で中止できます(中止したファイルは削除されます)。
  • ファイル順ビューは列構成がグループごとに異なるため、1 つの表としてはエクスポートできません。

16 進ダンプ

ツールバーの「HEX」がオンのとき、表のレコードをクリックすると、表の下にそのレコードの 16 進ダンプ(オフセット / 16 バイトの 16 進 / 文字)を表示します。

  • 項目ごとに背景色を交互に変え、選択中の項目を強調します。バイトにマウスを合わせると位置(1 から数えた位置と 16 進オフセット)と項目名を表示し、クリックすると表の対応するセルを選択します。
  • 前後の RDW も表示します。エラー行をクリックすると、読み飛ばしたバイト(先頭 4096 バイトまで)を表示します。
  • 2 バイト文字は先頭バイトの位置に表示します。表との境界をドラッグすると高さを変えられます。

2 つのファイルの比較

エクスプローラーで 2 つのファイルを選択して右クリック →「RDW Viewer で比較」。1 つだけ選んだ場合や、ビューアーのツールバーの「比較…」からは、比較先のファイルを選択します。

  • 左右に並べて表示:A と B の表を左右に並べ、縦・横のスクロールを同期します。違いのある項目は黄色、A のみのレコードは赤、B のみのレコードは緑で表示し、相手側には斜線の空行を入れます。
  • 突き合わせ:
    • レコード番号順:A の n 件目と B の n 件目を比較します(RDW エラーは比較対象外)。
    • キー項目:A の COPY句の項目から選ぶ(複数可。連結して比較)か、位置を 1-10、1-3,8-10 の形式で入力します。挿入・削除・順序の入れ替えがあっても対応するレコード同士を比較します。同じキーが複数ある場合は出現順に対応付けます。
  • 差分のみで相違・片側のみのレコードだけを表示します。「前の差分」「次の差分」(Shift+F7 / F7)で移動できます。
  • セルをクリックすると A / B の値と 16 進を並べて表示し、16 進ダンプも左右に並べて異なるバイトを強調します。
  • COPY句は通常の表示でレコード長ごとに指定したもの(.vscode/rdw-viewer.json)を使います。レイアウトが異なる場合は項目名で対応付けて比較します。
  • 大きなファイル(A・B 合計 20 万件以上)では進行状況を表示し、途中で中止できます。中止した場合は直前の比較結果のままです。

同じレコード長で、項目値によって COPY句を切り替える

レコード長は同じでもレイアウトが異なる場合(ヘッダー・明細・トレーラーなど)、ある項目の値で区別できます。

  1. 対象のレコード長のタブで「項目値で切り替え…」をクリックします。
  2. 判別に使う項目を選びます。現在の COPY句の項目(例:レコードID)から選ぶか、開始位置・長さ・型(文字 / COMP-3)を手入力します。COMP-3 項目は数値として比較します。
  3. その項目に現れる値と件数が一覧表示されます。確認すると値ごとにタブが作られます(例:「1600 バイト = +10200」)。
  4. タブごとに COPY句を選択します。対応する COPY句がない値は別グループとなり、レコード全体を表示します。

値が 50 種類を超える場合は「項目の選択が誤っている可能性がある」として中止します。「切り替えを解除」でレコード長単位の表示に戻せます。 設定は .vscode/rdw-viewer.json の discriminators に保存されます。

{
  "copybooks": { "2000": "copy/HEADER.cbl" },
  "discriminators": {
    "1600": {
      "start": 1, "length": 3, "type": "comp3",
      "copybooks": { "+10100": "copy/HEADER.cbl", "+10200": "copy/DETAIL.cbl" }
    }
  }
}

REDEFINES:レイアウトの切り替え

REDEFINES の元の項目と再定義した項目は同じ領域を共有し、領域の長さはいちばん長いものになります(重複して数えません)。 既定では元の項目のレイアウトで表示し、提示行の下の「レイアウト」で切り替えます(例:REDEFINES PAY-CARD → PAY-BANK)。

  • 選択はタブ(レコード長、または項目値のグループ)ごとに .vscode/rdw-viewer.json の layouts に保存されます。
  • 「項目値で切り替え」と組み合わせると、たとえば支払区分 B のレコードは自動的に銀行レイアウトで表示できます(examples/04-redefines.dat を参照)。
  • 入れ子の REDEFINES、OCCURS 内の REDEFINES、REDEFINES の REDEFINES にも対応します。同じ長さの 01 が複数ある場合も、ここで切り替えられます。

COPY句がない場合:COMP-3 の自動判別

COPY句が未指定のレコードは「レコード全体」の 1 列で表示します。ツールバーの「COMP-3 を自動判別」がオンのとき(既定でオン、設定 rdwViewer.autoDetectPacked)、 レコードを文字・COMP-3・判別できないバイトに分けて表示します。

[+10100]1ABCD-0001[+0][+0][+2241070][+2241086]
  • [ ](緑):推定した COMP-3 の値。符号 C/D は +/- 付き、F は符号なし。小数点の位置は分からないため整数で表示します。
  • ‹ ›(灰色):文字でも COMP-3 でもないバイト。16 進で表示します。
  • 末尾の空白は表示しません。セルをクリックすると全内容と元のバイトを確認できます。

推定のため誤判定の可能性があります。 たとえば文字の直後に 0x20(空白)で始まる COMP-3 が続く場合、その空白は文字の末尾として扱われます。 正確に表示するには COPY句を指定してください(指定後は自動判別しません)。

レコード長と COPY句の長さが一致しない場合

状況 lenient(既定) strict
レコードが COPY句より長い 超過分を「(余り)」列にオレンジで表示 分割せずレコード全体を表示
レコードが COPY句より短い 途中で切れた項目はオレンジ、存在しない項目は — 同上
PIC 9 項目に数字以外がある、Shift_JIS としてデコードできない そのまま表示してオレンジ —

設定 rdwViewer.lengthMismatch で切り替えます。長さが合わないときは「⋯」メニューの「解析詳細」で各項目の位置・長さ・解析メモを一覧表示し、COPY句と見比べることができます。

COPY句の対応範囲

  • 固定形式 / 自由形式(行ごとに判定。1〜6 桁目の一連番号、73〜80 桁目の識別領域は自動で除去。桁位置はバイト単位で数えるため、日本語の項目名があってもずれません)
  • レベル番号(77、66・88 は読み飛ばし)、FILLER、PIC X/A/9/S/V/P/Z…、編集項目、PIC N / PIC G(1 文字 2 バイト)
  • 集団項目の USAGE / SIGN は下位項目に引き継ぎ
  • SIGN [LEADING|TRAILING] [SEPARATE]
  • OCCURS n(入れ子は name(1,2) のように展開)
  • REDEFINES(上記のとおり切り替え可能)
  • 01 が複数ある場合は、全長がレコード長と一致するものを自動で使用
  • COMPUTATIONAL-3 などの正式名称、PIC のない COMP-1 / COMP-2 / INDEX

未対応(メモを表示します):OCCURS DEPENDING ON(最大回数で展開)、SYNC による境界合わせ(スラックバイトは考慮しません)。

数値の形式

数値項目はデコードして右寄せで表示します。不正なデータを正常値のように見せないことを重視し、 内容が不正なものは 16 進で、デコードはできても疑わしいもの(桁あふれなど)は値をオレンジで表示します。

USAGE 表示 不正(16 進・オレンジ) 疑わしい(値・オレンジ)
COMP-3 / PACKED-DECIMAL V の位置に小数点。符号 C/A/E/F は正、D/B は負 数字部が 0〜9 以外、符号部が不正 PIC の桁数を超える(偶数桁の先頭の半バイトが 0 でない)、符号なし項目に負号
COMP / COMP-4 / BINARY 2 進整数。バイト順は rdwViewer.binaryEndian — 値が PIC の桁数を超える(TRUNC(STD) では起こらない)
COMP-5 2 進整数(ネイティブ)。バイト順は rdwViewer.comp5Endian — —(2 進の全範囲を使えるため)
COMP-1 / COMP-2 浮動小数点。rdwViewer.floatFormat で IEEE 754 / IBM 16 進浮動小数点 NaN・無限大、長さ不正 —
DISPLAY(ゾーン 10 進) 画面は元の文字のまま。セルをクリックすると数値を表示 空白・小数点など数字以外、符号の位置・文字が不正 —

ゾーン 10 進の符号:SIGN SEPARATE は + / -。符号が数字に含まれる場合は富士通 NetCOBOL の内部表現に従い、符号を持つ桁の上位 4 ビットが 4(@A〜I)なら正、5(P〜Y)なら負です(例:+6789 = 36 37 38 49、-6789 = 36 37 38 59)。他のコンパイラーの形式(p〜y、EBCDIC から変換した {A〜I / }J〜R)は不正として扱います。

プラットフォームごとの目安:

作成環境 binaryEndian comp5Endian floatFormat
メインフレーム(IBM など、EBCDIC から変換) big big ibm
Windows / Linux(x86)の NetCOBOL(既定値) big little ieee

設定

設定 既定値 説明
rdwViewer.encoding shift_jis 既定の文字コード
rdwViewer.lengthMismatch lenient 長さ不一致時の扱い
rdwViewer.binaryEndian big COMP / COMP-4 / BINARY 項目のバイト順(COMP-3 には影響しません)
rdwViewer.comp5Endian little COMP-5 と COMP-1 / COMP-2 のバイト順(big / little / binaryEndian と同じ)
rdwViewer.floatFormat ieee COMP-1 / COMP-2 の形式(ieee / ibm)
rdwViewer.autoDetectPacked true COPY句がない場合に COMP-3 を自動判別
rdwViewer.exportEncoding shift_jis エクスポートの文字コード(shift_jis / utf-8-bom)
rdwViewer.hiddenFieldPattern ^FILLER$ 「FILLER を非表示」で隠す項目名の正規表現(例:FILLER\|COMMA)

開発

npm install     # 初回のみ:TypeScript などの開発用依存関係をインストール
npm test        # コンパイルして単体テストを実行
npm run compile # コンパイルのみ

vsix の作成(自動でコンパイルされます):

npx vsce package

ライセンス

MIT

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft