(付録) 各種ユーティリティプログラム

English
cats jis/jisx cview igrfcal cxiken
cat4 rmcr cviewe utmcal cxenik
cat8 addcr uncview xycal job/job1
euc crlf hdumpe cxtw84  制御ファイル例
sj onlycr prtps cxw84t  opnpin併用時
                                                                       
プログラム名機  能
cats 引数で指定されたファイル(引数が省略された場合には標準入力)を読み取り, そのまま標準エラー出力へ書き出す.
cat4 引数で指定されたファイル(引数が省略された場合には標準入力)を読み取り, 標準出力へ書き出す.
その際,タブ(HT)コードを,4カラム毎タブストップに適合するように, 1〜4 個の空白に置換する.
cat8 引数で指定されたファイル(引数が省略された場合には標準入力)を読み取り, 標準出力へ書き出す.
その際,タブ(HT)コードを,8カラム毎タブストップに適合するように, 1〜8 個の空白に置換する.
euc 引数で指定されたファイル(引数が省略された場合には標準入力)を読み取り, 標準出力へ書き出す.
その際,入力コードを Shift-JISコードもしくは JIS-7コードであるとみなして, EUCコードに変換する.また,入力の LFコードの直前に置かれた CRコードは, 除去される.
sj 引数で指定されたファイル(引数が省略された場合には標準入力)を読み取り, 標準出力へ書き出す.
その際,入力コードを EUCコードもしくは JIS-7コードであるとみなして, Shift-JISコードに変換する.また,入力の CRコードが先行しない LFコード の前には CRコードが付加される.
jis 引数で指定されたファイル(引数が省略された場合には標準入力)を読み取り, 標準出力へ書き出す.
その際,入力コードを Shift-JISコードであるとみなして, JIS-7コードに変換する.
jisx 引数で指定されたファイル(引数が省略された場合には標準入力)を読み取り, 標準出力へ書き出す.
その際,入力コードを EUCコードであるとみなして, JIS-7コードに変換する.
rmcr 引数で指定されたファイル(引数が省略された場合には標準入力)を読み取り, 標準出力へ書き出す.
その際,LFコードの直前に置かれた CRコードを除去する.
addcr 引数で指定されたファイル(引数が省略された場合には標準入力)を読み取り, 標準出力へ書き出す.
その際,入力の CRコードが先行しない LFコードの前に CRコードを付加する.
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 になる.)
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/cview2 の逆変換を行って,標準出力へ書き出す.
hdumpe 引数で指定されたファイル(引数が省略された場合には標準入力)を読み取り, そのEUC表示つき16進ダンプを標準出力へ書き出す.
prtps 指定されたテキストファイルを読み取り, その内容の PostScript 形式の印刷ファイルを作成する.使用法は,
   prtps [-options] [infile [outfile]]
の形で,outfile が省略されると印刷ファイルは標準出力に書き出され, infile が省略されると標準入力をテキストファイルとして読みとる. options には,改行幅,頁番号付け,タブ幅,ボールド字体などの指定が行えるが, 省略時にはデフォールトの設定が有効となる.
igrfcal IGRFの各成分の値を計算する.
最初に,使用するIGRFモデルの種別と計算年を設定し,緯度・経度・高度 を与える毎に,F H Z I D の5成分の値を計算し,結果を標準出力へ書き出す.
utmcal UTM座標値を計算する.
最初に,使用する地球楕円体と中央経線を設定し,緯度・経度を与える毎に, その座標値を計算し,結果を標準出力へ書き出す.
xycal 国土調査法に基づく新平面直角座標値を計算する.
最初に,使用する地球楕円体と座標系番号を設定し,緯度・経度を与える毎に, その座標値を計算し,結果を標準出力へ書き出す.
cxtw84 世界測地系での緯度・経度・高度を計算する.
旧東京測地系での緯度・経度・高度を与える毎に,その世界測地系での緯度・経度 ・高度を計算し,結果を標準出力へ書き出す.
cxw84t 旧東京測地系での緯度・経度・高度を計算する.
世界測地系での緯度・経度・高度を与える毎に,その旧東京測地系での緯度・経度 ・高度を計算し,結果を標準出力へ書き出す.
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で通知される.