Sun Studio 12: Fortran ライブラリ・リファレンス

1.4.34.2 longjmp: isetjmp で設定した位置に戻す

サブルーチンは、次のように呼び出します。

call longjmp( env, ival )

env

INTEGER*4

入力 

envisetjmp で初期化された 12 語の整数配列。64 ビット環境では、INTEGER*8 で宣言する必要がある

ival

INTEGER*4

出力 

ival = 0、isetjmp が明示的に呼び出された場合

ival ≠ 0、isetjmplongjmp から呼び出された場合

説明

isetjmplongjmp ルーチンは、プログラムの低レベルルーチンで遭遇するエラーや障害を処置するために使用します。この 2 つは、f95 の組み込み関数です。

これらのルーチンは、最後の手段としてのみ使用してください。これらの取り扱いには、十分注意してください。 また、移植性はありません。バグやその他の詳細については、setjmp(3V) のマニュアルページを参照してください。

isetjmpenv にスタック環境を保存します。またレジスタ環境も保存します。

longjmp は、最後に isetjmp を呼び出して保存した環境を復元し、あたかも isetjmp の呼び出しが値 ival を返したかのように戻り、実行を継続します。

isetjmp から返された整数式 ival は、longjmp が呼び出されなければゼロです。longjmp が呼び出されれば、ゼロ以外になります。

例: isetjmplongjmp を使用したコード部分


       INTEGER*4  env(12)
       common /jmpblk/ env
       j = isetjmp( env )
       if ( j .eq. 0 ) then
               call  sbrtnA
           else
          call error_processor
       end if
       end
       subroutine sbrtnA
       INTEGER*4  env(12)
       common /jmpblk/ env
       call longjmp( env, ival )
       return
       end

制限

参照: setjmp(3V)