Accessデータベースから定期的にデータをプルするJSLスクリプトがあります。
アクセスデータベースには、dd-Mon-YYYYを含む日付列「AvailableDate」が含まれています(例: 2018年4月12日)形式。 私がやろうとしているのは、JMPに新しい列「TargetDate」を作成して、各行の「AvailableDate」の日付にx日を追加することです。
例えば:下の画像では、目標日は利用可能日+ 4日と同じです。 利用可能日に基づいて目標日を自動的に計算しようとしています。 日数は「時間(月)」列に基づいています。

これは私がこれまでに試したことですが、明らかに機能しません。 「AvailableDate」列を数値データ型に変換してから、日数を追加して文字に戻す必要があると思いますか?
dt << New Column("Target Date", "Character", "Nominal");
dt << For Each Row(
IF (:"Time (Months)" <= 3, :"Target Date" = :"Available Date" + 4 ),
IF (:"Time (Months)" > 3, :"Target Date" = :"Available Date" + 7 )
);添付の表では、利用可能な日付列に4日を追加して、目標日を取得しています。手順:使用可能な日付のデータ型を、適切な日付形式で数値/連続に変更します。次に、日付インクリメント機能を使用して、使用可能な日付に4日を追加し、最後に、結果のターゲット日付列のフォーマットを、使用可能な日付列で使用したものと一致するように変更します。
1つの追加の注意-あなたの例では、1週間(4日ではなく7日)を追加したように見えます。
目標日付の値を文字列として保持する本当の理由がない限り、JMP日付列に変換することをお勧めします。
Names Default To Here( 1 );
dt = Current Data Table();
dt << new column( "Target Date", format( "ddmonyyyy") );
for each row(
if( :"Time (Months)"n <= 3,
:Target Date =
Informat( :Available Date, "ddmonyyyy" ) + In Days( 4 ),
:Target Date =
Informat( :Available Date, "ddmonyyyy" ) + In Days( 7 )
)
);

以下の変更により、上記の出力を文字に変換するのは非常に簡単です。
Names Default To Here( 1 );
dt = Current Data Table();
dt << new column( "Target Date", character );
for each row(
if( :"Time (Months)"n <= 3,
:Target Date = format(
Informat( :Available Date, "ddmonyyyy" ) + In Days( 4 ),
"ddmonyyyy"
),
:Target Date = format(
Informat( :Available Date, "ddmonyyyy" ) + In Days( 7 ),
"ddmonyyyy"
)
)
);

出力フォーマットが入力データフォーマットとまったく同じである必要がある場合、以下はそれを達成します
Names Default To Here( 1 );
dt = Current Data Table();
dt << new column( "Target Date", character );
monthList = {"JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP",
"OCT", "NOV", "DEC"};
for each row(
if( :"Time (Months)"n <= 3,
temp = Informat( :Available Date, "ddmonyyyy" ) + In Days( 4 ),
temp = Informat( :Available Date, "ddmonyyyy" ) + In Days( 7 )
);
:Target Date = Substr( "0", Length( Char( Day( temp ) ) ) ) ||
Char( Day( temp ) ) || "-" || monthList[Month( temp )] || "-" ||
Char( Year( temp ) );
);

For Each Rowではなく数式を使用する場合、これは上記の出力の数式用になります
monthList = {"JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"};
If( :"Time (Months)"n <= 3,
temp = Informat( :Available Date, "ddmonyyyy" ) + In Days( 4 ),
temp = Informat( :Available Date, "ddmonyyyy" ) + In Days( 7 )
);
Substr( "0", Length( Char( Day( temp ) ) ) ) || Char( Day( temp ) ) || "-" || monthList[Month( temp )] || "-" ||
Char( Year( temp ) );