[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[orca-users:07288] 地区別帳票の定義ファイルを生成するスクリプト



古屋@東村山市です。

ORCAを便利に使わせて頂いています。

恩返しする実力もないのですが、日レセの標準帳票のうち、地区別集計を行う
プログラムで使う定義ファイルを生成するスクリプトを書いてみました。
スクリプトの末尾のデータの部分で内容を定義して、引数なしで実行すると内
容が出力されます。出力をリダイレクトしてファイルに落とせば帳票で利用で
きると思います。自己責任でお願いします。
---*---*---*---*-切り取り後 chmod +x してください--*---*---*---*---*--
#!/usr/bin/perl
#
# 地区別コード表定義ファイルを作るスクリプト(仮称 mkareatbl.pl)
#
# 元となるデータは __END__ 以下に作る
# ファイル末尾のデータを読み、標準出力にフォーマットされた
# ファイルを書き出します。データの要素は半角スペースで区切ってください。
# 例)  $ ./mkareatbl.pl > AREA.INI
#   
$MESSAGE = << "MES";
=============================================================================
この出力は以下の帳票で使用します。
25.  A00000C116   外来(地区別)
26.  A00000C117   入院(地区別)
41.  A00000D131   外来・地区別
42.  A00000D132   入院・地区別
55.  A00000K143   診療行為区分別集計表(地区別)
必要に応じてコピー使用してください。
MES

$HEADER = << "HEAD";
サンプル地区1あああ 1820004,1820005,1820005,1820006,1820007,1820008,1820009,1820010,1820011,1820012,1840004,1820005,1820005,180****,1850007,1850008,1890009,1810010,1850011,1860012
サンプル地区2うう   198****,197****,192****,123****,183****,109****,198****,194****,193****,198****,                                                                               
HEAD

$TAIL = << "END";
終了                 この行より下は、無効エリアです。
1.地区名を登録する時は、サンプル地区と、「終了」の行との間に登録してください。
                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2.地区名の最大文字数は20バイト(全角10文字)です
3.地区名が20バイトに満たない場合は、残りを半角スペースで埋めてください。
4.地区名と郵便番号との間には1バイトスペースを空けてください。
5.1つの地区名に対して登録できる郵便番号の数は20までです。
6.登録出来る地区名はサンプルを除き、50地区までです。
7.郵便番号と郵便番号との間は、「,」で区切ってください。
8.1行が181バイトになるようにしてください。181バイトに満たない場合は、必ず残りを半角スペースで埋めてください。
                                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
9.最後の181バイト目は必ず改行コードになるようにしてください。
10.郵便番号に*を使った場合は、その桁は全数字が有効数字となります。
     例 182****  =  1820000 〜 1829999 が対象
11.ここに登録されていない郵便番号は「その他」の地区に分類されます。
END

print $HEADER;
while(<DATA>){
    next if /^$/;
    next if /^\#/;               # 行頭# はコメント
    s/\#.*//;
    chomp;
    ($areaname, @zip)=split(/[ \t]+/);
    $areaname .= " " x (20 - length($areaname));     #半角空白を詰めました。
    foreach (@zip){
	$_ .= '*' x (7 - length($_)) if $_ ne ""; # * で埋める
    }
    $zip_line=join(',',@zip);
    $zip_line .= ' ' x (159 - length($zip_line)); # 半角スペースで埋める。
    printf "%20s %159s\n",$areaname, $zip_line;
}
print $TAIL ;

print $MESSAGE;
# __END__ 以下がデータ領域。改変してください。行頭#でコメントになります。
__END__
秋津町 1890001
青葉町 1890002
本町 1890014
久米川町 1890003 
恩多町 1890011 
萩山町 1890012 
栄町 1890013
諏訪町・野口町 1890021 1890022
美住町・富士見町 1890023 1890024
廻田町・多摩湖町 1890025 1890026
小平市 187* 
東久留米市・清瀬市 203* 204*
西東京市 188* 202*
東大和・武蔵村山市 207* 208*