paradigm170614aのプロフィール

@paradigm170614a paradigm170614a
ありがとう数3
質問数0
回答数8
ベストアンサー数
0
ベストアンサー率
0%
お礼率
0%

  • 登録日2017/06/14
  • 性別男性
  • 職業自営業
  • 都道府県兵庫県
  • 汎用機COBOLのメモリ管理について

    汎用機COBOLのオンラインPGですが、明細データをDBから読み込んで、配列に入れていますが、99%は300件以下です。1%は300件以上ですが、その場合1000件以上になります。そこで、通常は300の配列で処理をし、300件を超えたら1100の配列で処理をする様にして、メモリの使用を抑えようとしています。この場合、可変長配列を使用すれば、何の問題も無いのですが、自分が配属された時には、2つの固定長配列のCOPY句を使用して、目的を達成しようとしていました。方法は、 (1)配列300のCOPY句をワークエリアに、配列1100のCOPY句をリンケージエリアに配置する。リンケージエリアにCOPY句を配置する理由は、何もしなければ、メモリを消費しないからです。 (2)配列300のワークエリアを初期化して、そのアドレスをリンケージエリアの配列1100にセットする。この時点では、ワークエリアとリンケージエリアで配列300分のメモリアドレスを共有する。 (3)共通サブルーチンに(2)のアドレスを渡し、明細を取り込む。1100を超えた場合は、アドレスを取り直して、返却する。 (4)メインPG側で、返却されたアドレスをリンケージエリアの配列1100のエリアにセットし直す。 (5)判定や計算をする場合は、リンケージエリアの配列1100の項目名を使用する。 以上が、大まかな処理の流れです。 そこで、疑問なのが明細が300件未満の場合です。使用しているメモリの場所は、ワークエリアの配列300とリンケージエリアの配列1100とは、同じワークエリアのメモリアドレスになるので、どちらのCOPY句で処理しても、同じ結果になります。この時、配列300分のメモリしか使用していない事になっていますが、判定や計算には配列1100の項目名を使用しています。そこで疑問なのは、アドレスセットだけなら問題無いにしても、配列1100の項目を処理に使用した時点で、配列1100分のメモリが確保されてしまうのではないかという事です。つまり、節約しているつもりが、配列1400分のメモリを浪費しているのではないかという疑問です。配列300の場合と配列1100の場合とで、PGを完全に二重化すれば問題は無いとおもいますが、メーカーの担当エンジニアは問題無いと言っているのですが、誤解が有るような気がしてなりません。どなたか、解る方がいらっしゃいましたら、ご教示頂けると幸いです。どうぞよろしくお願い致します。

  • C言語のポインタの利点がわかりません

    C言語を始めたばかりですが、 ポインタで間接参照するメリットが今一つわかりません。。。 特に、関数ポインタを使う場合には、 単なる関数ではだめなのでしょうか。 どなたか、かみ砕いて教えていただけないでしょうか。

  • プログラミングにおけるアルゴリズムって、

    プログラミングにおけるアルゴリズムって、 目的に沿うように、いくつかの単純な命令を組み合わせているものですよね? リニアサーチや、バイナリサーチなどの アルゴリズムの型のようなものがありますが、 目的に沿えば、自分で命令を組み合わせアルゴリズムを作ることは可能でしょうか?

  • 私の高校時代の日本史の先生が、

    特定の時代しか興味を持たない人を批判しているんですが、この意見、皆さんはどう思いますか? この先生は史学科の大学院を卒業しています。 卒業後も、何回かこの先生 とお話しする機会があるんですが、その時に、そうした、特定の時代しか興味を持たない人について、そういう人たちは特定の時代については的を得たことが言えたとしても、歴史好きとはいえない。こういう層に歴史が好きと言ってほしくないと批判的なことを言っていました。 ちなみに、先生が今教えている高校生の中にも、戦国時代以前は赤点レベルだったのに、戦国時代になった途端上位の成績を取るようになったという人がいるらしく、急に得点が上がった理由を聞いたところ、単に戦国から現代までは好き、ということで、この生徒が色々歴史の話を振ってくることがあるそうですが、近世及び近現代の知識には関心する一方で、(教師の立場上生徒には言えないが)こういう層を歴史好きを名乗って欲しくない、という気持ちがあるそうです。

  • C++のコードの書き方

    プログラミング勉強中のものです 疑問に思ったところがあるので教えてください 入門サイトなどで勉強したところによると main関数の中で変数や配列の宣言をしていたのですが 他人のコードを見るとmain関数の外で宣言してる人を多く見かけますが 外に書くのが主流なのでしょうか? またその利点はなんでしょうか? よろしくおねがいします