COBOLを使ったプログラミングをすることになりました。
全くプログラミング未経験の新卒でして、三ヶ月の研修でjava、PHP、SQLあたりは多少触れましたがほぼほぼど素人です。
練習課題としてINVALID KEY句を使った索引読みをし、別テーブルからデータを持ってきて更新するプログラムを作っているのですが、仕組みがいまいちわからず大変苦戦しています。

MOVE キーとして欲しい値 TO KEY項目.
READ テーブル
INVALID KEY
該当しないデータだったときの処理
NOT INVALID KEY
該当するデータだったときの処理
END-READ.

というような感じだよと(すみません、これも良く分かっておりません)教わったのですが、なぜこれで狙ったレコードを引き出すことができるのでしょう?
例えば会社コード・会社名・住所が入ったデータテーブルAと、幾つかの会社コードだけが登録されたテーブルBがあったとして、Aの会社コードがキー項目になっていたとします。
その場合はBの会社コードをAの会社コードにMOVEし、AをREADする…という流れになると思うのですが、

1、もしAテーブルにおいてMOVEされた会社コードに該当するコードが4行目にあったとしてもいきなり4行目を読んできてくれるのですか?
2、参考サイトなどを見ると「これをキーにして読む」「キーがあれば読む」と書いてあったりするのですが、そもそもキーにする、キーがある・ないというのはどういうことでしょうか?
3、冒頭のMOVEというのはどこに対してMOVEしているのですか?KEY項目というのはWORKING SECTIONで宣言した変数の一つだと思うのですが、これがどうしてテーブルデータを読むときに作用するのですか?

どれもこれも的外れな質問かもしれませんが、本当に困っています。
どうかご教授のほどよろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こういうようなシステムですか?


https://www.support.nec.co.jp/DownLoad.aspx?file …

データーベース機能の部分に詳細な記述があります。これを手掛かりに理解できるかもしれません。(COBOLは使ったことがありませんのであしからず。COBOLは古い言語ですからCOBOLに組み込まれているDATABASEシステムによってやり方が統一されていないのでは?)
    • good
    • 0

昔の記憶を頼りに書いているので間違っているかもしれませんが、



>1、もしAテーブルにおいてMOVEされた会社コードに該当するコードが4行目にあったとしてもいきなり4行目を読んできてくれるのですか?

MOVEしただけでは読み込まれません。
READして読み込まれます。

> 2、参考サイトなどを見ると「これをキーにして読む」「キーがあれば読む」と書いてあったりするのですが、そもそもキーにする、キーがある・ないというのはどういうことでしょうか?

テーブルの定義を最初に行っていると思いますがそこでキー項目の設定を行っています。

> 3、冒頭のMOVEというのはどこに対してMOVEしているのですか?KEY項目というのはWORKING SECTIONで宣言した変数の一つだと思うのですが、これがどうしてテーブルデータを読むときに作用するのですか?

2、同様テーブルの定義を行うときにキー項目の定義も行っています。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q60歳以上の方の趣味を教えてください。

こんにちわ。現在、60歳以上の方の趣味を調べています。
そこで60歳以上の方にお聞きしたいのですが、ずばりご趣味はなんですか?
また、年齢、性別も教えてください。

よろしくお願いします。

Aベストアンサー

私の両親のことでもいいですか?

母(64歳)
 ・地域の体育施設に通ってエアロビクスと器械体操  の指導を週一回受けている
 ・独学でパソコンの操作を学習
  ワード・エクセルはモチロンの事
  キーパンチもブラインドタッチが出来るまでマスター 
 ・読書
 ・日帰りバスツアー
 ・季節の花めぐりの旅行
 ・シニア料金での映画鑑賞
 ・ベランダ菜園の手入れ、世話
 ・旅日記の編集(PCで)
 ・デジカメ撮影、アルバム作り
 
父(62歳)
 ・競馬
 ・ガーデニング
 ・銭湯めぐり
 ・自宅の手入れ(日曜大工)
 ・パソコンでゲーム 
 ・日帰り旅行

二人で一緒にしている事も多いんです。
この頃とっても仲良しです。 

QMicroFocusを使ったCOBOLプログラミング

MicroFocusを使ったCOBOLプログラミング

環境:MicroFocusNetExpress4.0
OS:WinXP

業務でCOBOLを使っているのですが、
実行結果に疑問があり投稿しました。

■PGのイメージ
X PIC 9(3)
O-SUM PIC 9(3)

COMPUTE O-SUM = X + X

O-SUMに、X + Xの計算結果を与えるものです。
X=1の場合は、O-SUM=2となります。

異常値があった場合の検証として、Xが「A」となるINデータを用意して
実行したところ、デバッグモードでは
「数値項目に異常があります」とポップアップが表示されそれ以上実行されませんが、
ビルドして作られたEXEを実際に動かしてみると、異常終了しません。
(コマンドプロンプトからEXEを実行しています)
さらに、O-SUMの計算結果が2となるデータが出来あがりました。
X=BだとO-SUM=4、X=DだとO-SUM=8…というように、
A→1
B→2
C→3
D→4
と暗黙で変換されているように見受けられる結果となりました。

なぜ変換されたような結果になりデータ異常を検知できないのか、
また、変換されないよう回避するための方法と、
データ異常を検知する方法をご存知の方がみえましたら、ご教示ください。

MicroFocusを使ったCOBOLプログラミング

環境:MicroFocusNetExpress4.0
OS:WinXP

業務でCOBOLを使っているのですが、
実行結果に疑問があり投稿しました。

■PGのイメージ
X PIC 9(3)
O-SUM PIC 9(3)

COMPUTE O-SUM = X + X

O-SUMに、X + Xの計算結果を与えるものです。
X=1の場合は、O-SUM=2となります。

異常値があった場合の検証として、Xが「A」となるINデータを用意して
実行したところ、デバッグモードでは
「数値項目に異常があります」とポップアップが表示されそれ以上実行されませんが、
ビルド...続きを読む

Aベストアンサー

MFCOBOLのCOMPUTE命令の解釈の問題と考えられます。
汎用機の文字コード(EBCDIC)は内部は16進表現で次のようになります。
A -> X'C1'
B -> X'C2'
C -> X'C3'
X 9(3)という宣言は、MFCOBOLが9(3)の中身は0~9即ち
16進でX'F0'~X'F9'の範囲内を想定している筈ですが、実際にはA'C1'などが入っている場合に
上位4ビットを無条件にFに置き換えて処理しているものと推測できます。
 このような拡大解釈をするか否かは、コンパイル時のオプションで選択できるようになっているのが一般的な言語処理プログラムの仕様ですので、マニュアルを調べれば見つかるのではないでしょうか?

Q60歳以上の人の年金の手続きについて。

10月から新しい社員を雇用したので、
保険の手続をしなければならないのですが、
年金の手続で疑問が生じたので教えてください。

(1)今月から雇用した社員は60歳以上なのですが、
その場合、年金の加入はどうすればよいのでしょうか?
 「社会保険の事務手続」には、「20歳以上60歳未満の人はすべて国民年金に加入する」とありますが、60歳を越えている場合は年金に加入しなくてもいいのでしょうか?

また、その場合、この方の配偶者の年齢は60歳未満で、まだ年金の第3号被保険者になるとおもわれるのですが、配偶者の方についての事務処理はどうしたらいいのでしょうか?

今まで60歳以上の人を雇ったことがないのでよくわからないのですが・・・
お分かりになる方がいらっしゃったら、よろしくお願いします。

Aベストアンサー

雇用された方が一般社員と変わりない勤務実態である場合か、一般社員の4分の3以上の勤務時間と勤務日数の場合として考えると、70歳未満の場合は厚生年金に加入しなければなりません。
「20歳以上60歳未満の人はすべて国民年金に加入する」という文は、あくまでも国民年金に関するものであり、厚生年金は70歳まで加入することとなっています。
もちろんのことながら、健康保険も社会保険または組合保険の保険証を取得することとなります。

雇用された方が一般社員の4分の3未満の勤務実態である場合は、社会保険に加入する資格に届いていませんので、国民年金と国民健康保険となりますが、前記のとおり60歳以上の方は国民年金には加入しなくてよいこととなっています。


さて、その方の60歳未満の配偶者のことですが、だんなさんが65歳未満で、厚生年金に加入している場合は国民年金の第3号被保険者となります。
この場合は国民年金種別変更届にて、社会保険事務所に届け出ることとなっています。

QCOBOL プログラミング

プログラミングでコンパイルエラーがでて困っています。
問題があったら 指摘していただきたいです。

IF文の条件に合致したときは上のSELECT文
合致しなかったときは下のSELECT文を実行するプログラム

コンパイルエラーの内容 条件中のオペランドに誤りがあります。
               IF文の書き方が不完全です。
:VSL.MECIDENPYO_NO は定義がなされているものとします

IF  :VSL.MECIDENPYO_NO NOT = SPACE
EXEC SQL
SELECT  抽出したい項目1,
 抽出したい項目2,
抽出したい項目3,
抽出したい項目4        
   *
FROM テーブル名
*
WHERE
条件1
AND 条件2
AND 条件3
  END-EXEC
ELSE
EXEC SQL
    SELECT   抽出したい項目1,
 抽出したい項目2,
抽出したい項目3,
抽出したい項目4        
   *
FROM テーブル名
WHERE
条件1
AND 条件2
END-EXEC
  END-IF

プログラミングでコンパイルエラーがでて困っています。
問題があったら 指摘していただきたいです。

IF文の条件に合致したときは上のSELECT文
合致しなかったときは下のSELECT文を実行するプログラム

コンパイルエラーの内容 条件中のオペランドに誤りがあります。
               IF文の書き方が不完全です。
:VSL.MECIDENPYO_NO は定義がなされているものとします

IF  :VSL.MECIDENPYO_NO NOT = SPACE
EXEC SQL
SELECT  抽出したい項目1,
 抽出したい項目2,
抽出したい項目3,
抽出したい...続きを読む

Aベストアンサー

COBOLもEND-IFを使うならTHENが必要だったはず。
if ・・・ then
EXEC SQL ・・・END-EXEC
else
EXEC SQL ・・・END-EXEC
end if

また、data divisionに
:VSL.MECIDENPYO_NO
が定義されていない。
というより、:を含む項目名は定義できないので別の項目名にする必要がありますけれど。
(以上は一般的なCOBOLの文法のはず。といってもCOBOL85くらいまでしか知りませんが。)

Q国内どこでも60歳以上が資産6割保有していますか?

国内の金融資産の約6割を、
60歳以上の方が所有していると
聞いたことがあります。

近所(都内)では、団地などで細々と暮らしているご年輩の方が多いです。
ということは、ご年輩の方々の中でも相当な格差があるということでしょうか?

確かに東京の港区(平均所得が23区平均の2約倍)に住んでいる高齢者と、
足立区に住んでいる高齢者では結構な格差があるとは思います。

ただ、足立区に住んでいる高齢者でも、基本的には6割の金融資産を、
60歳以上の方が所有しているという日本の統計に近くなる訳ですよね?

ご存知の方いらっしゃいましたら教えてください。
よろしくお願いいたします。

Aベストアンサー

間違って理解されているようですね。

計算が面倒なので、この国の人口を100人、60歳以上の方を20人
国民の総資産を1億円とします。この状態でもし仮に、Aさんが
総資産6000万円で、Aさんの年齢が60歳以上だとすると

「国内の金融資産の約6割を60歳以上の方が所有している」

こういうことになりますが、当然のことながら、残りの60歳以上である
19人の資産が仮にゼロでも、「」内の結論は変わりません。

60歳以上の方の資産が多いんじゃないんです。
資産の多い人は60歳以上である可能性が高い、ってだけです。

QCOBOL85からCOBOL2002移行

HPのOSバージョンアップして、COBOL85からCOBOL2002移行の作業をしました。再コンパイルして、生成されたモジュール(又はオブジェクトファイル.o)のサイズは元の2、3倍になってしまいましたが、どういうことですか?ご教示お願いします。

Aベストアンサー

>なぜバイナリ構造が変更したら、実行モジュール大きくなるのは
>少し、詳しく教えていただけませんか。
ちゃんと書くと長いので掻い摘んで描くと
RISCではコンパイル時点で命令を細かく分け、実行時に並列計算できるもの探して実行していましたが、
Itaniumで採用したEPICではコンパイル時点で並列部分を抽出し実行モジュールに並列情報を持たせています。
アーキテクチャが変わると実行モジュールの構成(サイズ)が変わるのは仕方がないことです。

Q60歳以上の人が入れる保険

60歳以上の健康な人が入れる死亡、(入院)保険はあるのでしょうか?

Aベストアンサー

60代の方なら、健康状態に問題がなければ、ほとんどの保険商品に加入可能です。

ただし、保険料の設定は年齢・性別により行われますので、(保険期間をいつまで設定するかによりますが)それ相応の保険料負担が発生することだけは覚悟しなければなりません。

QCOBOLプログラミングについて

先ほど質問した者です。
記入に少し誤りがありましたので再度質問いたします。
例)

 現在の表示状況 6桁の会員番号 123456
 以下のように変更 ↓

         6桁の会員番号の内下2桁を**で表示する
                 1234**

 このコーディングの仕方を教えて下さい。
 初歩的な質問ですいません。

Aベストアンサー

お疲れ様です。
01 KAIIN-DATA
03 KD-1 PIC N(04) COLUMN 23. ←会員種別
03 KD-2 PIC N(06) ←会員番号
としていますが、
実際データーの入っている項目
(123456)6桁なので
WORKでも6桁 持ちたく
なりますよね!
でも、加工しなければ
ならない(1234**)
場合、WORKでの考え方
を替えます。
03 KD-2 PIC N(06) ではなく
03 KD-2.
05 KD-2-4 PIC N(04).
05 KD-2-2 PIC N(02).
とし、
move K1-2 to KD-2.
move "**" to KD-2-2.
とすれば
KD-2 の中身は
1234** になります。
発想の転換が必要かも・・・・。
持ってくるデーターが6桁なら
格納する部分も6けた
にする必要は有りません。
今回の様に
4桁2桁に分けても
いいですし、
ぶっちゃけ
1桁を6個作っても良い訳です。
欲しいケタ数になるまで
WORKーSTRAで分散した
箱?を用意してやれば
良いと言う事に・・・・・。
頑張って下さい
^^

お疲れ様です。
01 KAIIN-DATA
03 KD-1 PIC N(04) COLUMN 23. ←会員種別
03 KD-2 PIC N(06) ←会員番号
としていますが、
実際データーの入っている項目
(123456)6桁なので
WORKでも6桁 持ちたく
なりますよね!
でも、加工しなければ
ならない(1234**)
場合、WORKでの考え方
を替えます。
03 KD-2 PIC N(06) ではなく
03 KD-2.
05 KD-2-4 PIC N(04).
05 KD-2-2 PIC N(02).
とし、
move K1-2 to KD-2.
move "**" to KD-2-2.
とすれば
KD-2 の中身は
1234...続きを読む

Q60歳以上のアルバイト

60歳以上でアルバイト探しています。神奈川県相模原市ですどこが探しやすいですか

Aベストアンサー

65歳までならアルバイト・パート探しは容易だと思います。
スーパーや外食産業なら大体人手不足で困っているようです。
コンビニもそうですが、オーナーの気持ちひとつで、年齢制限はないものの
若い人を採ろうとする傾向が強いです。(老人は扱いにくいと思われているかもしれません)
と言いましたが、そこで同年齢の方が働いているなら問題ないと思いますが。

Q“プログラミング”についてよく理解できなくて困ってます

情報処理系の学科のある学校に進学するのですが,“プログラム”についてどうしてもよく理解できなくて困ってます(T_T)
それ故に『どんなプログラムを作ってみたいか』という質問に何て答えたらいいかイマイチ分からないンです;;

どんなものまで作れるのでしょうか??
私は音響技術などの仕事に興味を持っているので,“音楽”をどうにかプログラミングで使えたらいいな,と思っているのですが(´・ω・`)
具体的に『~なプログラムを作りたいです』と答えられなくて悩んでいますorz
手当たり次第調べているのですが,どうしても理解しづらいのでお願いしますm(_ _)m  

Aベストアンサー

たとえば、
音をプログラムに読ませて、音量を変えたり、音調を変えたりする事ができます。
また、音楽編集プログラムなんかも、フリーソフトで出回ってたりします。

プログラムの概念の説明としては、
「人間の手では非常に手間と時間がかかるものを
 コンピュータにさせて、楽になる手段」
みたいな感じで考えていればいいと思います。
#現実はこうは行きませんが・・・。

実際にプログラムを組んでみて、手ごたえを感じるのが一番だと思います。
Javascriptなんかは、ブラウザとメモ帳で簡単に組んで実行できますよ。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング