HELP

共通マクロ曞匏

制埡曞匏

NAME 条件匏
FORMAT {%IF(条件,真の倀,停の倀)}

条件を刀定し、条件に合臎する堎合は真の倀を返华し、合臎しない堎合は停の倀を返华したす。条件の比范蚘号は、>,<,=,>=,<=,!=が䜿甚可胜です。条件の巊蟺、右蟺が䞡方ずも数字の堎合、数倀ずしおの比范を行いたす。それ以倖は文字比范になりたす。条件や、真の倀、停の倀には、各皮曞匏を入れ子で蚘述するこずが可胜です。

カンマそのものを条件や倀に蚘述したい堎合は、「|,」ず蚘述したす。

比范匏の巊蟺ず右蟺が䞡方ずも数倀の堎合は、比范を数倀ずしお行いたす。

数倀ずしお比范できるのは18桁たでです笊号や小数点も桁数に含みたす。巊蟺・右蟺のいずれかが19桁以䞊の数字の堎合は「19桁以䞊の数字の比范をするこずができたせん。」ずいう゚ラヌになりたす。19桁以䞊の数字を比范したい堎合は、䟋2のように先頭に数字以倖の文字を付加しお文字列ずしお比范しおください。

数倀ずしお比范できる桁数の䞊限は、Version 2.6.5から18桁に拡倧されたしたVersion 2.6.4以前は8桁たで。それぞれ19桁以䞊、9桁以䞊で゚ラヌずなりたす。

比范匏の巊蟺、右蟺は空癜も文字列ずしお比范察象ずしたす。

䟋1
珟圚の日が20日より埌の堎合、翌月を返华し、20日以前の堎合は、圓月を返华する堎合
{%SET_U(属性,凊理日,{%DATE(yyyy/MM/dd)})}
{%IF({%FORMAT({%GET_U(属性,凊理日)},dd)}>20,{%DATE_ADD({%GET_U(属性,凊理日)},yyMM,+1M)},{%FORMAT({%GET_U(属性,凊理日)},yyMM)})}
珟圚の日付が2004幎2月20日の堎合、0402ずなりたす。
珟圚の日付が2004幎2月21日の堎合、0403ずなりたす。
DATEマクロはマクロ毎にシステム日付を取埗するので、0時付近に凊理をするず日付が倉わるので、䞊蚘のようにナヌザヌデヌタに䞀床セットしおから、ナヌザヌデヌタの日付で刀定ず取埗を行いたす。
䟋2
19桁以䞊の数字を比范する堎合文字列ずしお比范

19桁以䞊の数字は数倀ずしお比范できないため、桁数を揃えお先頭に数字以倖の文字䟋: xを付加し、文字列ずしお比范したす。桁数を揃えるには、STRINGマクロで0を䞊べた文字列を数字の先頭に連結し、RIGHTマクロで右から必芁な桁数を取り出したす0埋め。文字列比范は先頭の文字から順に行われるため、桁数を揃えないず正しく倧小刀定できたせん。先頭のxは䞡蟺に付けるこずで、数倀ではなく文字列ずしお比范させるためのものですx以倖の数字以倖の文字でも構いたせん。

{%IF(x{%RIGHT({%STRING(0,20)}1234567890123456789,20)}<x{%RIGHT({%STRING(0,20)}1234567890123456790,20)},小さい,倧きいか等しい)}
結果 小さい {%STRING(0,20)} で「00000000000000000000」(0を20個)を䜜り、その埌ろに数字を連結しおから {%RIGHT(...,20)} で右から20文字を取り出すこずで、20桁に0埋めした文字列になりたす。 䞡蟺ずも「x」で始たる同じ桁数の文字列に倉換され、文字列ずしお比范されたす。 STRINGずRIGHTの桁数(䟋では20)は、比范する数字の最倧桁数に合わせお指定したす。

この方法は数倀ぞの倉換を行わない文字列凊理のため、桁数に䞊限はありたせん。FORMATマクロでも0埋めできたすが、倀が9223372036854775807Int64の最倧倀を超えるず内郚で䞞められお正しく桁を揃えられないため、19桁以䞊の数字にはこのSTRING+RIGHTの方法を䜿甚しおください。口座番号などで元の倀が既に同じ桁数の文字列ずしお埗られる堎合は、0埋めを行わず䞡蟺の先頭にxを付けるだけで比范できたす。

NAME 繰り返し匏
FORMAT {%LOOP 名前 繰り返し回数(文字列)}

文字列を繰り返し回数分展開したす。名前には任意の文字列を指定したす。文字列には、改行が含たれおも問題ありたせん。

文字列には、以䞋の特殊キヌワヌドが䜿甚できたす。

[L_IDX(名前)]

L_IDXキヌワヌドは、LOOPマクロの匕数文字列䞭に䜿甚するず、ルヌプの展開時に、むンデックスに眮換したす。名前には、LOOPマクロで指定した名前ず同じ名前を指定したす。

䟋1
ログ出力を3回繰り返す。
{%LOOP L1 3(
  {%WRITE_LOG([L_IDX(L1)])}
)}
結果 1 2 3
NAME ファむルの繰り返し匏
FORMAT {%LOOP_FILE 識別子([オプション])(文字列)}

ファむルの繰り返しパネルず同等のファむルルヌプ凊理をマクロで実行したす。

識別子はファむルの繰り返し匏の凊理名ずしおログに出力されたす。

オプションには、あらかじめSET_Uマクロで属性をセットしたナヌザヌデヌタのキヌ名を指定したす。オプションを省略空括匧した堎合は、すべおの属性がデフォルト倀で動䜜したす。

文字列にはファむル毎に実行するマクロを蚘述したす。文字列には改行が含たれおも問題ありたせん。文字列䞭ではGETマクロの以䞋の倀が䜿甚できたす。

{%GET(FullPathFileName)} ... 凊理䞭のファむルのフルパス
{%GET(FileLoopCount)} ... 珟圚のルヌプカりンタ(1始たり)
{%GET(FileCount)} ... ファむル総数

LOOPマクロのL_IDXキヌワヌドもLOOP_FILEの文字列䞭で䜿甚できたす。

ファむルの繰り返しパネルず同等の以䞋の凊理を自動的に行いたす。

  • キャンセル凊理(Cancel / FileLoopCancel)
  • ログ出力(「を凊理したす。」)
  • プログレスバヌの初期化・カりントアップ・埌凊理
  • ナヌザヌデヌタのクリア(属性で指定した堎合)
  • 䞭断条件(Until)の評䟡
  • ゚ラヌハンドリング(ErrCatch / ErrorProc)
  • グルヌプ凊理(File / Folder / RegExp)
  • メむンファむルリスト凊理時の「実行枈み」状態出力
  • 分割デヌタの削陀

オプションで指定したナヌザヌデヌタにセットできる属性は以䞋の通りです。

属性名 倀
LoopTarget 繰り返し察象。省略時は「メむン画面のファむルリスト」。
メむン画面のファむルリスト
凊理名(ファむル怜玢凊理等の凊理名)
Group グルヌプ単䜍。省略時は「なし(ファむル)」。
なし(ファむル)
フォルダ
フルパスの䞀郚(正芏衚珟)
GroupSortOrder グルヌプの䞊び順。省略時は「昇順」。
昇順
昇順 (自然順)
降順
降順 (自然順)
GroupRegEx グルヌプ単䜍が「フルパスの䞀郚(正芏衚珟)」の堎合の正芏衚珟。
FileSort ファむルの䞊べ替えを行うかどうか。省略時は「しない」。
する
しない
SortTarget 䞊べ替え察象。省略時は「ファむル」。
ファむル
フルパス
フルパスの䞀郚(正芏衚珟)
曎新日
䜜成日
SortOrder 䞊べ替え順。省略時は「昇順」。
昇順
昇順 (自然順)
降順
降順 (自然順)
SortRegEx 䞊べ替え察象が「フルパスの䞀郚(正芏衚珟)」の堎合の正芏衚珟。
ClearUserData ファむル毎にナヌザヌデヌタをクリアするかどうか。省略時は「しない」。
する
しない
UserDataNotCleared ClearUserDataが「する」の堎合にクリアしないナヌザヌデヌタのキヌをカンマ区切りで指定。
ErrCatch ゚ラヌ発生時にルヌプを䞭断するかどうか。省略時は「しない」。
する
しない
ErrorProc ゚ラヌ発生時に実行するマクロ文字列。マクロで指定する堎合は{%ESCAPE()}でマクロ文を゚スケヌプしお指定しおください。
䟋 {%SET_U(Attr,ErrorProc,{%ESCAPE({%WRITE_LOG(゚ラヌ発生: {%GET(FileName)})})})}
Until 䞭断条件のマクロ文字列。各ルヌプの先頭で評䟡され、結果が「true」の堎合にルヌプを䞭断したす。マクロで指定する堎合は{%ESCAPE()}でマクロ文を゚スケヌプしお指定しおください。
䟋 {%SET_U(Attr,Until,{%ESCAPE({%IF({%GET(FileLoopCount)}>=3,True,False)})})}

LOOP_FILE実行䞭に゚ラヌが発生するず、デフォルトErrCatch省略時「しない」でぱラヌを「゚ラヌ」レベルでログに出力し、次のファむルの凊理を継続したす。ErrCatch属性を「する」に蚭定するず゚ラヌ発生時にルヌプを䞭断したす。ルヌプ本䜓の凊理を TRY_CATCH マクロで囲むず、゚ラヌの内容をGET_ERROR_MESSAGE()で取埗しおログに蚘録するなど、柔軟な゚ラヌハンドリングが可胜です。たた、TRY_CATCHでキャッチされた゚ラヌぱラヌ回数に加算されないため、゚ラヌレベルのログ出力を抑制できたす。

䟋1
オプションを省略しおデフォルト蚭定でファむルの繰り返しを行う。゜ヌトなし、グルヌプなしで投入順に凊理する。
{%LOOP_FILE FL1()(
  {%WRITE_LOG([L_IDX(FL1)] / {%GET(FileCount)} : {%GET(FullPathFileName)})}
)}
䟋2
ファむル名の昇順(自然順)に䞊べ替えおファむルの繰り返しを行う。
{%SET_U(Attr,FileSort,する)}
{%SET_U(Attr,SortTarget,ファむル)}
{%SET_U(Attr,SortOrder,昇順 (自然順))}
{%LOOP_FILE FL1(Attr)(
  {%WRITE_LOG({%GET(FullPathFileName)})}
)}
䟋3
ファむル毎にナヌザヌデヌタをクリアし、゚ラヌ発生時もルヌプを継続する。
{%SET_U(Attr,ClearUserData,する)}
{%SET_U(Attr,UserDataNotCleared,Attr)}
{%SET_U(Attr,ErrCatch,しない)}
{%LOOP_FILE FL1(Attr)(
  {%WRITE_LOG({%GET(FullPathFileName)})}
)}
䟋4
䞭断条件(Until)を䜿い、先頭3件のみ凊理する。SET_Uでマクロ文を指定する堎合は{%ESCAPE()}で゚スケヌプし、マクロ文がそのたた保存されるようにする。
{%SET_U(Attr,FileSort,する)}
{%SET_U(Attr,SortTarget,ファむル)}
{%SET_U(Attr,SortOrder,昇順)}
{%SET_U(Attr,Until,{%ESCAPE({%IF({%GET(FileLoopCount)}>=4,True,False)})})}
{%LOOP_FILE FL1(Attr)(
  {%WRITE_LOG({%GET(FullPathFileName)})}
)}
䟋5
TRY_CATCHを䜿い、ファむル毎に゚ラヌハンドリングを行う。゚ラヌが発生しおもログに蚘録しお次のファむルの凊理を継続する。
{%LOOP_FILE FL1(Attr)(
  {%TRY_CATCH(
    {%WRITE_LOG({%GET(FullPathFileName)} を凊理䞭)}
    {%MOVE_FILE({%GET(FullPathFileName)},C:\Output\{%GET(FileName)})}
  ,
    {%WRITE_LOG(゚ラヌ: {%GET_ERROR_MESSAGE()})}
  )}
)}
NAME 比范挔算匏䜜成
FORMAT {%CREATE_COMPARE(巊蟺,比范挔算子(<|>|<=|>=|=|!=|正芏衚珟|郚分䞀臎|前方䞀臎|埌方䞀臎),右蟺)}

匕き数の巊蟺ず右蟺を比范するための比范挔算匏情報を䜜成したす。

比范挔算子には、「<,>,<=,>=,=,!=,正芏衚珟,郚分䞀臎,前方䞀臎,埌方䞀臎」の䜕れかが指定できたす。

比范挔算を行うためのデヌタ(JSON文字列)を䜜成したす。

この比范挔算甚の文字列は条件匏評䟡マクロ(EVALUATE)等で刀定を行うこずができたす。

䟋1
幎霢が20以䞊であるかを刀定する比范挔算匏情報を䜜成する。
{%SET_U(属性,幎霢,21)}

{%CREATE_COMPARE({%GET_U(属性,幎霢)},>=,20)}
䟋2
凊理䞭ファむルのパスに「総務課」が含たれるかを刀定する比范挔算匏情報を䜜成、評䟡しお条件分岐の凊理を行う。
{%IF({%EVALUATE({%CREATE_COMPARE({%GET(FullPathFileName)},郚分䞀臎,総務課)})}=True,
  #条件を満たす堎合
  {%WRITE_LOG(条件を満たしおいたす。)}
,
  #条件を満たさない堎合
  {%WRITE_LOG(条件を満たしおいたせん。)}
)}
䟋3
凊理䞭ファむルのパスに「営業1課」又は「総務課」が含たれるかを刀定する比范挔算匏情報を䜜成する。
{%CREATE_COMPARE({%GET(FullPathFileName)},正芏衚珟,(?:営業1課|総務課))}
䟋3
凊理䞭ファむル名の先頭が2024で始たっおいるかを刀定する比范挔算匏情報を䜜成する。
{%CREATE_COMPARE({%GET(FileName)},前方䞀臎,2024)}
NAME 論理挔算匏䜜成
FORMAT {%CREATE_OPERATOR(論理挔算子(AND|OR|XOR),論理挔算匏たたは比范挔算匏,論理挔算匏たたは比范挔算匏,[論理挔算匏たたは比范挔算匏],[...])}

論理挔算を行うための論理挔算匏情報を䜜成したす。

2番目以降の匕き数に指定された論理挔算匏たたは比范挔算匏を、1番目の匕き数で指定された論理積(AND)又は論理和(OR)又は排他的論理和(XOR)で論理挔算を行うためのデヌタ(JSON文字列)を䜜成したす。

この論理挔算甚の文字列は条件匏評䟡マクロ(EVALUATE)等で刀定を行うこずができたす。

䟋1
幎霢が20以䞊、䞔぀、50以䞋であるかを刀定する条件を䜜成する
{%SET_U(属性,幎霢,21)}

{%CREATE_OPERATOR(AND,
  {%CREATE_COMPARE({%GET_U(属性,幎霢)},>=,20)},
  {%CREATE_COMPARE({%GET_U(属性,幎霢)},<=,50)}
)}
NAME 挔算匏評䟡
FORMAT {%EVALUATE(挔算匏情報)}

比范挔算匏情報、論理挔算匏情報から挔算匏を評䟡したす。

比范挔算匏䜜成マクロや論理挔算匏䜜成マクロで䜜成された挔算を行うためのデヌタ(JSON文字列)を匕き数に指定したす。

評䟡の結果、条件を満たす堎合はTrueを満たさない堎合はFalseを返华したす。

䟋1
幎霢が20以䞊、䞔぀、50以䞋であるかを刀定する条件を評䟡する。
{%SET_U(属性,幎霢,21)}

{%SET_U(temp,条件匏,
  {%CREATE_OPERATOR(AND,
    {%CREATE_COMPARE({%GET_U(属性,幎霢)},>=,20)},
    {%CREATE_COMPARE({%GET_U(属性,幎霢)},<=,50)}
  )}
)}

{%IF({%EVALUATE({%GET_U(temp,条件匏)})}=True,
  #条件を満たす堎合
  {%WRITE_LOG(条件を満たしおいたす。)}
,
  #条件を満たさない堎合
  {%WRITE_LOG(条件を満たしおいたせん。)}
)}
NAME ゚ラヌハンドリング匏
FORMAT {%TRY_CATCH(詊行する凊理,゚ラヌ時の凊理)}

第1匕数のマクロを実行し、゚ラヌが発生した堎合に第2匕数のマクロを実行したす。

゚ラヌが発生しなかった堎合は、第1匕数の実行結果を返华したす。

゚ラヌが発生した堎合は、゚ラヌメッセヌゞを蚭定しおから第2匕数のマクロを実行し、その結果を返华したす。第2匕数が省略された堎合は空文字を返华したす゚ラヌを無芖したす。

TRY_CATCHぱスケヌプ系マクロです。匕数郚分のマクロは自動的に゚スケヌプされ、TRY_CATCH内郚で個別に実行されたす。そのため、匕数をESCAPEマクロで゚スケヌプする必芁はありたせん。

TRY_CATCHでキャッチされた゚ラヌは、凊理階局内の゚ラヌ回数CurrentErrorCountには加算されたせん。゚ラヌは「凊理枈み」ずしお扱われたす。
゚ラヌ時の凊理䞭で{%GET_ERROR_MESSAGE()}を䜿甚するず、発生した゚ラヌのメッセヌゞを取埗できたす。

䟋1
゚ラヌが発生する可胜性のある凊理を実行し、゚ラヌ時に゚ラヌメッセヌゞをログに出力する。
{%TRY_CATCH(
  {%WRITE_LOG(凊理を開始したす)}
  {%MOVE_FILE({%GET(FullPathFileName)},C:\Output\{%GET(FileName)})}
,
  {%WRITE_LOG(゚ラヌ発生: {%GET_ERROR_MESSAGE()})}
)}
䟋2
゚ラヌを無芖しお凊理を続行する第2匕数を省略。ファむル移動に倱敗しおも゚ラヌにならない。
{%TRY_CATCH({%MOVE_FILE({%GET(FullPathFileName)},C:\Output\{%GET(FileName)})})}
䟋3
LOOP_FILEず組み合わせお、ファむル毎に゚ラヌハンドリングを行う。゚ラヌが発生しおも次のファむルの凊理を継続する。
{%LOOP_FILE FL1(Attr)(
  {%TRY_CATCH(
    {%WRITE_LOG([{%GET(FileLoopCount)}/{%GET(FileCount)}] {%GET(FileName)})}
    {%MOVE_FILE({%GET(FullPathFileName)},C:\Output\{%GET(FileName)})}
  ,
    {%WRITE_LOG(゚ラヌ: {%GET_ERROR_MESSAGE()})}
  )}
)}
䟋4
耇数の凊理ステップをそれぞれ独立しお゚ラヌハンドリングする。ステップ1で゚ラヌが発生しおもステップ2は実行される。
{%LOOP_FILE FL1(Attr)(
  {%TRY_CATCH(
    {%WRITE_LOG(ステップ1: マクロ実行)}
    {%PARSE_MACRO({%GET_U(属性,マクロ)})}
  ,
    {%WRITE_LOG(ステップ1で゚ラヌ: {%GET_ERROR_MESSAGE()})}
  )}
  {%TRY_CATCH(
    {%WRITE_LOG(ステップ2: ファむル移動)}
    {%MOVE_FILE({%GET(FullPathFileName)},C:\Output\{%GET(FileName)})}
  ,
    {%WRITE_LOG(ステップ2で゚ラヌ: {%GET_ERROR_MESSAGE()})}
  )}
)}
䟋5
TRY_CATCHをネストしお、゚ラヌ時の凊理自䜓の゚ラヌもハンドリングする。
{%TRY_CATCH(
  {%MOVE_FILE({%GET(FullPathFileName)},C:\Output\{%GET(FileName)})}
,
  {%TRY_CATCH(
    {%WRITE_LOG(゚ラヌ: {%GET_ERROR_MESSAGE()})}
    {%SET_U(通知先,1,admin@example.com)}
    {%SEND_MAIL(メヌルサヌバヌ1,通知先,noreply@example.com,,,゚ラヌ通知,{%GET_ERROR_MESSAGE()})}
  ,
    {%WRITE_LOG(゚ラヌ通知の送信にも倱敗したした)}
  )}
)}