このコードの目的は、ユーザー入力を取得してレポートを生成することです。ユーザーは月とタイプを選択します。コードは部分的には示されているように機能しますが、別の JSL ファイルに存在する関数 (「インクルード」で呼び出される) に変換しようとするとすぐに失敗します。返された 2 つの変数を取得できず、常に「名前が解決されていません」エラーが表示されます。 Month がリストとして返され、型が文字列 (?) として返されることはわかっています。何が足りないのか、関数によって返される月と型を取得するにはどうすればよいですか。
ありがとう!
Names Default To Here( 1 );
monthLst = {"may", "June", "July"};
nw = New Window( "Select Month",
<<MODAL> ","会計", "財務"}, ), スペーサー ボックス( size( 10, 10 ) ), H リスト ボックス( 整列( 左 ), スペーサー ボックス(), ボタン ボックス( "キャンセル", bbCancelled = 1 ), Button Box( "OK", bbCancelled = 0; selectMo = tb2 << Get Selected; rcb = cb << Get Selected; ) ) ), Spacer Box( size( 50, 10 ) ) ), Spacer Box( size( 25, 30 ) ) ); If( bbCancelled == 1, Stop(), If( selectMo == {}, //エラー modal ::dialogModalNoEdit( "月を選択してください。" ); // モーダル ウィンドウ関数を再帰的に呼び出します SelExpModal( monthLst ); , //値が選択されている場合は結果を返します //Return(selectMo[1] ), ) ); Print(selectMo); Print(rcb);</MODAL>正しく理解できれば…
関数を作成する場合は、関数の実行後に使用する値を返す必要があります(グローバル変数を使用する場合を除く)。
この場合、たとえば次のようにそれらを返すことができます(連想配列の方が良いかもしれません):
return(selectMo, rcb);
そして、そのスクリプトを含むスクリプトでは、それらにアクセスできます。
Names Default To Here(1);
Include("MonthTypeFunc.jsl");
retVal = MonthTypeWindow();
show(retVal[1],retVal[2]);添付のサンプルスクリプト。 同じフォルダーに配置し、Main.jslを実行します。
jthiありがとうございます!連想配列を使用することを考えたことはありません。