LoginSignup
1
2

More than 5 years have passed since last update.

口座振替データファイル(全銀フォーマット)のヘッダーとパディングをバッチで表示

Last updated at Posted at 2016-05-31

給与振込や口座振替を行う際、
銀行によっては、専用の用紙(依頼書)へ手書きで転記して
FAX送信を行うところがあります。

転記用として印刷された内容が
依頼書のフォーマットに沿ってない場合もあり、
銀行ごとにカスタマイズをするのも大変なので
直接、データファイルから内容を拾い出して
画面に表示するバッチを作成しました。

実行すると、このようなメッセージボックスが表示されます。


画像を貼り付けたいけど

よく分からない・・・

特筆すべきは、Windowsの標準機能だけで実現した事。
金額の3桁区切りもバッチ内で実装しています。
バッチの計算機能を使っているので2,147,483,647円までしか計算出来ませんが
合計で20億円も振込する会社は少ないハズだし
そんな会社は立派なシステムが用意されていると思うので
ほぼ使えるバッチかなと。

本体はこちらになります。


依頼書内容表示.bat
@ECHO OFF
SetLocal EnableDelayedExpansion

for /f "tokens=* delims="  %%0 in ('findstr /r /c:"^1" "%~1"') do set                 head=%%0
                                                                  set           種別=!head:~1,2!
                                                                  set 業務種別=不明
if      "%種別%"=="11"                                            set 業務種別=給与振込(民間)
if      "%種別%"=="12"                                            set 業務種別=賞与振込(民間)
if      "%種別%"=="21"                                            set 業務種別=総合振込
if      "%種別%"=="71"                                            set 業務種別=給与振込(公務員)
if      "%種別%"=="72"                                            set 業務種別=賞与振込(公務員)
if      "%種別%"=="91"                                            set 業務種別=口座振替
                                                                  set           文字=!head:~3,1!
if      "%文字%"=="0"                                             set     文字=JIS8
if      "%文字%"=="1"                                             set     文字=EBCDIC
                                                                  set           委託=!head:~4,10!
                                                                  set           会社=!head:~14,40!
                                                                  set    "会社=!会社:(=(!"
                                                                  set    "会社=!会社:)=)!"
                                                                  set           月日=!head:~54,2!!head:~56,2!set           銀行=!head:~58,4!!head:~62,15!
                                                                  set    "銀行=!銀行:^(=(!"
                                                                  set    "銀行=!銀行:^)=)!"
if  not DEFINED 銀行                                              set     銀行=空欄
                                                                  set           支店=!head:~77,3!!head:~80,15!
                                                                  set    "支店=!支店:^(=(!"
                                                                  set    "支店=!支店:^)=)!"
if  not DEFINED 支店                                              set     支店=空欄
                                                                  set           口種=!head:~95,1!
                                                                  set           口番=!head:~96,7!

for /f "tokens=* delims="  %%0 in ('findstr /r /c:"^8" "%~1"') do set 件数金額=%%0
for /f "tokens=* delims=0" %%0 in ("%件数金額:~1,6%")          do call :3ketaCsv "%%0" & set "件数=!csv!"
for /f "tokens=* delims=0" %%0 in ("%件数金額:~7,12%")         do call :3ketaCsv "%%0" & set "金額=!csv!"

(
 ECHO;依頼会社  =  %会社%
 echo;
 ECHO;ファイル名  =  %~nx1
 echo;
 ECHO;業務種別  =  %業務種別%
 echo;
 ECHO;文字種類  =  %文字%
 echo;
 ECHO;委託者C  =  %委託%
 echo;
 ECHO;振替銀行  =  %銀行%
 echo;
 ECHO;取引店舗  =  %支店%
 echo;
 ECHO;口座番号  =  %口種%-%口番%
 echo;
 ECHO;振替月日  =  %月日%
 echo;
 ECHO;合計件数  =  %件数%echo;
 ECHO;合計金額  =  %金額%) | msg console /w /time:0

goto :eof

rem /; --- 件数・金額を3桁区切りに※但し、2,147,483,647円まで ---

:3ketaCsv

    set   Num=%~1
    set   csv=

:3ketaCsv_Loop
set /a         n999=!Num! %% 1000
set            z999=000!n999!
set            z999=!z999:~-3!
set /a         wSEN=!Num!  / 1000
if            !wSEN! gtr 0 (
    set   Num=!wSEN!
    set  "csv=!z999!!csv!"
    goto :3ketaCsv_Loop
)
    set  "csv=!n999!!csv!,"
    set  "csv=!csv:,,=!"

バッチファイルにしてドラッグで表示させてもよし。
call 依頼書内容表示.bat "振込データファイル" で組み込んでもよし。

1
2
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
1
2