回答箱 No.72-3: TPSでバインダーを確保する方法は?

  ◆ 質問箱 No.72  質問者:  元山 よし子  1998年03月 194号 P.19
     ◆ 質問箱 目次へ
No.72-3     TPSでバインダーを確保する方法は? 回答者
  入川 精二
1998年04月
195号 P.24
  ◆ No.72(1998年3月号)の回答-3
  • 1. スーパーPIPSでは1つのPDATAに作れるバインダー数は20〜60と限られていました。The PIPSではこれが32,000になっています。 従って空きバインダーが足りなければ'IN-E'で使えるバインダーを増やせばよいのです。ただし、こうしてどんどん増やして行くと、いずれバインダー一覧を見ても何がなんだか訳が分からなくなります。やっぱりバインダーを作るのにも『節度』が必要ですね。
  • 2. 少し真面目に考えましょう。プログラムを走らせてバインダーを幾つ使うかは予め分かりますから、それだけの「空き」があるかどうかをチェックする方法を考えましょう。幸いThe PIPSには'FREE関数’というのがあります。
    『装置またはキャビネットの、指定された種類の残量を求めます』という説明がついています。次のように使うとキャビネット内の残りバインダー数を求めることが出来ます。
                   LET Z1=FREE(4,"装置名/キャビネット名");
    ついでながら、この関数の他の機能も表示しておきます。
               書式: FREE(X,Y)    ・・・・・・   実数関数(Z変数を使う)
               文字列'Y'の機能番号'X'による残量を格納する。
               装置名やキャビネット名'Y'は ''(コーテーション)で囲む。
    機能番号X関数値が持つ内容
    1指定装置内に作成可能な頁数を格納します
    2指定装置内の残り容量(バイト数)を格納します
    3指定キャビネット内の残り頁数を格納します
    4指定キャビネット内の残りバインダー数を格納します
    5指定キャビネット内の残りオート数を格納します
    6指定キャビネット内の残りメニュー数を格納します

  • 3. 途中経過のバインダーは全て予め削除しておく。
    このためにはバインダーの名前を‘WORK2’といった単純な名前にしておきます。 プログラム毎に使うWORKを WORK1〜WORK10 とか WORK31〜WORK38 とか決めておきます。
        プログラムの最初に次のような記述をしておきます。
                 FOR X1=31 TO 38;
                    IF NAME(3,"WORK"+NUM$(X1))=0 THEN CONTINUE;
                    BIND;D;WORK%X1;Y;
                 NEXT;
      こうしておけばバインダーの数がやたら増えることを防げます。どうしても残しておきたいデータがあれば、別途'CPP'で保存するようにします。

  • 4. 前項のような記述も面倒なときは、処理の後の保存するバインダー名を指定するときに'WORK5/D'のようにすれば、必ず既存データを削除してから保存してくれます(バインダーが存在しないときは新規に作ります)。                                                                                                                                          □
戻る