コンテンツにスキップ

ラベル (プログラミング)

出典: フリー百科事典『ウィキペディア(Wikipedia)』

プログラミング言語において、ラベル: label)とは特定のを表すために付けられる識別子である。一般に、goto文によるジャンプ先や、switch文による分岐先といった、処理制御の移動先を指定する場合に用いられる。

概要

[編集]

プログラムごとに利用できるラベルや付け方は異なる。

古典的BASICでは、行番号自体がラベルになっている。BASICではGOTO文やGOSUB文がラベルを使うが、GOTO文はサブルーチンを飛び越えた大域ジャンプも可能であるなど、スパゲティプログラムバグの原因となりやすかった[1]

後発のPascalC言語といった構造化言語では、if文for文、サブルーチン呼び出しなどの「構造化」された制御構造によってgoto文をほとんど必要としなくなりラベルも行番号ではなくなったが残されている。

Javaにはgoto文は存在しないが、ラベル付きbreak文が用意されている。

C系言語のswitch文による多分岐では、比較対象となる値を持つcaseラベルと、それ以外に対応するdefaultラベルを文またはブロックに指定することができる[2]

[編集]

Pascalでの例:

procedure GotoExample;
label 666; { ラベルを宣言する }
begin
  while ... do begin
    ...
    if ... then goto 666; { while文からの脱出 }
    ...
  end;
666:
  WriteLn('End of procedure.') { これがラベルのついた文 }
end;

ISO標準Pascalにはreturn文に相当する構文がない。ただしモダンなObject Pascal処理系ではExit手続き[3]Break手続き[4]がサポートされるため、上記のようにラベルとgoto文を使う必要はない。

Cでの例はgoto文およびswitch文を参照のこと。

また、サブルーチンのエントリポイントを明示しない言語では、ラベルが事実上サブルーチンのエントリポイントを示すことがある。

古典的REXXでの例:

/* An Example */
...
IF ... THEN SIGNAL fatalError ELSE CALL whatTodo
...
whatTodo:  /* ラベル */
ARG ...
...
RETURN

fatalError:  /* ラベル */
SAY 'もう駄目。落ちます。'
EXIT

脚注

[編集]

関連項目

[編集]