# マニュアルページ longjmp.3f

## 名前

         longjmp, isetjmp - longjmp は isetjmp で設定された場所に戻る

## 形式

         使用法:  isetjmp:

             integer*4  env(12)
             common /jmpblk/ env
             j = isetjmp( env )

         使用法:  longjmp:

             integer*4  env(12)
             common /jmpblk/ env
             call longjmp(env,ival)

         64 ビット環境でコンパイルする場合、これらのルーチンで使用 さ
         れる 12 要素配列 env が INTEGER*8 に宣言されている必要があり
         ます。

## 機能説明

         isetjmp と longjmp ルーチンは、プログラムの低レベルルーチ ン
         で発生するエラーや割り込みを処理するために使用します。これら
         のルーチンは最後の手段としてのみ使用するようにしてください。
         こ れ らのルーチンを使用するには、ある程度の経験が必要ですの
         で、取り扱いには十分注意してください。また、これらのルーチン
         は 移 植性がありません。使用上の留意点、その他の詳細について
         は、 setjmp(3c) のマニュアルページを参照してください。

         isetjmp は、 env にスタック環境を保存します。レジスタ環境 も
         保存されます。

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

         isetjmp から戻される整数式 ival は、 longjmp が呼び出され て
         い ない場合はゼロ、 longjmp が呼び出されている場合にはゼロ以
         外の値となります。

         例: isetjmp と longjmp を使用しているコード
              integer*4  env(12)
              common /jmpblk/ env
              j = isetjmp( env )                   !      <-- isetjmp
              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 )                 !      <-- longjmp
              return
              end

## 注意事項

         longjmp() を呼び出す前に、 isetjmp を呼び出さなければなり ま
         せん。

         isetjmp の引数は 12 個の整数からなる配列でなければなり ま せ
         ん。

         isetjmp を呼び出すルーチンから longjmp を呼び出す ルー チ ン
         へ、 共通ブロックを通じてあるいは引数として env 変数を渡さな
         ければなりません。

         longjmp() は、スタックを空にしようとします。
         longjmp() は、 isetjmp() よりも低いレベルのルーチンから呼 び
         出さなければなりません。

         手続き名を引数として、 isetjmp を引き渡そうとしても正しく 機
         能しません。

## 使用上の留意事項

         setjmp(3c) を参照してください。

## ファイル

         libC.a

## 関連事項

         setjmp(3C)