例: 式を使用して現在の文書にアクセスする

  1. 次の計算結果フィールド値の例は、文書内の異なる 2 つのフィールドを使用した算術演算を実行します。これらのフィールドが文書内にあり、数値が入っていて、数値用に初期化されていなければなりません。
    TotalSales - CostOfSales
  2. 次のエージェントの例は、カレント文書内の 2 つのフィールドを使用して算術演算を実行し、結果を 3 番目のフィールドに代入します。参照される 2 つのフィールドが存在していなければなりません。[GrossSales] は新規作成できます。
    FIELD GrossSales := TotalSales - CostOfSales;
    SELECT @All
  3. 次のエージェントの例は、カレント文書内の 2 つのフィールドを使用して算術演算を実行し、3 番目のフィールドに値を代入するか、メールメッセージを送信します。最初のステートメントで [GrossSales] を初期化するため、フィールドの存在を確認する必要はありません。
    FIELD GrossSales := 0;
    gs := TotalSales - CostOfSales;
    @If(gs > 0; @SetField("GrossSales"; gs); @MailSend("Ian Perron"; ""; ""; "No gross sales"; "Gross sales are zero or less for "; Subject));
    SELECT @All
  4. 次の列式の例は、[KeyThought] がある文書についてこのフィールドの値を評価します。文書に [KeyThought] フィールドがない場合は、デフォルトとして、この値を [Topic] の値にします。
    DEFAULT KeyThought := Topic;
    KeyThought
  5. これは、上記の例の別のコーディング方法です。
    @If(@IsAvailable(KeyThought); KeyThought; Topic)
  6. 次のエージェントの例は、[GrossSales] フィールドを削除します。
    @If (@IsUnavailable(GrossSales); @Return(""); "");
    FIELD GrossSales := @DeleteField;
    SELECT @All
  7. 次のエージェントの例は、[GrossSales] フィールドを計算して結果を表示しますが、文書に更新のマークを付けません。その結果、変更内容は保存されません。@DocMark を省略するか "@DocMark([Update])" と指定すると、変更内容が保存されます。
    FIELD GrossSales := TotalSales - CostOfSales;
    @Prompt([Ok]; "Gross sales for " + Subject; @Text(GrossSales));
    @DocMark([NoUpdate]);
    SELECT @All
  8. 次の例は、現在の文書の全フィールドを表示します。
    @Prompt([OkCancelList]; "Fields"; "Fields in document"; ""; @DocFields);
    SELECT @All
  9. 次のウィンドウタイトル式は、新規文書に「New Document」と表示します。既存の文書の場合は、[Subject] フィールドと返答文書数を表示します。
    @If(@IsNewDoc; "New Document"; Subject + " with " + @Text(@Responses) + " response(s)")
  10. 次のビュー選択式は、[Form] フィールドに「Profile」か「Log」が入っている文書以外の全文書を選択します。
    SELECT !@Contains(Form; "Profile" : "Log")
  11. 次のビュー選択式は、大文字か小文字かを問わず、[Subject] フィールドに「acme」が入っている全文書と、そのすべての子文書を選択します。
    SELECT @Contains(@LowerCase(Subject); "acme") | @AllDescendants
  12. 次のフォームアクション式は、文書内の添付ファイルすべての名前と長さを表示します。添付ファイルがない場合は「No attachments」と表示します。
    @If(@Attachments > 0; @Prompt([OkCancelList]; "Attachments"; "Attachment names and lengths"; ""; @AttachmentNames + " (" + @Text(@AttachmentLengths) + " bytes)"); @Prompt([Ok]; "Attachments"; "No attachments"))
  13. 次の onHelp イベントは、現在フォーカスがある表の名前、行、列を返します。
    row := @GetFocusTable([CellRow]);
    @If(row = "0"; @Prompt([Ok]; "*No table*"; "Not in a table");
    @Do(
    column := @GetFocusTable([CellColumn]);
    name0 := @GetFocusTable([TableName]);
    name := @If(name0 = ""; "No name"; name0);
    @Prompt([Ok]; "*" + name + "*";
    "Row " + row + ", column " + column)))