2013年11月 4日 (月)

最大値

最大値を求めるユーザー定義関数です。
最小値の場合は、4行目の不等号の向きを変更します。
※表記は、max ⇒ min とした方が良いですね。

function max(val,num){        # 最大値
        vmax=val[1]
    for(i=1;i<=num;i++){
        if(val[i]>vmax){
            vmax=val[i]
            }
        }    # for
    {return vmax}
    }    # function

| | コメント (0) | トラックバック (0)

2013年11月 2日 (土)

円番号作図その2

今回は、 y座標基準(下⇒上)のソートを追加しています。
座標を配列に組込む際に、x座標と y座標を入替。
数値列のソートは、列の最初の数字だけが対象となります。

Xy_sort

続きを読む "円番号作図その2"

| | コメント (0) | トラックバック (0)

2013年11月 1日 (金)

円番号作図

前回のユーザー定義関数を利用して、作図済の円の内側に、左側から順に
番号を作図する外部変形用スプリクトです。
円データは、"jwc_temp.txt"に作図順に書出されるので、
x,y座標をx座標基準で昇順ソートしています。

Sort

続きを読む "円番号作図"

| | コメント (0) | トラックバック (0)

昇順ソート

AWKには、ソート機能がないので、ユーザー定義関数を利用することになります。
公開されているスプリクトを、外部変形用に一部だけ修正したユーザー定義関数です。

function sort(arry,n){            # 昇順
    for(i=2;i<=n;i++){
        for (j=i;j>1 && arry[j-1]-arry[j]>0;j--){
            temp=arry[j-1]
            arry[j-1]=arry[j]   
            arry[j]=temp
                }    # for j
            }    # for i
        }    # function

※arry[j-1]-arry[j]>0 と arry[j-1]>arry[j]は数式上は等価ですが、
前者にすることで、複数フィールドの数列をソートすることができます。

| | コメント (0) | トラックバック (0)

2010年10月30日 (土)

組込変数 CONVFMT

備忘録です。

AWKでは、数式によって数値を自動的に文字列に変換してくれますが、
デフォルトの有効桁数が、"%.6g"(6桁) なので、
何も設定しないと、1234.567は、1234.57に変換されてしまいます。

組込変数 "CONVFMT"を利用し、CONVFMT="%.15g"と記述すると、
15桁まで有効になります。

| | コメント (0) | トラックバック (0)

2007年8月14日 (火)

エスケープシーケンス

awkでは、文字列定数をダブルクォーテーション「"」で囲って表現しますが、
ダブルクォーテーションを文字列として扱う場合は、
バックスラッシュ「\」で始まるエスケープシーケンス、「\"」で表現します。

文字を扱う外変では、「dq="\""」で初期設定しておくと、わかりやすいです。
また、バックスラッシュは、「"\\"」となります。

※ワンライナーでのハット^の追記 (gawkm115の場合)
 /^ / ⇒ /^^ /
 <    ⇒  ^<
   >    ⇒  ^>
 &&    ⇒  ^&^&
 ||      ⇒  ^|^|

| | コメント (0) | トラックバック (0)

2007年8月 8日 (水)

絶対値

awkスクリプトで絶対値を計算するには、ユーザー定義関数が必要になります。
if文を使ったスプリクトは、

function abs(x){if(x<0){return -x}else{return x}}

となりますが、elseは省略できるので、

function abs(x){if(x<0){return -x}{return x}}

ユーザー定義関数は、どこに記述しても基本的にはOKのようですが、
END文以降に記述するとわかりやすいかもしれません。

| | コメント (0) | トラックバック (0)

2007年7月28日 (土)

ソリッドデータの書出し

四角/円のソリッドデータを書出しするバッチファイルです。
このままでは外変として使用できませんが・・・・・参考です。m(__)m

続きを読む "ソリッドデータの書出し"

| | コメント (4) | トラックバック (0)

2007年7月 1日 (日)

配列複写

2次元配列を使用して、水平/垂直方向に配列複写するスプリクトを検証してみました。

外変用バッチファイルに必要なREM文/AWK実行文は、

REM #h1 範囲選択
REM #1 X方向/Y方向移動量(点を指定)
REM #c X方向/列数を入力
REM #c Y方向/行数を入力 

jgawk -vNX=%1 -vNY=%2 -f array.awk jwc_temp.txt>temp.txt

続きを読む "配列複写"

| | コメント (2) | トラックバック (0)

2007年6月25日 (月)

寸法編集(直径記号)

寸法値の前に直径記号(φ)を追加するスクリプトです。
複数の寸法値を同時に変更可能。編集後、寸法図形は解除されます。

外変用バッチファイルは、REM  #h1 を使用します。

続きを読む "寸法編集(直径記号)"

| | コメント (0) | トラックバック (0)