COBOL帳票から対象者だけを抽出し、半角QRで別システムへ入力する実践編
COBOL帳票や固定長テキストをExcelで整形し、対象者だけを抽出した後、職員番号・対象年月・所属コード・金額など半角項目だけをQR化して別システムへ入力する流れを解説します。
この記事の内容
- COBOL帳票整形と半角QR入力をつなぐ補助解説
- この記事で扱う前提
- 全体の流れ
- なぜ半角QRに限定するのか
- QRに入れる項目と入れない項目
- 例:COBOL帳票の元データ
- ステップ1:元データをExcelに貼り付ける
- ステップ2:行の種類を判定する
- ステップ3:所属コードを明細行へ引き継ぐ
- ステップ4:MIDB関数で固定長データを切り出す
- ステップ5:対象者だけを抽出する
- ステップ6:入力先システムの項目順に並べる
- ステップ7:ExcelでQR用文字列を作る
- ステップ8:テンキーEnterが必要な場合
- ステップ9:複数人を1つのQRにまとめる場合
- ステップ10:画面遷移がある場合はSleepを検討する
- ステップ11:文字欠けが起きる場合はキャラクター間ディレイを調整する
- ステップ12:1人1QR方式と複数人まとめQR方式の使い分け
- ステップ13:入力前の確認表を作る
- ステップ14:入力後のチェックを行う
- この方法が向いている業務
- この方法が向いていない業務
- 導入時の注意点
- 閉域環境で使う場合の注意点
- まとめ
💡 COBOL帳票整形と半角QR入力をつなぐ補助解説
この記事では、COBOL帳票や固定長テキストをExcelで整形し、 条件に合う対象者だけを抽出したうえで、 職員番号、対象年月、所属コード、金額、処理区分などの半角データをQRコード化し、 QRリーダーで別システムへ入力する流れを解説します。
ここで重要なのは、QRコードに入れる内容を半角データに限定することです。 氏名、所属名、住所、摘要、備考などの日本語項目は、Excel上で確認するために使います。 実際にQRコードへ入れるのは、入力先システムが受け付ける半角コードや数値だけにします。
つまり、この記事の目的は、 「日本語を含むCOBOL帳票をそのままQR化すること」ではありません。 COBOL帳票から必要な対象者を抽出し、 別システムへ入力するために必要な半角項目だけをQR化することです。
このページは、COBOL帳票を整形するシリーズ本編の補助記事です。固定長データをExcelで表にした後、別システムへ入力する半角コード・数値だけをQR化する流れをまとめています。QRコードに日本語を入れる方法ではなく、氏名や所属名は確認用に残し、入力対象は半角項目に絞る設計です。
この記事で扱う前提
本記事では、次の前提で説明します。
- COBOL帳票や固定長テキストをExcelへ貼り付ける
- Excel関数またはPower Queryでデータを整形する
- 対象者だけを抽出する
- QRコードへ入れる内容は半角英数字、半角記号、数値に限定する
- 氏名や所属名などの日本語は確認用としてExcel上に残す
- QRリーダーはキーボード入力装置として使う
- 入力先システムにはCSV取込やAPI連携がない想定とする
Excelの標準機能やAccessのバーコードコントロールなどを利用する場合、 QRコードに安定して入れやすい内容は、基本的に半角データ中心になります。 そのため、この記事では半角データのみをQR投入対象とします。
全体の流れ
COBOL帳票から別システム入力までの流れは、次のようになります。
- COBOL帳票や固定長テキストをExcelへ貼り付ける
- 不要行を除外する
- 所属コードや処理年月などの親情報を明細行へ引き継ぐ
- MIDB関数などで固定長データを列に分解する
- 条件に合う対象者だけを抽出する
- 入力先システムの項目順に並べる
- 半角項目だけを使ってQR用文字列を作成する
- Tab、Enter、必要に応じて制御記号を含める
- QRコードを生成する
- QRリーダーで別システムへ入力する
- 入力結果を確認する
COBOL帳票処理は、帳票データをExcelで扱える表にする工程です。 QR Automationは、その整形済みデータを別システムへ入力する工程です。 この2つをつなげることで、古い基幹システムと別の業務システムの間に、 ExcelとQRリーダーを使った簡易的なデータ連携ルートを作ることができます。
なぜ半角QRに限定するのか
COBOL帳票には、氏名、所属名、住所、摘要などの日本語が含まれていることがあります。 しかし、この記事ではそれらをQRコードへ入れません。
理由は次の通りです。
- Excel標準機能で作るQRコードは半角データ中心の方が扱いやすい
- QRリーダーや入力先システムによっては日本語入力が安定しないことがある
- 文字化けや入力漏れのリスクを減らせる
- 氏名や住所などの個人情報をQRに含めずに済む
- 入力先システムでは、氏名ではなく職員番号や所属コードで登録することが多い
- 閉域環境や制限環境でも運用ルールを作りやすい
日本語項目は、Excel上で対象者を確認するために使います。 QRコードへ入れるのは、職員番号、対象年月、所属コード、金額、処理区分などの半角データだけにします。
QRに入れる項目と入れない項目
実務では、QRに入れる項目と入れない項目を明確に分けておくことが重要です。
| 区分 | 項目例 | 扱い |
|---|---|---|
| QRに入れる | 職員番号、社員番号、対象年月、所属コード、金額、処理区分、伝票番号 | 半角英数字、半角記号、数値として入力する |
| QRに入れない | 氏名、所属名、住所、摘要、備考、日本語メモ | Excel上の確認用項目として使う |
| 注意が必要 | ハイフン、スラッシュ、カンマ、スペース、小数点、マイナス符号 | 入力先システムが受け付ける形式に合わせる |
QRコードに入れる項目は、入力先システムの画面で実際に入力する項目に合わせます。 Excel上の確認項目と、QRに送る項目を混同しないことが重要です。
例:COBOL帳票の元データ
たとえば、次のようなCOBOL帳票があるとします。
所属: 001 総務課
--------------------------------
職員番号 氏名 金額
000123 山田太郎 000012000
000124 佐藤花子 000000000
000125 高橋三郎 000006500
小計 000018500
所属: 002 経理課
--------------------------------
職員番号 氏名 金額
000201 鈴木一郎 000015000
000202 田中次郎 000000000
小計 000015000
このデータには、日本語の氏名や所属名が含まれています。 しかし、QRコードへ入れるのは、職員番号、対象年月、所属コード、金額、処理区分などの半角データだけです。
氏名や所属名は、対象者が正しいかを確認するためにExcel上に表示します。
ステップ1:元データをExcelに貼り付ける
最初に、COBOL帳票や固定長テキストをExcelの貼付用シートに貼り付けます。
この段階では、無理に列分割しません。 まずは、元データをそのままA列に貼り付けます。
| 列 | 内容 |
|---|---|
| A列 | COBOL帳票の元テキスト1行分 |
元データを直接加工してしまうと、後から原因確認が難しくなります。 そのため、貼付シートには元データをできるだけそのまま残し、 判定列、抽出列、QR用文字列は別列または別シートに作成します。
ステップ2:行の種類を判定する
COBOL帳票には、明細行以外にも多くの行が含まれます。 まずは、それぞれの行が何の行なのかを判定します。
| 行の種類 | 例 | 処理 |
|---|---|---|
| 所属行 | 所属: 001 総務課 | 所属コードを親情報として保持する |
| 区切り線 | -------------------------------- | 除外する |
| 見出し行 | 職員番号 氏名 金額 | 除外する |
| 明細行 | 000123 山田太郎 000012000 | 抽出対象にする |
| 小計行 | 小計 000018500 | 除外する、または検算用に使う |
| 空白行 | 除外する |
ここで大切なのは、いきなり全行をMIDB関数で分解しないことです。 まずは、どの行が明細行なのかを軽い判定で見つけます。
10万行、20万行、30万行の帳票では、 全行に重い文字列分解をかけるとExcelが遅くなります。 そのため、先に明細行だけに絞り、必要な行だけを分解する設計が重要です。
ステップ3:所属コードを明細行へ引き継ぐ
COBOL帳票では、所属コードや所属名が明細行の上にだけ表示されていることがあります。
所属: 001 総務課
000123 山田太郎 000012000
000124 佐藤花子 000000000
000125 高橋三郎 000006500
所属: 002 経理課
000201 鈴木一郎 000015000
000202 田中次郎 000000000
この場合、明細行には所属コードが直接入っていません。 しかし、別システムへ入力するときに所属コードが必要になることがあります。
そのため、Excel側で所属コードを下の明細行へ引き継ぎます。 ここでは、所属名は確認用、所属コードはQR投入用として扱います。
| 確認用所属名 | 所属コード | 職員番号 | 確認用氏名 | 金額 |
|---|---|---|---|---|
| 総務課 | 001 | 000123 | 山田太郎 | 12000 |
| 総務課 | 001 | 000124 | 佐藤花子 | 0 |
| 総務課 | 001 | 000125 | 高橋三郎 | 6500 |
| 経理課 | 002 | 000201 | 鈴木一郎 | 15000 |
| 経理課 | 002 | 000202 | 田中次郎 | 0 |
このように、日本語項目は確認用として残し、 QRに入れる項目は所属コードや職員番号などの半角データに限定します。
ステップ4:MIDB関数で固定長データを切り出す
固定長のCOBOL帳票では、項目の位置がバイト単位で決まっていることがあります。
たとえば、明細行が次のような構造だとします。
000123 山田太郎 000012000
この場合、見た目の空白ではなく、 何バイト目から何バイト分が職員番号、氏名、金額なのかを確認します。
| 項目 | 開始位置 | バイト数 | 用途 |
|---|---|---|---|
| 職員番号 | 1 | 6 | QR投入用 |
| 氏名 | 11 | 16 | Excel上の確認用 |
| 金額 | 27 | 9 | QR投入用 |
Excelでは、全角と半角が混在する固定長データの場合、 MID関数ではなくMIDB関数を使うことで、バイト単位の切り出しができます。
=TRIM(MIDB(A2,1,6))
=TRIM(MIDB(A2,11,16))
=VALUE(TRIM(MIDB(A2,27,9)))
ただし、QR用文字列に使うのは、職員番号や金額などの半角データだけです。 氏名は確認用に表示しますが、QRコードには含めません。
ステップ5:対象者だけを抽出する
帳票を整形した後、すべての明細を別システムへ入力するとは限りません。 実務では、条件に合う対象者だけを入力することが多いです。
たとえば、次のような条件が考えられます。
- 金額が0円より大きい人だけ
- 特定の所属コードだけ
- 処理区分が対象になっている人だけ
- 未処理フラグが立っている人だけ
- 別表に存在する職員番号だけ
- エラーがない行だけ
ここでは、金額が0円より大きい人だけを対象にします。
| 確認用氏名 | 確認用所属名 | 職員番号 | 対象年月 | 所属コード | 金額 | 処理区分 |
|---|---|---|---|---|---|---|
| 山田太郎 | 総務課 | 000123 | 202605 | 001 | 12000 | 01 |
| 高橋三郎 | 総務課 | 000125 | 202605 | 001 | 6500 | 01 |
| 鈴木一郎 | 経理課 | 000201 | 202605 | 002 | 15000 | 01 |
この表では、左側の氏名と所属名は確認用です。 QRコードへ入れるのは、職員番号、対象年月、所属コード、金額、処理区分です。
ステップ6:入力先システムの項目順に並べる
QRリーダーは、基本的にはキーボードと同じように入力します。 そのため、入力先システムの画面でTabキーを押したときに、 どの順番で入力欄が移動するかを確認します。
たとえば、入力先システムの入力順が次のようになっているとします。
- 職員番号
- 対象年月
- 所属コード
- 金額
- 処理区分
- 登録
この場合、QRコードに入れる文字列は、次の順番にします。
職員番号 → Tab → 対象年月 → Tab → 所属コード → Tab → 金額 → Tab → 処理区分 → Enter
文字としては、次のようなイメージです。
000123[Tab]202605[Tab]001[Tab]12000[Tab]01[Enter]
QRリーダーで読み取ると、職員番号、対象年月、所属コード、金額、処理区分が順番に入力され、 最後にEnterが送信されます。
ステップ7:ExcelでQR用文字列を作る
対象者表の列が次のようになっているとします。
| 列 | 項目 | 用途 |
|---|---|---|
| A列 | 確認用氏名 | QRには入れない |
| B列 | 確認用所属名 | QRには入れない |
| C列 | 職員番号 | QRに入れる |
| D列 | 対象年月 | QRに入れる |
| E列 | 所属コード | QRに入れる |
| F列 | 金額 | QRに入れる |
| G列 | 処理区分 | QRに入れる |
QR用文字列は、次のように作成できます。
=C2 & CHAR(9) & D2 & CHAR(9) & E2 & CHAR(9) & F2 & CHAR(9) & G2 & CHAR(13)
CHAR(9)はTab、CHAR(13)はEnterとして使います。 ただし、入力先システムやQRリーダーの設定によっては、 Enterの扱いが異なる場合があります。
通常Enterで登録できる場合はCHAR(13)で足りることがあります。 しかし、入力先システムがテンキーEnterを要求する場合は、 QRリーダー側で特定の半角記号をテンキーEnterに変換する設定が必要になることがあります。
ステップ8:テンキーEnterが必要な場合
一部の業務システムでは、通常EnterとテンキーEnterの扱いが異なる場合があります。
たとえば、通常Enterでは改行や別動作になり、 テンキーEnterでないと登録や確定ができない画面があります。
この場合は、ExcelのCHAR関数だけでは対応できないことがあります。 そこで、QR用文字列の最後に特定の半角記号を入れ、 QRリーダー側の設定でその記号をテンキーEnterに変換します。
たとえば、スラッシュをテンキーEnterに変換する設定にしている場合、 QR用文字列は次のようになります。
000123[Tab]202605[Tab]001[Tab]12000[Tab]01/
Excelの数式例は次の通りです。
=C2 & CHAR(9) & D2 & CHAR(9) & E2 & CHAR(9) & F2 & CHAR(9) & G2 & "/"
この場合、QRコードに入っているスラッシュ自体を入力するのではなく、 QRリーダー側でスラッシュをテンキーEnterに変換して送信します。
どの記号を何のキーに変換するかは、使用するQRリーダーの機種や設定方針に合わせて決めます。 すでに別用途で使っている記号と衝突しないように注意が必要です。
ステップ9:複数人を1つのQRにまとめる場合
最初の導入では、1人1QR方式が安全です。 しかし、入力先システムが安定していて、同じ画面で連続登録できる場合は、 複数人分を1つのQRコードにまとめることも考えられます。
たとえば、次のような入力ストリームです。
000123[Tab]202605[Tab]001[Tab]12000[Tab]01[Enter]
000125[Tab]202605[Tab]001[Tab]6500[Tab]01[Enter]
000201[Tab]202605[Tab]002[Tab]15000[Tab]01[Enter]
ただし、複数人まとめQR方式では、次の点に注意が必要です。
- 1件登録後に、次の入力欄へ正しく戻るか
- 登録後に確認ダイアログが出ないか
- 登録処理中に次の文字列が送られないか
- 途中でエラーが出た場合に後続データが誤入力されないか
- QRコードの文字数上限を超えないか
- 読み取り後に途中停止できる運用になっているか
業務システムの画面遷移が不安定な場合は、複数人まとめQR方式は避け、 1人1QR方式で運用した方が安全です。
ステップ10:画面遷移がある場合はSleepを検討する
入力先システムで登録処理を行った後、 画面が切り替わるまで時間がかかる場合があります。
このとき、次の人のデータがすぐに送信されると、 画面遷移中に入力が始まり、文字欠けや誤入力が起きる可能性があります。
その場合は、QRリーダー側でSleep、つまり待機時間を設定する方法を検討します。
Sleepとキャラクター間ディレイは役割が違います。
| 項目 | 目的 | 使う場面 |
|---|---|---|
| キャラクター間ディレイ | 文字と文字の送信間隔を遅くする | 文字欠け、セルずれ、Web画面の入力遅れ対策 |
| Sleep | 一定時間待つ | 登録後、検索後、印刷後、画面遷移後の待機 |
たとえば、感嘆符を1秒待機に変換する設定にしている場合、 複数人分のQR用文字列は次のようになります。
000123[Tab]202605[Tab]001[Tab]12000[Tab]01[Enter]!
000125[Tab]202605[Tab]001[Tab]6500[Tab]01[Enter]!
000201[Tab]202605[Tab]002[Tab]15000[Tab]01[Enter]
この場合、感嘆符そのものを入力するのではなく、 QRリーダー側の設定で感嘆符を待機動作に変換します。
ただし、Sleepの設定方法や対応可否はQRリーダーの機種によって異なります。 本番前に必ず検証用データで確認します。
ステップ11:文字欠けが起きる場合はキャラクター間ディレイを調整する
QRリーダーは非常に高速に文字を送信します。 そのため、Excelや業務システム側が入力速度に追いつかない場合、 文字欠け、文字飛び、セルずれが発生することがあります。
たとえば、本来は次のように入力されるべきところが、
000123 202605 001 12000 01
次のように欠けることがあります。
00123 20265 001 1200 01
このような場合は、QRリーダーのキャラクター間ディレイを調整します。
まずは短いQRで試し、問題があれば少しずつ遅くします。 入力先がExcelなのか、Webシステムなのか、古い業務システムなのかによって、 必要なディレイは変わります。
ステップ12:1人1QR方式と複数人まとめQR方式の使い分け
実務では、1人1QR方式と複数人まとめQR方式を使い分けます。
| 方式 | 特徴 | 向いている場面 |
|---|---|---|
| 1人1QR方式 | 安全性が高く、途中確認しやすい | 初回導入、本番登録、エラーが出やすい画面 |
| 複数人まとめQR方式 | 読み取り回数を減らせるが、失敗時の影響が大きい | 画面遷移が安定していて、入力項目が固定の業務 |
初めて導入する場合は、1人1QR方式をおすすめします。 画面の動き、入力結果、エラー時の挙動を確認したうえで、 必要に応じて複数人まとめQR方式を検討します。
ステップ13:入力前の確認表を作る
QRコードに日本語を入れない場合でも、Excel上には確認用の情報を残しておく必要があります。
たとえば、QRを読む前に次のような確認表を表示します。
| 入力順 | 確認用氏名 | 確認用所属名 | 職員番号 | 対象年月 | 所属コード | 金額 | 処理区分 | QR作成 |
|---|---|---|---|---|---|---|---|---|
| 1 | 山田太郎 | 総務課 | 000123 | 202605 | 001 | 12000 | 01 | 作成済 |
| 2 | 高橋三郎 | 総務課 | 000125 | 202605 | 001 | 6500 | 01 | 作成済 |
| 3 | 鈴木一郎 | 経理課 | 000201 | 202605 | 002 | 15000 | 01 | 作成済 |
この表では、氏名や所属名を確認しながら、 実際にQRへ入る半角データも同時に確認できます。
QRに日本語を入れないからこそ、 Excel上の確認表が重要になります。
ステップ14:入力後のチェックを行う
QRリーダーで入力した後は、入力結果を必ず確認します。
チェック項目の例は次の通りです。
- 入力件数が対象者件数と一致しているか
- 職員番号が正しく入力されているか
- 対象年月が正しいか
- 所属コードが正しいか
- 金額が正しいか
- 処理区分が正しいか
- 0円の人が誤って入力されていないか
- 対象外の所属が混ざっていないか
- エラーで止まった行がないか
QR Automationは入力を速くできますが、 入力結果の確認を省略してよいわけではありません。 むしろ、入力が速くなる分、事前条件と入力後チェックを明確にしておく必要があります。
この方法が向いている業務
この方法は、次のような業務に向いています。
- COBOL帳票や固定長テキストから対象者を抽出している
- 対象者だけを別システムへ入力している
- 入力先システムにCSV取込機能がない
- 入力項目が職員番号、年月、コード、金額など半角中心である
- 氏名や所属名は確認用であり、入力にはコードを使う
- VBA、RPA、外部ソフトの利用が難しい
- 閉域環境や制限環境でデータ移送が難しい
- 少量から中量の定型入力を減らしたい
この方法が向いていない業務
一方で、次のような場合は別の方法を検討した方がよいです。
- 入力先システムにCSV取込やAPI連携が正式に用意されている
- 日本語の氏名、住所、摘要をそのまま入力する必要がある
- 入力項目が長文中心である
- 大量件数を毎日処理する必要がある
- 入力先システムの画面遷移が不安定である
- 入力中に確認分岐やエラー分岐が頻繁に発生する
- QRリーダー設定の変更が禁止されている
- キーボード入力では監査要件を満たせない
QR Automationは万能ではありません。 ただし、半角コードや数値を中心に入力する業務では、 非常に現実的な選択肢になることがあります。
導入時の注意点
実務で導入する場合は、次の点を必ず確認します。
- QRに含める項目を半角データに限定する
- 氏名や所属名はExcel上の確認用にする
- 本番データではなく、架空データで検証する
- 入力先システムのTab移動順を確認する
- 通常EnterとテンキーEnterの違いを確認する
- 文字欠けがあればキャラクター間ディレイを調整する
- 画面遷移があればSleepを検討する
- QRリーダーの現在設定を保存しておく
- 初期化方法と復旧手順を確認する
- 入力前に対象者件数を確認する
- 入力後に登録件数と金額を確認する
閉域環境で使う場合の注意点
閉域環境では、USBメモリ、メール、クラウド、共有フォルダ、外部ツールが使えないことがあります。 そのような場合でも、紙に印刷したQRコードを使えば、 一方の環境で作成した半角入力データを、別の端末へキーボード入力として渡せる可能性があります。
ただし、QRコードはデータそのものです。 氏名や住所を入れない場合でも、職員番号、金額、処理区分などが含まれていれば、 管理対象の情報になる可能性があります。
閉域環境でQRを使う場合は、次のような運用ルールを決めます。
- QRに含めてよい項目を決める
- QRに氏名、住所、摘要などの日本語個人情報を含めない
- QRの作成者、使用者、使用日を記録する
- 印刷したQRの保管場所を決める
- 使用後の廃棄方法を決める
- 本番前に架空データで検証する
半角データだけであっても、職員番号や金額が含まれる場合は注意が必要です。 QRを単なる紙ではなく、データを含む媒体として扱います。
まとめ
COBOL帳票のExcel整形とQR Automationは、別々の技術に見えます。 しかし、実務では一連の流れとしてつながります。
COBOL帳票処理は、古い基幹システムから出た帳票データを、 Excelで扱える表に変換する工程です。
QR Automationは、その整形済みデータのうち、 別システムへ入力するために必要な半角データだけをQRコード化し、 QRリーダーでキーボード入力として流す工程です。
この2つを組み合わせることで、 COBOL帳票から対象者を抽出し、 職員番号、対象年月、所属コード、金額、処理区分などの半角項目を、 別システムへ入力する流れを作ることができます。
重要なのは、QRコードに何でも入れようとしないことです。 氏名や所属名などの日本語はExcel上で確認し、 QRコードには入力に必要な半角コードや数値だけを入れます。
この設計にすると、文字化けや入力不安定のリスクを減らしながら、 QRリーダーを使った現実的な入力省力化ができます。
CSV取込やAPI連携が使えるなら、それが第一候補です。 しかし、古い業務システムや制限環境では、常に理想的な連携手段が用意されているとは限りません。
そのような場面で、 COBOL帳票をExcelで整形し、 対象者だけを抽出し、 半角QRで別システムへ入力する方法は、 手入力を減らすための強力な選択肢になります。