FF019

(サンプルスクリプト)連番ファイル名のゼロパディング

 ◆ 概要 ◆
非定常解析結果をあつかう FVX で、出力ファイルを連番で出力することがあります。2桁以上のファイル名においては output001.dat のように、数字桁を増やして命名した方が、ファイル検索上、あるいは、その後のスクリプト処理上、便利になります。以下に解説いたします。
 ◆ 詳細 ◆

FAQ の 別項目 「FF018 非定常データの pointprobe 値を Annotation 更新に反映させる」という事例を扱っていますが、こちらを例に解説します。この FVX 事例では、TransientAnnotation.fvx というスクリプトファイルを用いて、 非定常計算の各ステップから出力ファイルを生成しております。その際に 173 行目から、177 行目付近の記述を以下に示します。以下の "i" という変数は計算ステップ変数を表しています。

    if i < 10 then -- 1桁ファイル番号連番の処理
        fv_script("PRINT GRAPHICS JPEG ./figure/draw0"..i..".jpg")
    else -- 2桁ファイル番号連番の処理(通常)
        fv_script("PRINT GRAPHICS JPEG ./figure/draw"..i..".jpg")
    end

ご覧のように、1桁のファイル名に対して、頭に "0" の数字(赤字で表記)を差し込んでいるのがわかると思います。こちらは、2桁までの対応ができますが、3桁以上になると、 if 文を増やす必要がでてきます。

この場合、以下のような記述でもっと、簡略表記ができます。

    strPrintFigure=format("PRINT GRAPHICS JPEG ./figure/draw%3.3d.jpg", i)
    fv_script(strPrintFigure)

上記では、 fv_script 文の中に入れる strPrintFigure という文字列を一括定義した上で fv_script を実行しています。 文字列定義に際して、 format 文は、 fortran や C の書式指定のような役割を行います。 "%3.3d" の部分に i で定義された計算ステップ変数が入りますので、 i=1 であれば、 draw001.jpg というファイル名、 i=20 であれば、 draw020.jpg というファイル名が作られます。

----------

《補足》

FVX 内には execute 文が用意されていますので、 Windows であれば、 DOS コマンド、 Linux/Unix であれば、 shell スクリプトが実行できます。 Linux などで、ゼロパディングを行う場合は、

    seq -w 10 [Enter]

    printf "abc=%3.3d" i [Enter]

などのコマンドも使えますので、試してみてください。

 

 

   

 

 

 

※FVXの詳細については、英文のReference Manual もしくは、日本語デべロッパーズマニュアルをご覧下さい。

   
・この資料の内容は予告なしに変更されることがあります。
・いかなる場合でも、この資料の内容およびその運用の結果に関しては一切の責任を負いません。
・この資料の一部または全部を無断で使用、作成することはできません。
All rights reserved by Vinas Co., Ltd.
sales@vinas.com