4D v16

変数の概要

ホーム

 
4D v16
変数の概要

変数の概要    


 

 

この節では変数の型を指定する方法、および変数のスコープとライフサイクル、プログラミングの基礎について説明します。

前のビデオでは vNumRecords のような変数を説明なく使用していました。ここでは変数についてもっと詳しく、型に応じてどのように動作するのか、スコープ毎の利用方法について説明します。
4Dの動作を会社運営に例えると、以下のように言い換えることができます:

  • 会社には複数の部署があり、部署毎に特定のタスクを実行します。しばしばそれらは他の部署から独立しています。
  • 各部署は特定の順番で決められた数のタスクを実行するよう定められています。
  • 他の処理を行う必要があるため、あるタスクの実行が一時停止されることがあります。
  • この新しい処理はそれ自身が持つ情報に加え、今まで行っていた処理の情報も使用するかもしれません。

このたとえを実際の例に当てはめてみると:

  • ある会社に製造部、営業部、そして人事部があります。
  • 人事部は各部署の労働時間を集計し、給与の支払い、休日日数のカウント等を行います。
  • 給与計算を行うためには超過勤務手当率やさまざまな手当、税率についても知っていなければなりません。これらの情報は法務部門よりもたらされます。

さてこの話を4Dに適用してみましょう:

  • 4Dは同時に複数のプロセス (印刷、複数テーブルの内容表示、ツールパレット処理、読み込み、Webサーバー、Webサービスリクエストへの応答等) を処理できます。
  • 各プロセスで実行されるメソッドは異なる複数のフェーズを含むことができます。
  • メソッドは自身が実行されているプロセス内で他のメソッドを呼び出すことができます (同じ部署の同僚のように)。または他のプロセス (他部署) の情報を要求することもできます。

必要な情報共有の範囲に応じて、適切な変数を選択することができます:

  • すべてのプロセスから読み書き可能な変数が必要な場合、インタープロセス変数を使用します。4Dでインタープロセス変数を宣言するには、変数名を <> 記号で開始します。
    (例: <>CurrentDate, <>RateTimeTable, 等)
  • メソッドを実行中、そのメソッド内のみで参照する変数が必要な場合、ローカル変数を使用します。4Dでローカル変数を宣言するには、変数名を $ 記号で開始します。
    (例: $Counter, $StampZone, 等)
  • 特別な記号を使わないその他すべての変数はプロセス変数と呼ばれ、同じプロセス内の複数のメソッドから使用されます。
    (例: vNumRecords, 等)

前述の例では、法務部から情報を得るためにプロセス間通信をおこなう必要があります。つまり、インタープロセス変数の出番です。

また、4Dでは同じマシンの異なるプロセス間、さらにはクライアントマシンのプロセスからサーバーマシンのプロセス間で、GET PROCESS VARIABLESET PROCESS VARIABLEを使用したプロセス変数の読み書きもサポートされています。

日常生活に基づいた例を見てみましょう:

  • ローカル変数は学生のノートです。その学生だけが自分のノートを読み書きできます。
  • プロセス変数は黒板です。黒板は同じ教室内のすべての生徒が読み書きできます。
  • インタープロセス変数は学校の入口にある掲示板です。クラスに関わらず学校の生徒全員が見られます。

プロセス間通信は、ある教師が自分のクラスでない黒板 (プロセス変数) に読み書きを行う場合に発生します。

ここまでが変数のスコープについての説明です。それでは、これらがどのように動作するか見てみましょう。

4Dには二種類の変数があります:

  • 通常の変数 (ひとつの値を保持)
  • 配列 (同じ型の複数の値を保持)

通常の変数には、フィールドと同じ型 (テキスト、倍長整数、日付、時間、BLOB等) およびポインター型があります。
配列にも (BLOBと時間型を除き) 同じ型があります。

変数のライフサイクルは以下の通りです:

ステージ通常の変数配列コメント
初期化C_LONGINT(NumDays)ARRAY TEXT(ArrayDates;0)Unicodeモードでは文字型とテキスト型に違いはありません
INSERT IN ARRAY(ArrayDates;1)
ArrayDates{1}:=!06/05/2012!
値の代入NumDays:=25または
APPEND TO ARRAY(ArrayDates;!06/05/2012!)
使用For($i;1;NumDays)$StartDate:=ArrayDates{1}+18変数を読み書き
End for
メモリから消去CLEAR VARIABLE(NumDays)CLEAR VARIABLE(ArrayDates)変数は存在していますが、内容は初期化されています

例題でこのことを確認してみましょう:

変数の名前を決定する際には、一貫性を持たせた命名規則を先に決定し、プロジェクト全体でその規則に従うべきです。

読みやすく、役割を理解しやすい名前を付けるべきです。後で名称を変更したくなった時は、グローバルな名称変更機能を使用できます (デザインリファレンスの "デザインモードの検索と置換" を参照ください)。

他の言語と同様、変数は4Dにとって不可欠です。必要な時には遠慮なく使用してください。

以下の変数は言語上存在しても、フォームには表示できない点に留意してください:

  • 二次元配列
  • BLOB
  • ポインター
  • など

In the previous video, we used a variable to display the number of records found according to the table where the search was performed.
In fact, a variable is a space in memory that we can represent by an object in a form.

So we're going to create a test project form called "test variables" in order to show how variables work.

Let's create a first variable named v1 and that we'll make non-enterable. This variable does not actually exist in memory; there is just an area on screen that represents the contents of the variable if and when it exists.

We're going to:

  • put a button next to it that we can use to declare the variable. We'll give this variable the Longint type
  • then a 2nd button that we can use to assign a value to this variable -- v1:=1500.
  • Next, we can perform a calculation with this variable in memory and display, for instance, an ALERT.

We're going to display an alert that expects an argument of the text type so we're going to convert variable v1 after multiplying it by 12.

Now let's test the form:

  • Variable v1 is not actually defined yet
  • If we declare it, then we declare the type as longint; it takes a default value of 0
  • We can assign a value to it
  • and then we can perform a calculation with this variable.

Here is the first use of a simple variable.

The principle is the same with:

  • a variable of the text type that we'll call v2
  • Since it is a text type variable, we can display its value 12 times.
  • In passing, we concatenate the variable with a space and the combination will be multiplied by 12.
  • "Hello" here will be a variable not of the longint type, but of the text type.

If we test the form:

  • Variable v2 does not exist
  • When it is declared, it contains a blank value.
  • We can assign the value "Hello" to it
  • and use the variable in a calculation.

4D includes many functions for processing strings.

Let's take the case of an array.

  • We'll display it in a pop-up menu that we call pop1
  • and we declare that it will be of the array type
  • so to make a "Pop1" text array, we indicate the number of rows in the array, for instance 3 rows.
  • Now the array exists in memory and can be represented on this object.

To assign values to the array, we're going to indicate that:

  • the 1st row is "hello"
  • the 2nd row is "bye bye"
  • and the 3rd is "see you soon".

As concerns the use of the array, we can do it as shown here for example:

1st array value + a space + 2nd array value + 3rd array value.

Now let's test the result:

  • declaration of array: the array has 3 empty rows
  • assignment of values to array: "hello"  "bye bye"  "see you soon"
  • using the array: "hello space bye bye space see you soon"

So there we have it, a simple and quick overview of how to use variables.

 
 

 
プロパティ 

プロダクト: 4D
テーマ: 変数の概要

 
履歴 

 
ARTICLE USAGE

セルフトレーニング ( 4D v16)