関数check_filename_pattern マニュアル

(The documentation of function check_filename_pattern)

Last Update: 2024/7/24


◆機能・用途(Purpose)

日時をパターンとして含む文字列をファイル名として用いた場合に 重複が発生しないかをチェックする。
Check that file names determined from a pattern string for date and time do not duplicate.


◆形式(Format)

#include <mystring.h>
inline void check_filename_pattern
(const char ∗string_with_pattern,
 const struct humanTime dateTime_st, const struct humanTime dateTime_en,
 const double dateTime_inc,
 const char ∗variableName_string, const char ∗variableName_increment)


◆引数(Arguments)

string_with_pattern ファイル名を表す文字列。以下をパターンとして含んでいて良い。
A string that represents a file name, which may consist of the following patterns.

  • %YYYY
    年(西暦、4桁)
    Year (A.D., 4-digits)

  • %YY
    年(西暦、下2桁)
    Year (A.D., lowest 2-digits)

  • %MM
    月(2桁)
    Month (2-digits)

  • %DD
    日(2桁)
    Day (2-digits)

  • %hh
    時(2桁)
    Hour (2-digits)

  • %mm
    分(2桁)
    Minute (2-digits)

  • %ss
    秒(2桁)
    Second (2-digits)

  • %STATION
    観測点コード
    Station code

  • %COMPONENT
    成分コード
    Component code

dateTime_st 引数string_with_pattern内の年・月・日・時・分・秒を表すパターン文字列に 代入する日時範囲の先頭。
The beginning date and time to be inserted into pattern strings for the year, month, day, hour, minute, and second in argument string_with_pattern.
dateTime_en 引数string_with_pattern内の年・月・日・時・分・秒を表すパターン文字列に 代入する日時範囲の末尾。
The end date and time to be inserted into pattern strings for the year, month, day, hour, minute, and second in argument string_with_pattern.
dateTime_inc 引数string_with_pattern内の年・月・日・時・分・秒を表すパターン文字列に 代入する日時の増分(s)。
The increment (s) of date and time to be inserted into pattern strings for the year, month, day, hour, minute, and second in argument string_with_pattern.
variableName_string パターン文字列(第1引数)を表す変数名。 エラーメッセージの一部として用いられる。
The name of the variable for the pattern string (1st argument), used in an error message.
variableName_increment 日時の増分(第4引数)を表す変数名。 エラーメッセージの一部として用いられる。
The name of the variable for the increment of date and time (4th argument), used in an error message.


◆動作(Behavour)

引数dateTime_stで指定した日時からdateTime_enで指定した日時まで dateTime_incで指定した間隔で動かした場合に、 引数string_with_patternで指定したパターン文字列に日時を代入して得られる文字列が 重複しないかをチェックする。 重複する場合はプログラムをエラー終了する。
Check that the file names obtained by inserting dates and times into a pattern string specified by argument string_with_pattern do not duplicate, when the date and time is varied from the value specified by argument dateTime_st to dateTime_en at an increment of dateTime_inc.


◆使用例(Example)

const char filenames[]="data/%YY%MM%DD%hh.dat";
struct humanTime dateTime_st={2023,11,1,0,0,0.0};
struct humanTime dateTime_en={2023,12,31,23,59,59.999};
const double dateTime_inc=60.0;

check_filename_pattern
     (filenames,dateTime_st,dateTime_en,dateTime_inc,
      "filenames","dateTime_inc");

この例では第1引数に「年」「月」「日」「時」はあるが「分」は含まれておらず、 他方で時刻の増分は60 s(第4引数)なので、 例えば2023/11/01 00:00:00と2023/11/01 00:01:00はどちらも 第1引数に日時を代入して得られる文字列がdata/23110100.datとなる。 したがって文字列に重複が生じるのでプログラムをエラー終了する。
In this example, the 1st argument consists of the year, month, day, and hour but does not consist of the minute, while the increment of time is 60 s (the 4th argument). Therefore, for example, the strings obtained by inserting 2023/11/01 00:00:00 and 2023/11/01 00:01:00 into the pattern string given by the 1st argument are both data/23110100.dat; the strings duplicate, so the program finishes as an error.