utils: 各種ユーティリティ・プログラム

English
cats crlf cview qpencode cxtw84 utmcal         job
cat4 onlycr cviewe qpdecode cxw84t xycal job1
cat8     onlylf uncview     b64encode igrfcal cxiken  ジョブ制御ファイル
hdump     hdumpe b64decode         hgeoidcal     cxenik  opnpin()併用
 
プログラム名機  能
cats 引数で指定されたASCIIファイル(引数が省略された場合には標準入力) を読み取り,そのまま標準エラー出力へ書き出す.
cat4 引数で指定されたASCIIファイル(引数が省略された場合には標準入力) を読み取り,標準出力へ書き出す.
その際,タブ(HT)コードを,4カラム毎タブストップに適合するように, 1~4 個の空白に置換する.
cat8 引数で指定されたASCIIファイル(引数が省略された場合には標準入力) を読み取り,標準出力へ書き出す.
その際,タブ(HT)コードを,8カラム毎タブストップに適合するように, 1~8 個の空白に置換する.
crlf 引数で指定されたファイル(引数が省略された場合には標準入力)を読み取り, 標準出力へ書き出す.
その際,入力の CRコードが先行しないLFコード および LFコードが後続しないCRコード をいずれも CR+LF に置換する. (LF CR があると,CR LF CR LF になる.)
onlycr 引数で指定されたファイル(引数が省略された場合には標準入力)を読み取り, 標準出力へ書き出す.
その際,入力の CRコードが先行する LFコード を削除し,それ以外のLFコード を CRコード に置換する. (LF CR があると CR CR になり,LF LF も CR CR になる.)
onlylf 引数で指定されたファイル(引数が省略された場合には標準入力)を読み取り, 標準出力へ書き出す.
その際,入力の LFコードが後続する CRコード を削除し,それ以外のCRコード を LFコード に置換する. (LF CR があると LF LF になり,CR CR も LF LF になる.)
cview
cviewe
引数で指定されたファイル(引数が省略された場合には標準入力)を読み取り, コントロールコード等の可視コードへの変換を行って,標準出力へ書き出す.
ここでの可視コードへの変換とは,16進表現で
   00-1f の範囲のコードを,^ を前置した 40-5f の範囲のコードに,
   80-9e の範囲のコードを,^ を前置した 60-7e の範囲のコードに,
   a1-fe の範囲のコードを,! を前置した 21-7e の範囲のコードに,
   7f/9f/a0/ff を ^?/^#/^$/^/ に,
それぞれ変換する.また,それに伴い,^/!/\ を \^/\!/\\ に変換する.
なお,cview では,すべてを ASCII文字の表現に変換するが,cviewe では, 連続する a1-fe の範囲のコードのペアを可視全角文字として扱い, 無変換のままとする.
uncview 引数で指定されたファイル(引数が省略された場合には標準入力)を読み取り, cview/cviewe の逆変換を行って,標準出力へ書き出す.
hdump
hdumpe
引数で指定されたファイル(引数が省略された場合には標準入力)を読み取り, そのテキスト表示つき16進ダンプを標準出力へ書き出す.
なお,hdump では すべてを ASCII文字表現のテキスト表示に変換するが,hdumpe では 連続する a1-fe の範囲のコードのペアを EUC可視全角文字として テキスト表示する.
qpencode 引数で指定されたファイル(引数が省略された場合には標準入力)を読み取り, そのまま quoted-printable エンコード を行って標準出力へ書き出す.
qpdecode 引数で指定されたファイル(引数が省略された場合には標準入力)を読み取り, そのまま quoted-printable デコード(qpencodeの逆変換) を行って 標準出力へ書き出す.
b64encode 引数で指定されたファイル(引数が省略された場合には標準入力)を読み取り, そのまま Base64エンコード を行って標準出力へ書き出す.
b64decode 引数で指定されたファイル(引数が省略された場合には標準入力)を読み取り, そのまま Base64デコード(b64encodeの逆変換) を行って標準出力へ書き出す.
 
cxtw84 世界測地系での緯度・経度・高度を計算する.
旧東京測地系での緯度・経度・高度を与える毎に,その世界測地系での緯度・経度 ・高度を計算し,結果を標準出力へ書き出す.
cxw84t 旧東京測地系での緯度・経度・高度を計算する.
世界測地系での緯度・経度・高度を与える毎に,その旧東京測地系での緯度・経度 ・高度を計算し,結果を標準出力へ書き出す.
igrfcal IGRFの各成分の値を計算する.
最初に,使用するIGRFモデルの種別と計算年を設定し,緯度・経度・高度 を与える毎に,全磁力F・水平成分H・鉛直成分Z・伏角I・偏角D の5成分の値を計算し,結果を標準出力へ書き出す.
hgeoidcal ジオイド高を計算する.
世界測地系での緯度・経度を与える毎に, ジオイド高を計算し,結果を標準出力へ書き出す.
utmcal UTM座標値を計算する.
最初に,使用する地球楕円体と中央経線を設定し,緯度・経度を与える毎に, その座標値を計算し,結果を標準出力へ書き出す.
xycal 国土調査法に基づく新平面直角座標値を計算する.
最初に,使用する地球楕円体と座標系番号を設定し,緯度・経度を与える毎に, その座標値を計算し,結果を標準出力へ書き出す.
cxiken 指定の図法展開座標系における緯経度から直角座標への計算を行う.
緯度・経度を与える毎に,指定の図法展開での座標値を計算し, 結果を標準出力へ書き出す.
cxenik 指定の図法展開座標系における直角座標から緯経度への計算を行う.
直角座標値を与える毎に,指定の図法展開での緯度・経度を計算し, 結果を標準出力へ書き出す.
 
job 制御ファイルでの指定に従って,一連のジョブステップをバッチ処理的に 連続実行する.
   [使用法] job (制御ファイル名):(タグ名)
制御ファイル(下記参照)の ":(タグ名)" タグのついたステップ以降を連続実行する. ":(タグ名)" 全体を省略すると,制御ファイルの先頭から 各ステップを実行するが,"(タグ名)" のみを省略すると タグ名が ":" のみのものを指定したことになる.
job1 制御ファイルでの指定に従って,1ジョブステップのみを実行する.
   [使用法] job1 (制御ファイル名):(タグ名)
制御ファイル(下記参照)の ":(タグ名)" タグのついたステップを実行する. ":(タグ名)" 全体を省略すると,制御ファイルの先頭から調べて 最初ステップを実行するが,"(タグ名)" のみを省略するとタグ名が ":" のみのものを指定したことになる.

ジョブ制御ファイルの形式(例) ("job.cntl")

    .                   ;# ":(タグ名)" で始まる行でコマンドを指定し,その後に
    .                   ;# 続く 先頭桁が ":" でない一連の行は,入力データ行と
    .                   ;# して実行コマンドの標準入力へパイプされる.
    .                   ;# コマンド行では ";#" 以降はコメントとして無視される.
    .                   ;# 最初のコマンドより前のデータ行は無効.
:st1 cat - > temp.data  ;# 実行ステップ.次行から3行は入力データ.
  Here is data lines.
  2nd line data
  Last data
:step2                  ;# コマンド指定がないと,何もしないステップとみなす.
  abc 123               ;# 何もしないステップでは,データがあっても無効.
:job3   prog            ;# prog なるコマンドを実行.入力データがない.
:   calc                ;# calc なるコマンドを実行.データ4行.
     1
    22
   333
  4444
:end                    ;# (データ終了を示すために置いたが,なくても同じ.)

         コマンド文字列は,一般に 『(prog) [parm]』 (+redirect指定等可) の
        形式であり,ライブラリの opnpin() の機能を利用すると,parm はパラメー
        タ入力ファイル[:タグ名] を表す.そのとき,parm に単一の半角マイナス記
        号 "-" を与えると,パラメータ入力を標準入力から読み取ることを意味し,
        parm を記入しない場合と同等である.(しかし,別のコマンドパラメータを
        も指定する必要がある場合に,それを第2位置パラメータで指定し,openpin
        のパラメータ入力を標準入力読取りに指定するのに利用できる.opnpin は,
        常に第1位置パラメータをパラメータ入力データの指定と解釈する.)

opnpin() の機能を併用する場合の例 ("sample.cntl")

:start                  ;# プログラム指定がないと,何もしないステップとみなす.
  data 123              ;# 何もしないステップでは,データがあっても無効.
##############################
:step1  despike         ;# 実行ステップ.次行からパラメータ入力データを記述.
 /home/nktk/data/shitara            ;# パラメータ入力中は,各行の ";#" 以降の
#                                       部分と "#" で始まる行は,コメントとし
#                                       て無視する.
 shitara.log                        ;# パラメータ入力データ以外の標準入力デー
 shitara.amp                        ;#  タも存在する場合には,両者を混在させて
 shitara.ampd                       ;#  実際に読み取られる順に記述する必要があ
#                                       る.
##############################
:surv     xldpn   parm.data:xldn1   ;# 実行ステップ
#               パラメータ入力データは 別ファイル parm.data から読み取る.
#               標準入力データは "#" で始まる行もコメントと見なさないので,
#               xldpn が読み込むとすれば,ここには4行のデータがあることになる.
##############################
:chkmag1   pchkmag  -   ;# 実行ステップ.
#               "-" は パラメータ入力ファイルを指定せず,後続行に記述される標
#               準入力データから読み取ることを指示する.パラメータ入力中は,
#               各行の ";#" 以降と "#" で始まる行をコメントとして読み飛ばす.
 /home/nktk/data/shitara            ;# working dir.
 shitara.log                        ;# log file (blank for NoLogging)
 shitara.ampd                       ;# input filename
 pchkmagd.ps                        ;# output PS filename
##############################
:data4                  ;# 何もしない = 次行から "chkmag2" ステップのデータ
 /home/nktk/data/shitara      ;# 何もしないステップでは,データがあっても無効.
 shitara.log                  ;#  それを逆用すれば,別ステップのパラメータデー
 shitara.ampd                 ;#  タ(ファイル入力)を 同一ファイル内に記述するこ
 pchkmagd.ps                  ;#  とが可能になる.
##############################
:chkmag2   pchkmag  sample.cntl:data4     ;# 実行ステップ
#                 パラメータ入力以外の標準入力データがあればここに記入できる.
#                 パラメータ入力ファイル sample.cntl はこのファイル自体であり,
#                 ":data4" タグ行に続くデータ行からパラメータを読み取る.
##############################
:end                    ;# 何もしない.この行は無くても同じ.

パラメータファイルの例 ("parm.data")

:chkmag1                      ;# parm.data:xldn1 に対しては無効なデータ
#                                 パラメータデータ中では,各行の ";#" 以降と
#                                 "#" で始まる行は,コメントとして無視される.
#                                 タグ行にコマンド文字列があっても意味はない.
 /home/nktk/data/shitara            ;# working dir.
 shitara.log                        ;# log file (blank for NoLogging)
 shitara.ampd                       ;# input filename
 pchkmagd.ps                        ;# output PS filename
##############################
:xldn1                        ;# 上の surv ステップのパラメータデータ
 /home/nktk/data/shitara            ;# working dir.
 shitara.log                        ;# log file
 lines.inf                          ;# lines.inf filename
 shitara.amp                        ;# output filename
 2003.1                             ;# Year of survey
 9                                  ;# IGRF generation
##############################
:end

バッチジョブとして動作させる方法

上記のようなジョブ制御ファイル job.cntl(必要ならパラメータファイルも)
を作成した上で,
   % job job.cntl
のコマンドを与えると,foreground でジョブが実行される.
バックグラウンドで実行したいときは,at コマンドを用いて,
   % echo job job.cntl | at now
とする.バックグラウンドジョブの終了は,E-mailで通知される.