メインフレームのブロックの単位はなんでしょうか?
開発者が決める一塊のデータのサイズ(バイト数)でしょうか?
たとえば下記のデータがあるとして
AAAAABBBCC
ブロックを5とすれば ブロック1=AAAAA、ブロック2=BBBCC
のように扱われるということですか?
それともなにか基準値があるのでしょうか?
固定長データの一行に相当するイメージですか?
可変長の場合はどうなりますか?
プログラミングやJCLで意識することはありますか?
検討違いかもしれないのですが、イメージがわかないので
教えてください。
よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
ブロックとは、ハードディスク装置と制御装置がデータをやりとりする単位です。
プログラムであつかう論理的な処理(レコード)とは関係ありません。>それともなにか基準値があるのでしょうか?
ファイルの先頭から順番に読んで処理する場合は出来るだけ大きい方が効率が良くなります。ただ、約32KB以上に出来ません。可変長ブロックを使うなら最大値を約32KB(正確な数値は忘れました)にしておけばいいでしょう。固定長を使うなら、ディスクの無駄が出ないような最適な値が装置ごとに決まっています。今のディスクはRAIDで、PC用ディスクの高精度版を使って昔のディスク装置をエミュレートしているのであまり意味がないのですが。
固定長レコードの場合は、ブロックサイズはレコードサイズの整数倍にして、レコードがブロックをまたがないようにするのが普通です。
検索すると、こういうページがありました。http://www.arteceed.net/?p=443 RAIDは普通は3390互換にしてあるはずです。
DBのようにランダムにアクセスする場合は、あまり大きなブロックサイズだと、とある200バイトを読むためにも20KBのブロックを読まないといけなかったりする訳で、やや小さめにしたほうがいいです。あまり小さすぎると、シーケンシャルに読む場合に遅くなりますし、また、ディスクの容量も小さくなります(ブロックごとに制御エリアが必要なので)。
>プログラミングやJCLで意識することはありますか?
上に書いたように物理的な話なので、プログラミングで意識することは無いです。実際にファイル(メインフレームだとデータセット)を作成するときにだけ上記のような考えで意識します。作成はJCLで行うので、作成をするのならJCLで指定が必要です。作成しないなら意識しなくていいです(使うだけの場合でも、JCLでブロックサイズを指定することも出来ますが、作成時に指定した値と違う値を指定すると遅くなったりエラーになったりしますので普通は指定しません)。
COBOLやアセンブラだとプログラムでブロックサイズを指定する機能もありますが、メインフレームの場合は普通はそこはゼロを指定しておきます。
実際に入出力で使われるブロックサイズは以下の順番で決まります。
1.プログラムで指定していればそのサイズ
2.プログラムで指定していない(=ゼロを指定している)場合に、JCLで指定していればそのサイズ
3.プログラムでもJCLでも指定していない既存ファイルの場合は、そのファイル属性として持っているサイズ
4.新規作成ファイルで、プログラムでもJCLでも指定していなければブロックサイズが不明なので実行時エラー
PCで使うディスクのブロックは512バイト固定長で、メインフレームの感覚から見るととても短いです。
この回答への補足
ありがとうございます。
レコードの塊がブロックなのですね。
レコードはDBのレコードと同じイメージでしょうか?
一行としてサイズがきまりますよね。
その塊ということは、ブロックはテーブルを分割しているような
感じでしょうか?
固定長の場合は最適な値が装置ごとに決まっているので、レコードのサイズを整数倍した値の中で、最適な値内でもっとも最適な値に近い数字を設定するということでよいでしょうか?
可変長はたぶん、最大値を一行として扱うってことなんですよね。
あと、メインフレームにもDBがあるのですか?
DB2とかですか?
オープン系のDBでブロックサイズを意識したことがないのですが
メインフレーム特有なのでしょうか?
それとも、カラム数を多くしないとかそういうことでしょうか?
メインフレームは磁気ディスクのデータを使用するイメージがありましたが、メインフレームからDBにアクセスしてデータ操作をおこなうようなこともあるのでしょうか?
でも、ブロックについてわかったことは、データの塊で、磁気ディスクの容量に無駄がでないように、また、大きすぎ、小さすぎもやめて設定すること。
ファイル(データセット)作成時に考慮が必要ですが、プログラムやJCLでは意識しなくていいこと。
ありがとうございました。
できれば今回の質問にも答えていただけるとうれしいです。
よろしくお願い致します。
No.1
- 回答日時:
回答します。
メインフレームでのブロックは、ワード(=オクテット)という単位になります。基本的には、データは固定長で扱います。可変長の場合には、一番長いデータを基準にして空欄を埋める形で行いますが、一応最初に使用するブロック長を指定しておきます。
例えば、COBOLでもそうなのですが、データ長を先に宣言しておいて、その値で全てのレコード及びブロック長を定めます。
JCL(ジョブ制御言語)の場合には、起動するプログラムを制御することが目的のため、余り意識する必要はありません。
では。
この回答への補足
ありがとうございます。
もうちょっと質問させてください。
ひとつのトラックに何種類かのファイル(データセット)を記憶させることってあるますよね?
トラックやシリンダをファイルがまたぐようなことってあるのでしょうか?
よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
5ch のエロ広告を見えないよう...
-
5chのスレの画面で急に左右...
-
ブロックしたユーザー名の人が...
-
LINE相手が勝手にブロックされ...
-
相手のインスタのアカウントを...
-
「ブロックしてほしい」と頼む...
-
自分に原因があり、嫌われ修復...
-
マンション10階から飛び降りた...
-
LINEって、スマホ故障したら 勝...
-
インスタブロックしてた子が ブ...
-
Instagramで私をブロックしてき...
-
インスタの裏垢をブロックされ...
-
ブロックした人がブロックリス...
-
以前の職場の同期だった女の子...
-
女性の方に質問です! 物凄く嫌...
-
元彼からの嫌がらせ?
-
Instagramの同じ端末のブロック...
-
元彼にブロック削除して欲しい...
-
いちいちブロックするねーって...
-
インスタのストーリーに動画あ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
5ch のエロ広告を見えないよう...
-
LINE相手が勝手にブロックされ...
-
相手のインスタのアカウントを...
-
マンション10階から飛び降りた...
-
インスタの裏垢をブロックされ...
-
「ブロックしてほしい」と頼む...
-
ブロックしたユーザー名の人が...
-
5chのスレの画面で急に左右...
-
いちいちブロックするねーって...
-
Instagramの同じ端末のブロック...
-
自分に原因があり、嫌われ修復...
-
o365 Formsの自動保存off もし...
-
LINEって、スマホ故障したら 勝...
-
女性の方に質問です! 物凄く嫌...
-
インスタブロックしてた子が ブ...
-
ブロックして言い逃げしてくる...
-
Instagramで私をブロックしてき...
-
インスタで裏垢から話しかけた...
-
以前の職場の同期だった女の子...
-
元彼にブロック削除して欲しい...
おすすめ情報