シェルスクリプトマガジン

ユニケージ新コードレビュー(Vol.59掲載)

著者:坂東勝也

ユニケージでは、小さな道具の「コマンド」をシェルスクリプトで組み合わせて、さまざまな業務システムを構築しています。本連載では、毎回あるテーマに従ってユニケージによるシェルスクリプトの記述例を分かりやすく紹介します。第6回は、仕入伝票処理システムを例に最新マスターを取得するコードをレビューします。

シェルスクリプトマガジン Vol.59は以下のリンク先でご購入できます。

図11 伝票番号で並べ替え

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 更新された仕入伝票を調べる

130 # 仕入伝票ヘッダーのLV1データの取得
131 # LV1データがあるかチェック
132 ls $lv1d/$today/SIRE_HEAD_* |
133 gyo                         > $tmp-check_data.lv1
134 ERROR_CHECK

図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のデータをマージ

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