• ベストアンサー

メインフレームのブロックについて

メインフレームのブロックの単位はなんでしょうか? 開発者が決める一塊のデータのサイズ(バイト数)でしょうか? たとえば下記のデータがあるとして AAAAABBBCC ブロックを5とすれば ブロック1=AAAAA、ブロック2=BBBCC のように扱われるということですか? それともなにか基準値があるのでしょうか? 固定長データの一行に相当するイメージですか? 可変長の場合はどうなりますか? プログラミングやJCLで意識することはありますか? 検討違いかもしれないのですが、イメージがわかないので 教えてください。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4856/10272)
回答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バイト固定長で、メインフレームの感覚から見るととても短いです。

goouser20
質問者

補足

ありがとうございます。 レコードの塊がブロックなのですね。 レコードはDBのレコードと同じイメージでしょうか? 一行としてサイズがきまりますよね。 その塊ということは、ブロックはテーブルを分割しているような 感じでしょうか? 固定長の場合は最適な値が装置ごとに決まっているので、レコードのサイズを整数倍した値の中で、最適な値内でもっとも最適な値に近い数字を設定するということでよいでしょうか? 可変長はたぶん、最大値を一行として扱うってことなんですよね。 あと、メインフレームにもDBがあるのですか? DB2とかですか? オープン系のDBでブロックサイズを意識したことがないのですが メインフレーム特有なのでしょうか? それとも、カラム数を多くしないとかそういうことでしょうか? メインフレームは磁気ディスクのデータを使用するイメージがありましたが、メインフレームからDBにアクセスしてデータ操作をおこなうようなこともあるのでしょうか? でも、ブロックについてわかったことは、データの塊で、磁気ディスクの容量に無駄がでないように、また、大きすぎ、小さすぎもやめて設定すること。 ファイル(データセット)作成時に考慮が必要ですが、プログラムやJCLでは意識しなくていいこと。 ありがとうございました。 できれば今回の質問にも答えていただけるとうれしいです。 よろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • kt1965
  • ベストアンサー率34% (116/339)
回答No.1

回答します。 メインフレームでのブロックは、ワード(=オクテット)という単位になります。基本的には、データは固定長で扱います。可変長の場合には、一番長いデータを基準にして空欄を埋める形で行いますが、一応最初に使用するブロック長を指定しておきます。 例えば、COBOLでもそうなのですが、データ長を先に宣言しておいて、その値で全てのレコード及びブロック長を定めます。 JCL(ジョブ制御言語)の場合には、起動するプログラムを制御することが目的のため、余り意識する必要はありません。 では。

goouser20
質問者

補足

ありがとうございます。 もうちょっと質問させてください。 ひとつのトラックに何種類かのファイル(データセット)を記憶させることってあるますよね? トラックやシリンダをファイルがまたぐようなことってあるのでしょうか? よろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ブロック長について

    こんばんは。 TCP/IPの世界ではデータはパケットととして転送され、1回の手続きで 転送が完了しない場合は、分割されて転送されると思います。 アプリケーションによっては、固定長のブロック長を指定でき、 ブロック単位でデータ転送が行われます。 現在、全銀TCP/IPを使用し、通信を行っていますが、稀に通信エラー が発生します。 どうもパケットロスが原因のようなのですが、ブロック長を長くすれ ばするほど、パケットロスと言うのは起こりやすくなるものなのでしょうか? 現在、全銀推奨の2048以上を指定してます。 他の業務でも全銀TCP/IPを使用していますが、このようなエラーは 発生しておりません。違いがあるのはブロック長の長さです。 回線はISDNを使用しています。

  • [非SQL]Datagridviewでのファイル読み書き

    いつもお世話になっております。 SQLを用いずにDatagridviewでデータを読み込み,書き込みする方法を教えていただきたく,質問させていただきました。 現在,txtファイル,あるいはcsvファイルを読み込み,Datagridviewを用いてデータ表示し,レコードの内容を変更し,書き込みを行えるようなプログラムを考えております。 イメージとしては,次のような感じです。 |ヘッダ1|ヘッダ2|コンボボックス| |AAAAA|aaaaa|項目1~3| |BBBBB|bbbbb|項目1~3| 環境:vb2005 ExpressEdition まだプログラミングを始めたばかりという事もあり,右も左もわかりませんが,ご教授お願い致します。

  • プログラムのコ-ディングをお願いする場合

    企業の人事部に所属しています。開発期間短縮の為、c++プログラミングのコ-ディングをSOHOに依頼することになりましたが初めてのことなので戸惑っています。 (1)契約の日数単位 SOHOは月単位の契約が主なようですが、コ-ディングの場合もボリュ-ムに関係のないものでしょうか。 (2)費用の発生 費用の取り決め方法に基準がありますか。昔は一行○○円だったそうですが・・・。 (3)C++プログラマ-のSOHOペ-ジを紹介してください。 webペ-ジ作成の方は多いのですが、C++プログラマ-が探せません。 ご存じの方、よろしくお願いします。

  • エクセルで「Enter」が押されたら処理を動かす

    よろしくお願いします。 エクセルでA1のセルの何か入力されたら、A2に「aaaaa」、A3に「bbbbb」と表示したいのです。B6のセルに何かが入力されたらB7に「aaaaa」とB8に「bbbbb」です。 適当な大きさにセルを編集して使うのでセルの高さや幅は可変です。A4用紙で印刷出来る範囲で利用するので、どのセルに入力されるかはわかりませんし、どの列まで、どの行まで利用するかも決まりません。どのセルに入力されても、入力されたセルの1行下に「aaaaa」、2行下に「bbbbb」という動きをするようにしたいのです。 また、何かを入力されてというのは「Enter」が押された時をイメージしていますが、実際には「12345」とキーを押し「→」でセル移動することもあると思いますし、マウスで移動することもあるので、「セルに何かが入ったら」という感じです。 今、セルの条件付き書式設定で「次のセルのみを書式設定」で「空白なし」の場合に塗りつぶしをしているのですが、そのタイミングで1行下と2行下に固定表示したいです。 勿論、そのセルが空白になれば、1行下、2行下も空白に戻したいです。 よろしくお願いします。 教えてもらえば理解出来るのですが、エクセルでマクロ?を組むのは経験が浅く、何処に何を書けば良いのか、詳しく教えてもらえれば幸いです。

  • メインフレームってなにですか?

    パソコンに詳しい人に聞くのははずかしいのですが… メインフレームを調べなさい(どのようなものか、どのような仕組みか?)と課題を出されたのですが、検索してみてもさっぱりわかりません。(>_<) わかりやすく、教えてください。できれば、参考になるようなURLも教えていただけるとありがたいです。

  • 食品、ビール製品開発者の苦労

    適切なカテゴリーが見つからなかったので、ここで質問をさせていただきます。 製品には様々な分類があり、それぞれ製品の特徴によって製品開発で重要視するポイントが違うと思います。 特にビールの製品開発は、マーケティングデータとしてなんらかの「味」のイメージが特定されたとしても、その味を実現して安定的に製造プロセスで固定させるのに非常に苦労したり、ということを聞いたりしますが、一方でイメージがわきません。 この辺の苦労話、あるいはその辺にフォーカスした本などがあれば是非教えてください。 また食品、ビールではなく、他の製品開発ではまた違った点でマネージが必要になると思います。

  • Excel VBA 起点からの複数行一括削除

    Excel VBAで末端までだと4万行くらいのデータを整理するものを組んで います。初心者ゆえどなたかお詳しい方の知恵を拝借いたしたく。 元となるデータは15行が一塊であるデータブロックで構成されており、 14行目には"END"の文字があり、15行目には必ず空白行があります。 この15行のデータブロックが延々4万行繰り返しの形で存在しています。 どのデータブロックか判別できる数字が入っているのは1行目のE列 です。 データブロック一行目E列に含まれる特定の語句(IDNo.)を検索し、これを 起点として空白行までの15行一塊のデータブロックをまとめて削除でき るものを作成しようと思ったのですが、一行ずつ削除するところまでしか 自力では分からず、これ以降どのように追記すれば良いか見当がつか ない状態です。よろしくお願いします。 元データ     A    B   C    D    E     F   G 1   aaa   bbb  ccc  ddd   (IDNo.)  fff  ggg 2   111  222  333  444   555   666  777 (略) 14 END 15 (空白行) 16  AAA  BBB  CCC DDD  (IDNo.) FFF GGG (略) 29 END 30 (空白行) 以下 検索したもの+自分で追記してみた部分です。 Sub 特定ID削除() With ActiveWorkbook.ActiveSheet Const startrow As String = "1" '開始行を指定 Const col As String = "E" '識別文字が入力されている列 Dim Idx As Long Dim keyWord keyWord = Application.InputBox("削除対象の文字列を指定", Type:=2) If TypeName(keyWord) <> "Boolean" And Len(keyWord) > 0 Then For Idx = .Cells(65536, col).End(xlUp).Row To startrow Step -1 If InStr(.Cells(Idx, col).Value, keyWord) > 0 Then ' If Application.CountIf(Rows(Idx), "*" & keyWord & "*") > 0 Then .Rows(Idx).Delete End If Next Idx End If End With End Sub

  • 原子間の結合と物質の形状変化 鉄は何故曲がる?

    知識レベルは遠い昔の高校化学です。 よくダイヤモンドの結合モデルとして、1個の球(炭素原子)から4本の棒が伸びて、別の球と連結(共有結合?)して、正4面体のテトラ構造?のような結合構造をとり、各原子間は均等で、結合力が強く、炭素原子は固定化されている。そのためダイヤモンドは固い。 上記のような原子間構造イメージの固定観念があっての質問となりますので、発想に無理があるかもしれません。 1.仮に「ダイヤモンドの棒」と「鉄の棒」があったとして「ダイヤモンドの棒」を折ろうとした場合は、先述した正四面体のいずうれかの面を境界にして折れるイメージ(拡大イメージとしては、小さい正四面体硬質なブロックばかりで作った棒を折る感じです) 次に「鉄の棒」なのですが、原子配列のイメージが無いことと、テトラ構造をイメージして想像すると、棒が曲がる局所では、鉄原子の位相関係が変形しないと曲がらないと言うのか、鉄原子間の長さが変化しないと曲がらないと思うのですが? どのようにイメージすれば良いのでしょうか? 2.質問1と関連するのですが、「光学異性体」と言う分子構造があったかと思います。各原子間の結合と位相関係は限定的で、一部原子配列が異なる構造で、鏡に映すと同体構造みたいな考え方だったかと思いますが、「分子構造は制約されている→分子中の原子間の結合や位相関係は不可変的固定化している→分子単位では「柔軟性が無い」とのイメージなのですが、ゴムやバネは、何故伸びることが出来て、そして元の形に戻れるのでしょうか? 最後になりますが、このての質問は、回答者様より、ハイレベルなご回答を頂くことが多く、理解するのに時間がかかったり、新たな質問がでたりと、連絡が遅れがちになることを予めご容赦下さいませ。 宜しくお願い致します。

  • メインフレームとは何??

    汎用機、ホストなどともいわれますが、いったいなんなのでしょうか、 最近IBMが自社のM/Fをe-serverシリーズの一つなどと 言い始めたのですが、M/Fとは独自OSを積んだ高級サーバーと 考えればいいのでしょうか、 技術者ではないのですが、UNIX機はある程度イメージがつきます。触ったこと もあります。 M/Fは見たことも触ったこともありません。 何故あんなに高いのでしょうか?どうして安定性に優れているのでしょうか?? だれか、私にM/Fとはなんなのかを分かりやすくお教え頂けませんでしょうか? よろしくお願い致します。 *多少なら専門用語も分かります。

  • UTF8 URLエンコード

    こんにちわ。 PerlのCGIです。 今までEUCとsjisの変換連打で開発を乗り切って来たのですが、 さすがに古すぎて周りの人が迷惑らしいので、初めてUTF8を使うことになりました。 一応全部UTF8だけで作ろうと思います。 大まかな質問は三つです。 1:   UTF8は可変ビット (バイト単位ではない) の、   ほぼ全ての国際言語対応文字コードと言う認識で合ってますか? 2:   そうなってくると、データの送受信などのURLエンコードは不要ですか?必要ですか? 3:   もしURLエンコードが必要なら、一般に通用する変換方法を教えてください。   ついでなんでデコードの記述もお願いします。 すみませんがよろしくお願いします。

    • 締切済み
    • CGI
このQ&Aのポイント
  • 西之表市の市町村役場の開庁時間は何時からですか?
  • 西之表市の移住を考えているのですが、市町村役場の開庁時間を教えてください。
  • 自治体に聞いてみたシリーズの一環として、西之表市の市町村役場の開庁時間について質問です。
回答を見る