1

これが背景です。長くなってすみません:
私は 3 つの異なるプロジェクトで SAS プログラミングを行っています。各プロジェクトには、独自のメイン プロジェクト フォルダーがあります。各メイン プロジェクト フォルダーには、formats フォルダー (フォーマット カタログを含む) が含まれており、その他のいくつかのフォルダーが含まれており、それぞれにプログラムとデータセットが含まれています。私はほとんどの作業をバッチ モードで行っているため、通常、SAS は開いていません。ただし、SAS でデータセットを開き、特定のものを調べたい場合があります。これを行うと、フォーマット カタログがデータセットと同じフォルダーにあることはないため、SAS は適切なフォーマット カタログを探す場所を認識しません。そのため、現在、オプションを指定する autoexec.sas ファイルを使用しnofmterrて、データセットが開くようにしています。

ただし、適切なフォーマットでデータセットを開くことができるようにしたいと思っています。fmtsearchどのプロジェクトに取り組んでいるかを尋ね、それに応じてオプションを設定するダイアログ ウィンドウを使用する別の autoexec プログラムを作成しました。最初に SAS を開き、次にデータセットを開く場合、これはうまく機能します。しかし、SAS がまだ稼働していない場合に、データセットをダブルクリックして開こうとすると、次のようになります。autoexec ファイルの実行が開始され、autoexec ファイルの実行が完了する前に、SAS がデータセットを開こうとします。したがって、nofmterr設定した場合、データセットはフォーマットなしで開きます。設定していない場合nofmterr、データセットはまったく開きません。

では、私の質問は次のとおりです。データセットを開こうとする前に、autoexec ファイルの実行が終了するまで SAS を待機させる方法はありますか? または、問題を回避する別の方法はありますか? (3 つの形式ファイルすべてをオプションに追加したくありませんfmtsearch。プロジェクトが異なれば、同じ名前の形式が異なる可能性があるためです。)

4

1 に答える 1

1

データセットは事前にコードを実行せずに開いているため、これは静かに困難になります。データセットをコードのパラメーターとして開くことは可能ですか? 私は次のようなものを想定しています:

commandline:/sas ./opends.sas -sysparm "/this/is/the/dataset/location_and_name"

コード「opends.sas」には、プロジェクトに関連するすべてのフォーマット情報が含まれます。

上記のすべてが事前定義されたスクリプト (OS に応じて bash またはバッチ) を記述し、データセットをパラメーターとしてスクリプトを呼び出すこともできます。

これが面倒に思えることはわかっていますが、あなたの説明に基づいて思いつくことができる最初の解決策です。

-- 20090218 を追加

opends.sas スクリプトは sysparm 変数を受け取る必要があり、オペレーティング システムに応じて、データセットを出力するか、コマンドを発行してデータセットを開く必要があります。

于 2009-02-12T16:42:30.723 に答える