ベースSASプログラマーとして、あなたはドリルを知っています:
不均衡な引用符を含むSASコードを送信すると、閉じられていない引用符だけでなく、閉じられていないコメント、マクロ関数定義、および実行の欠落も発生します。または終了します。声明。
これらの不均衡な引用符が気にならないようにするための最善の秘訣は何ですか?
私自身は、通常「SAS unbalanced quote」をグーグルで検索し、次のようなものを送信することになります。
*); */; /*’*/ /*”*/; %mend;
...閉じられていないコメント、引用符、マクロ関数から抜け出します。
エンタープライズ ガイド 3 では、自動生成されたコードの先頭に次の行を配置していました。
*';*";*/;run;
ただし、あらゆる種類の不均衡な問題を実際に「リセット」する唯一の方法は、sas セッションを終了し、コードを再送信する前に不均衡な部分のバランスを取ることです。この種の迅速な (安価な?) ハッキングを使用しても、根本的な原因には対処できません。
ところで、デフォルトの結果の宛先を含むすべてods _all_ close;
の ods の宛先を閉じます。対話型セッションでは、ドキュメントを使用して、または少なくともドキュメントに従って再度開く必要があります。しかし、9.2でテストしたところ、以下に示すように機能しませんでした:ods results;
ods results on;
%put sysvlong=&sysvlong sysscpl=&sysscpl;
/* sysvlong=9.02.01M0P020508 sysscpl=X64_VSPRO */
ods _all_ close;
proc print data=sashelp.class;
run;
/* on log
WARNING: No output destinations active.
*/
ods results on;
proc print data=sashelp.class;
run;
/* on log
WARNING: No output destinations active.
*/
マクロ内の引用符のバランスが取れていない状況があり、唯一の解決策は、SAS のインスタンスを閉じて最初からやり直すことでした。
これは、SAS の許容できない欠陥だと思います。
ただし、#2と#5の両方の方法を使用しましたが、うまくいきました。最初に 2 番、次に 1 番。コードヘッダーを含むすべてのコードの上にそれらを配置し、このプログラムが何をしているかを説明しました。
魅力のように働きました。
いつでも、送信されたステートメントの終了コマンドを発行して、実行しようとしているものを再送信することができます。
ODS _ALL_ CLOSE;
ステートメントを使用するという AFHood の提案を繰り返したかっただけです。それは含める重要なものです。いずれにせよ、ODS を終了するたびに必ず使用してください。
はい、SAS の公式ドキュメントでは、ご自身で提案されたソリューションが推奨されていると思います。