埋め込みコード
ObjectScript では、その内部での以下のタイプのコードの埋め込みをサポートします。
埋め込み HTML
埋め込み HTML 文は、以下の例に示すように、&html< code > 指示文により、他のコードから区別されています。
WRITE "start",!
&html<
<html>
<body>
<b>I'm bold!</b>
<i>I'm italic</i>
<u>I'm underlined</u>
</body>
</html>
>
WRITE "end"
-
&html 指示文はインデントする必要があります。列 1 に記述することはできません。
-
&html 指示文では大文字小文字は区別されません。&HTML、&Html、または &html のいずれも指定できます。
-
&html 指示文は、ラベル、コマンド、/* ... */ コメントとして同じ行に記述できます。すべての ObjectScript コードと同様に、前に出現する引数なしコマンドから少なくとも 2 つの空白で区切る必要があります。
-
&html 指示文の直後には、開始の山括弧が続きます (間にスペース、改行、またはコメントは使用できません)。埋め込み HTML コードは終了の山括弧により終了します。
-
埋め込み HTML 内の HTML コードと終了の山括弧は、インデントする必要はありません。それらは列 1 に記述できますが、コードを明確にするためにインデントの使用が推奨されます。
-
HTML コードには <html> 構造タグ (またはその他の構造タグ) を含める必要はありません。ただし、構造タグは完全にサポートされます。
&html 指示文の本文には、有効な HTML タグを含める必要があります。HTML はインデントと空白を使用して自由にフォーマットできます。HTML コード内の空行は保持されます。スタジオは、&html 指示文を認識し、カラー表示機能を使用して HTML タグをカラー表示します。
マクロ・プリプロセッサは、ObjectScript パーサによって埋め込み HTML コードが処理される前にマクロを拡張します。埋め込み HTML 内には、マクロ処理のためのサポートがありません。例えば、埋め込み HTML 内で ##; 1 行コメントを使用することはできません。ただし、以下の例に示すように、埋め込み HTML コード内でマクロ・プリプロセッサの結果を使用できます。
#Define NumFunc ##Expression(17+4)
WRITE "start",!
&html<
<b>I'm bold!</b>
<i>I'm italic $$$NumFunc</i>
<u>I'm underlined</u>
>
WRITE "end"
&html のマーカ構文
具体的な &html 指示文を、ユーザ定義のマーカ構文を使用して特定できます。この構文は、“&html” と開始の山括弧文字の間に指定された文字または文字列で構成されます。また、埋め込み HTML の最後には、閉じ山括弧の直後にこのマーカと同じ文字を逆の順序で指定する必要があります。以下の例は、7 をマーカ文字として使用します。
WRITE "start",!
&html7<
<b>I'm bold!</b>
<i>I'm italic</i>
<u>I'm underlined</u>
>7
WRITE "end"
空白 (スペース、タブ、または改行) は、&html、marker、および開始の山括弧の間、あるいは閉じ山括弧と reverse-marker の間には使用できません。
marker には、1 文字または一連の文字を指定できます。また、marker には、以下の句読点文字を含めることはできません。
<({ + - / \ | * })>
marker には、空白 (スペース、タブ、または改行) を含めることはできません。その他すべての印刷可能文字や文字の組み合わせ (Unicode 文字など) を含めることができます。marker および reverse-marker では、大文字と小文字が区別されます。
対応する reverse-marker には、marker と同じ文字を逆の順序で指定する必要があります。例えば、以下のようになります。&htmlABC< ...>CBA.marker に [ や ( の文字を含める場合、対応する ] や ) の文字を reverse-marker に含める必要があります。以下は、有効な &html marker および reverse-marker の組み合わせの例です。
&html@@< <b>Be bold!</b> >@@
&html[< <b>Be bold!</b> >]
&htmlMyTest< <b>Be bold!</b> >tseTyM
&htmlA16[a< <b>Be bold!</b> >a]61A
マーカの文字または文字列を選択する際には、次の重要な制限に注意してください。HTML コードでは、リテラル文字列やコメントを含め、コードのどこにも “>reversemarker” を含めることはできません。例えば、マーカが “ABC” だとすると、文字列 “>CBA” は、埋め込み HTML のどこにも指定することはできません。
埋め込み HTML の使用の詳細は、"Zen アプリケーションの開発" を参照してください。
埋め込み JavaScript
埋め込み JavaScript を使用すると、ObjectScript プログラム内に JavaScript コードを含めることができます。以下の埋め込み JavaScript 指示文の構文形式のいずれかを使用できます。
&js< JavaScript code > &jscript< JavaScript code > &javascript< JavaScript code >
マーカ構文の使用を含め、埋め込み JavaScript 指示文の構文および解析は、埋め込み HTML の場合と同じです。詳細は、"埋め込み HTML" を参照してください。
埋め込み JavaScript の使用の詳細は、"Zen アプリケーションの開発" を参照してください。
埋め込み SQL
埋め込み SQL を使用すると、ObjectScript プログラム内に SQL コードを含めることができます。構文は &sql( ) です。例えば、以下のようになります。
&sql( SELECT Name INTO :n FROM Sample.Person )
WRITE "name is: ",n
詳細は、"Caché SQL の使用法" の "埋め込み SQL の使用法" の章を参照してください。