著者:坂東勝也
ユニケージでは、小さな道具の「コマンド」をシェルスクリプトで組み合わせて、さまざまな業務システムを構築しています。本連載では、毎回あるテーマに従ってユニケージによるシェルスクリプトの記述例を分かりやすく紹介します。第6回は、仕入伝票処理システムを例に最新マスターを取得するコードをレビューします。
シェルスクリプトマガジン Vol.59は以下のリンク先でご購入できます。
図11 伝票番号で並べ替え
1 2 3 4 5 6 7 8 9 10 |
145 # L3取得 146 if [ -s $tmp-check_data.1 ] ; then 147 cat $lv3d/SIRE_HEAD/SIRE_HEAD.$ymonth | 148 # 同じ伝票番号の情報を古い順にソート(最も新しいデータが一番下に来るように) 149 msort key=1@NF@NF-1r > $tmp-sire_header_l3 150 ERROR_CHECK 151 else 152 :> $tmp-sire_header_l3 153 ERROR_CHECK 154 fi |
図12 更新された仕入伝票を調べる
1 2 3 4 5 |
130 # 仕入伝票ヘッダーのLV1データの取得 131 # LV1データがあるかチェック 132 ls $lv1d/$today/SIRE_HEAD_* | 133 gyo > $tmp-check_data.lv1 134 ERROR_CHECK |
図13 指定月の仕入伝票の取得
1 2 3 4 5 6 7 8 9 10 11 12 13 |
156 # INPUT(L1)取得 157 if [ -s $tmp-check_data.2 ] ; then 158 cat $lv1d/SIRE_HEAD_* | 159 #dayslash --input yyyy/mm/dd --output yyyymmdd 2 - | 160 # 指定の日付の範囲内のデータを抽出 161 uawk '$2>='$range_from' && $2<='$range_to'' | 162 # 同じ伝票番号の情報を古い順にソート(最も新しいデータが一番下に来るように) 163 msort key=1@NF@NF-1r > $tmp-sire_header_in 164 ERROR_CHECK 165 else 166 :> $tmp-sire-header_in 167 ERROR_CHECK 168 fi |
図14 L1とL3のデータをマージ
1 2 3 4 5 6 7 |
170 # L1とL3をマージ 171 # 同じ伝票番号の中で最も新しいもののみを残す 172 upl key=1 $tmp-sire_header_l3 $tmp-sire_header_in | 173 # 削除フラグの立っている伝票を削除 174 delr NF-1 1 | (略) 186 ERROR_CHECK |