FreeBASIC マニュアルのトップに戻る

FreeBASIC Sub

目次→実行時ライブラリー参考→手続きSUB←オリジナル・サイト

SUB 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る

手続きを定義します。

構文:
[Public lPrivate] Sub identifier [CDecl Pascal| StdCall] [Overload] [Alias external_identifier] [( [parameter_list] )]
[Static] [Export]

statements
...
[Return]
...
End Sub

[Public] Sub identifier [CDecl| Pascal| StdCall] [Overload] [Alias external_identifier] [()] [Constructor| Destructor]
[Static]
statements
...
[Return]
...
End Sub

パラメタ:
identifier:
 サブルーチンの名前
external_identifier:
 外部的に目に見える(リンカへの)、引用符で囲まれた名前
parameter_list:
parameter[, parameter[, ...]]
parameter:
[ByRef| ByVal] identifier [As type] [= default_value]
identifier:
 サブルーチンで参照される変数の名前。引数が配列の場合、識別子の後に空の括弧を付ける必要があります。
type:
 変数の型
default_value:
 呼び出しで、何も指定されていない場合の引数の値
  (default_value はリテラル、定数、または共有変数にすることができます)
statements:
 サブルーチンの本体を作る、1つ以上の命令文

記述:
サブルーチンは、プログラムからいつでも呼び出すことができる、コードのブロックです。
コードのブロックは、複数回実行する必要がある場合があります。サブルーチンは、このコード・ブロックを、1つのサブルーチン呼び出しで置き換えることによって、コードを単純化する、非常に重要な手段を提供します。
サブルーチンは、ユーザが、カスタム命令を作って FreeBASIC言語を拡張できるようにする役割も果たします。
FreeBASIC に組み込まれている多くの関数は、デフォルトでリンクされている「ランタイム・ライブラリ」の一部のサブルーチンに過ぎません。

Sub 予約語は、サブルーチンの開始を示し、終了は End Sub で示します。
「名前(identifier)」パラメータは、このサブルーチンが呼び出される名前です。
たとえば、"Sub...End Sub" の宣言では、ユーザーは、"Sub foo" と "End Sub" の間のコードを、命令文として "foo" を使って実行できます。
このコードは、サブルーチンを呼び出すコードとは別に実行されるため、変数名が共有されていなければサブルーチンでは使用できません。
ただし、パラメータを使って値を渡すことができます。

パラメタは、どんな命令文にも渡すことができる引数です。
例えば、ユーザが "Print 4" として命令文を実行すると、値 "4" が関数 "Print" に渡されます。
サブルーチンに渡す必要があるパラメータは、"Sub" 予約語の、1つ以上のパラメータ引数で指定します。
"Sub mysub(foo, bar)...End Sub" でサブルーチンを作ると、"Sub" と "End Sub" の間のコードは、最初に渡された引数を "foo" 、2番目の引数を "bar" として参照できます。
パラメタにデフォルト値を与えておけば、そのパラメタは必須ではなく、任意になります。
配列パラメーターは、識別子の後に空の括弧をつけて指定します。
配列パラメーターは常に ByRef です。配列パラメーターに ByRef キーワードを付ける必要はなく、付けることは許可されていません。
配列の引数を持つサブルーチンを呼び出す際にも、空の括弧を付けなければなりません。

デフォルト方言 -lang fb では、パラメータも "parameter as type" の形式で型を指定しなければなりません。型接尾辞は使えません。

-lang qb-lang fblite 方言では、型が、明示的に名前か型接尾辞のどちらかで指定されていないと、デフォルト型が与えられます。デフォルトの型は、-lang qb 方言では Single-lang fblite 方言では Integer です。

サブルーチンは、構文定義に示されているように、パラメータが "Byref" か "Byval" のいずれかで渡されるように指定することもできます。
パラメータが "Byref" の場合、パラメータ名は、文字どおりサブルーチンに渡された元の変数への参照になります。 その変数に加えられた変更は、サブルーチンの外部に反映されます。
一方、パラメータが "Byval" に渡された場合は、渡された変数の値は新しい変数にコピーされ、変更が加えられても元の変数には反映されません。

Static 指定子は、そのサブセットで定義されているすべてのローカル変数の値を、呼び出しの間で保持する必要があることを示します。
個々のローカル変数を、静的変数として指定するには、Static 予約語を参照してください。

サブルーチン本体の外側でグローバルとして定義された重複シンボルにアクセスするには、プレフィックスとして 1つまたはできれば 2つの点を追加します:.SomeSymbol またはできれば ..SomeSymbolWith..End With ブロック内の場合は ..SomeSymbol のみ)。

Sub は、Function と同様ですが、値を返すことはできません。

サブルーチンを呼び出すとき、サブルーチン名の後の括弧(引数リストがある場合はそれを囲む)はオプションです。

2番目の構文は、それぞれ ConstructorDestructor 予約語を使って、構築子(リソースの確保と初期化を行う) か解体子(リソースの解放を行う) のいずれかを定義します。
構築子サブルーチンは、モジュールの最初のコード行の前に実行され、解体子は、モジュール終了時に実行されます。
構築子と解体子の両方について、パブリック・アクセス指定子と、空のパラメータリストに、注意してください。

64-bit コンパイラのみの警告: ユーザー手続きの識別子名の選択については、識別子規則 を参照してください。(特に「プラットフォームの違い」の段落)

例:
'' Sub を使って、色付きの文字を表示する例

Sub PrintColoredText( ByVal colour As Integer, ByRef text As String )
   Color colour
   Print text
End Sub

   PrintColoredText( 1, "blue" )        '' いくつかの色
   PrintColoredText( 2, "green" )
   PrintColoredText( 4, "red" )
   Print
   
   Dim i As Integer
   For i = 0 To 15                        '' 全てで 16 色
      PrintColoredText( i, ("color " & i) )
   Next i
   Sleep


' これは、デフォルトと、オプションのパラメータを表示する例です。

Sub TestSub(P As String = "デフォルト")
    Print P
End Sub

TestSub "テスト1:"
TestSub
TestSub "テスト2:"
Sleep


方言差:
QBからの違い:
参照:
手続きに戻る
←リンク元に戻る プログラム開発関連に戻る
ページ歴史:2023-08-30 09:23:49
日本語翻訳:WATANABE Makoto、原文著作者:SysOp

ホームページのトップに戻る

表示-非営利-継承