Hitachi

JP1 Version 10 JP1/Advanced Shell


6.2.11 関数を終了する(returnコマンド)

関数を終了するコマンドは,returnコマンドです。returnコマンドを実行した場合,関数内の現在位置以降の行は実行されないで,関数の呼び出し元に戻ります。returnコマンドの短縮形は"ret"です。returnコマンドの形式を次に示します。

return

returnコマンドを実行した場合の動作を次に示します。

returnコマンドの後ろに引数を指定しない場合

関数内で停止しているときは,現在の関数を終了するかどうかの確認メッセージが出力されます。現在の関数を終了し,関数の呼び出し元に戻る場合は,yまたはYを入力してください。呼び出し元のフレーム情報を表示し,次に実行予定の行番号とそのソースファイル行を表示します。呼び出し元のフレーム情報の表示形式を次に示します。

呼び出し元のフレーム情報
Num  Function  File:Line
フレーム番号  関数名  ファイル名:行番号
  • フレーム番号:フレームの番号です。フレーム番号には常に0を表示します。

  • 関数名:フレーム情報に対応する関数名に,関数を呼び出しているジョブ定義スクリプトファイル名を付けた名称です。関数が呼び出されていない状態の場合,関数名を<main>として表示します。63バイトまで表示できます。

  • ファイル名:現在停止中のファイル名を示します。

  • 行番号:現在停止中の行番号を示します。

    ジョブ定義スクリプト終端で停止している場合は<EOF>と表示します。trapコマンドのactionを実行中に停止している場合は<Trap action>と表示します。

どの関数にも入っていない状態で停止しているときおよびジョブ定義スクリプトが実行されていないときは,エラーメッセージが出力されます。

returnコマンドの後ろに引数を指定した場合

コマンドを実行すると,エラーとなります。

注意事項

関数内の後続の行で,ブレークポイント,ウォッチポイントおよびシグナルによる停止判定を満たしても,ジョブ定義スクリプトの実行を停止しないで関数を終了します。

使用例

2行目の「echo」の実行前で停止しているときにreturnコマンドを実行すると,9行目の「echo」の実行前で停止し,フレーム情報を表示します。3行目の「num=10」はスキップされます。

1: funcA(){
2:   echo "funcA"
3:   num=10
4: }
5:
6: val=1
7: num=2
8: funcA
9: echo $num
2:   echo "funcA"
Current: echo
(adshdb) return
KNAX7037-I Exit the current function? (y or n)
y
KNAX7068-I Commands are skipped until end of function.
…
Num  Function  File:Line
0    <main>    test.ash:9
KNAX7032-I Stop in the script "test.ash".
9: echo $num
Current: echo
(adshdb)