• ベストアンサー

COBOLのプログラミング力を上げるには?

私は25歳女性、現在COBOLのプログラマーです。 去年の夏2か月ほどCOBOLのプログラミングをした経験がありますが 初めてで全然できず、いろんな上司に手伝ってもらいながらやっとできました (ほぼ他力)。 今月からまたプログラムを作ることになり、ソースは勉強して読めるようになりましたが、「この処理の詳細設計書いて!」と言われても。全く書けません。 どういう処理なのか教えてもらっても、理解するのに他人の10倍は時間が かかります。 あまりにできなくて自信がなくなり、質問しにいくのも恥ずかしく、落ちこんでばかりです。ネットで調べても、本を読んでも、あまり実務につながりません。 上司もなんだか呆れています。 派遣で今の会社にきて1年半、この間ほぼ事務職だった私には、はっきり言ってプログラミングは厳しいです。 新卒の子は一人一人に教育係がいるのですが、私はすべて自分で動かないと何も進みません。 なのに周りは男性ばかりで質問するのが恥ずかしく、一人で考えて煮詰まっちゃいます。 今のプロジェクトでがんばって、評価してもらおうと気合十分だったのですが、 早くも挫折してしまいました。 このままではタイトなスケジュールの中、私が足を引っ張り他のメンバーに 迷惑がかかってしまいます。 勇気を出して質問にいくようがんばりますが、それ以外に どう努力したらいいのでしょうか><。 どうようもないことで質問をしてすみません。 ちなみに今担当している処理は (1)ファイルを読み込む→データを抽出→抽出したデータをファイルに出力 (2)出力ファイルのデータをDBに取り込む 簡単そうでなかなかできません。

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

  • ベストアンサー
回答No.3

プログラミング力という言葉が使われていますが、この「力」の中には、 1.言語仕様を理解し、コーディングができる能力 2.仕様を理解し、アルゴリズムを作成する能力 のふたつがあると思います。 前者は、他の方が言われているような、MOVE や PEFORM とか IF や EVALUATE だったり、最後にピリオドがなければならない、ということです。 これは言語によって、異なるので、新しい言語を習得するたびに必要なことです。 後者は、 ・詳細設計書を読み解き、実現したい「現象」を(データベースやファイルのフィールドがどうならなければならないかまで)具体的に理解すること と、そのうえで、 ・その「現象」を実現するためのアルゴリズムを組み立てる能力 と言えると思います。 フローチャートの読み方のときに教えてもらったと思いますが、手続き型プログラミング言語の基本構造は、 ・順次 ・判断 ・繰り返し この3つしかありません。すべてのアルゴリズムはこの組み合わせです。 これがわかっていて、フローチャートが書けているならば、詳細設計に書かれている、実現したい「現象」を具体的に理解していますか? 「理解する」ということの、一番簡単な説明は「他人に説明できる」ということです。他人に説明できますか? 他人に説明できるのであれば、COBOLの言語仕様は理解していますか? アルゴリズムがわかり、現象が他人に説明でき、COBOLの書き方を理解していて、はじめて、コーディングができるのだと思います。 フローチャートは書けるとのことですが、おそらくは、「現象」を他人に説明できるほど、詳細設計書を理解していないんだと思います。 さらに、「現象」が理解できないことを、処理をCOBOL言語で書けないことにすりかえてしまっており、(もしくは混同してしまっており)前に進めていないのだと思います。 いくつかのヒントを出しましたが、自分がなにがわからないのかを明らかにし、ひとつひとつ前に進んでいってください。 さしあたり、春の基本情報処理技術者試験の受験をおすすめします。:-) 最後に、えらそうなこと書いてすいませんでした。m(_ _)m

その他の回答 (4)

  • QPIE
  • ベストアンサー率0% (0/3)
回答No.5

COBOLってすごく単純で、しかし、奥深くて、事務処理や大量データ処理には最適な言語であると思います。長年COBOL言語の仕事に携わってきましたが、最近はなかなかなくて…代わってあげたいぐらいです。 まず、質問することを怖がらないこと!しかし、同じような質問を繰り返ししないこと!自分自身で、『質問の内容』を確認すること。何を聞きたいか、メモっておくことも重要です。ちょっと形を変えただけの同じ内容の質問をされるのは、聞かれる方も時間をとられるわけですからカンベン願いたいと思うだろうし… COBOLの場合は、まったく一からのコーディングをすることもあまりないと思いますが、『こんなやり方もあるんだ!』ってびっくりするような手法を使っているソースなんかをプリントして、自分の辞書的なものを作ってみるのはどうでしょう?規約がたくさんあるプロジェクトもありますが、プログラムの作り方は、個人個人でいろいろあります。 JCLの勉強もしないといけないだろうし…やることはいっぱいあるので、くじけないで頑張って勉強してみて下さい。 それと…この分野はこの人!こんなことはこの人!って他人の得意分野を見極めて質問することも重要ですよ! ご健闘をお祈りします。

  • LN-TF
  • ベストアンサー率53% (320/596)
回答No.4

どうやらCOBOLと云う言語が目くらましになっているだけで、実はプログラムの設計の力が問題のように思えます。 或る業務或いは或る機能をプログラムで実現するにはどうやれば良いのかです。業務なり求められている機能なりを分析しどのように具現して行くかを整理します。それを紙に書いたものが詳細設計書です。 大雑把の話です。ここでMOVE命令を使うのかとかIF命令の入れ子等と云うのはコーディングの技法です。コーディングの技法も確かにある程度知らないとプログラムは書けませんが、それと共にプログラムの設計力もないと本統に半端な処理のプログラムしかできない事になります。 後COBOLの場合は特にそうですが決まり切ったパターンがあります。例えば帳票印刷の場合の頁換え、二つのファイルの突合、名寄せ作業等です。これらは定型的なものなので取敢えずはパータン化してしまうと良いでしょう。(但し、それはどう云う意味でこのような処理をしているかは必ず確認して置いて下さい。闇雲に当て嵌めると当て嵌まらない場合があります) 実はこのようの事が大切なのですが、適当の参考書が見当たりません。殆どが社内研修やOJTで身に付けているからです。 取り敢えずは他の方のお勧めの「基本情報処理技術者」の試験勉強をされるのも良いかもしれません。これで所謂IT屋の基本常識を勉強する事になるからです。

noname#147912
noname#147912
回答No.2

COBOLで悩むのはあまりないかもしれません。クラスうんぬん、APIうんぬんもなければ、ネットワークどうこうもない。世界一簡単な言語ですから、三ヶ月もあれば、誰でも覚えます。MOVEとPERFORMしかありませんから、できない人はいません。 問題は質問者様がエラー処理や業務知識で困っているんじゃないでしょうか。COBOLは実にムダに長くて、ぱっと見で、関数定義が何百行も続き、1本で何万行も珍しくないでしょう。長いだけです。 実は私も、COBOLを何年もやっていますが、新しい会社に派遣されるたび、業務が理解できない、コーディングスタイルが理解できないで困っています。一度なれれば、なんだこれって感じで、何の苦もなくなります。 COBOLは世界一使われている言語なのに、教科書も少ないですし、情報も少ない。簡単すぎるせいでしょうか。初心者にとっては簡単とは言え、とてもとっつきにくい言語です。よく業務を理解し、その会社のコーディングルールを学べば、プログラムが恐ろしく簡単に見えてきます。COBOLはしょせんエクセルみたいなツールの一つに過ぎませんから、エクセルの関数で悩んではいけないように、それで悩んではいけません、まず業務を覚えることと会社の雰囲気を理解することです。

mhz1984
質問者

お礼

ご回答どうもありがとうございます。 確かに、COBOLは簡単な言語とよく聞きます。 エクセルのようなツールの一つに過ぎないんですか・・・ エクセルは得意なので(できて当たり前ですが) 自分にもできる!ともっと自信を持ってやってみます! 業務をちゃんと理解するまで聞いて頑張っていきます!!

  • ninnincho
  • ベストアンサー率46% (115/245)
回答No.1

フローチャートは書けるのですか? (1)ファイルを読み込む→データを抽出→抽出したデータをファイルに出力 (2)出力ファイルのデータをDBに取り込む この程度の処理でしたらフローチャートも簡単ですし、ソースもかなり短いものですが、この時点でつまずいておられるということはたしかに厳しいですね。 とりあえず仕事を覚える段階で恥ずかしいとかいって落ち込んでいる場合ではないのでがむしゃらにこなすしかないですよ。 他の人が書いた仕様書とソースを見比べて覚えたり、分からない所はどんどん聞いて仕事が出来るようになるんです。 私なんかも学校に行って習ったのではなく全くの初心者だったのですが、最初は他の人のプログラムソースをプリントアウトして家にも持って帰って覚えたものです。 1本のプログラムを作るにもマニュアルと首っ引きで作りました。 休み時間はずっと情報処理の試験勉強もしました。 そんなにしてようやく仕様書が書けるようになり、だんだん指導できる立場になったものです。 確かに情報処理の仕事は向き、不向きはありますが、プログラマーはたいていの人ならなんとか出きるようになります。 それと去年ご自分が手がけたプログラムがあるのでしたら、そのソースは持っていますか? 最初のうちは自分の作ったプログラムは仕様書と一緒に自分でコピーを保管しておいて、次に作るプログラムの時に参考にするようにしたほうがいいですよ。 とにかくやる気を出してなんとか頑張りましょう。 やる気さえ出せばすぐに覚えられますから。

mhz1984
質問者

お礼

>この時点でつまずいておられるということはたしかに厳しいですね。 おっしゃる通りです。。 フローチャートは書けます。 原因は私の努力が足りないんですね。 以前作ったプログラムのソースがまだあるので、今日は休みなので これを見ながら勉強します。 ninnincho様のようにがむしゃらになって勉強して 早く戦力になって、上司の役にたてれるように頑張ります!! ご回答本当にありがとうございました><。

関連するQ&A

  • cobolの超基礎プログラミングについて

    初めまして。 プログラミング未経験からコボルの勉強をしております。 下記の条件のプログラミングを作成したいのですが、 どのようにプログラミングすれば良いのか判らなくて困っております。 皆様のお力添えをいただければと思います。 ・あるファイルには、社員番号、名前、科目、科目得点が入っている。 ・このファイルから得点が70点以上のレコードのみを抽出したい ・科目は3科目あり、今回は国語、数学、英語とする ・終了条件はファイルのデータがなくなるまで 条件は以上です。 現在は主処理のレコード読み込みの繰り返し部分の作成に頭を悩ませております。 ifを使用してプログラミングすると考えたのですが、条件の書き方やどのデータを使用するのか等、まだプログラミングというものが理解できておらず、詳細に教えて下さると全体像がわかるのではと思い質問させていただきました。 お忙しい中恐縮ですが、宜しくお願い致します。

  • COBOL

    全商情報処理検定の2級プログラミングのCOBOLを勉強しています。模擬問題を多く解いているのですが全く理解することができません・・・。最初に何かを初期化するのは分かるんですが、何を初期化すればよいのでしょうか?また、PERFORM文がありますが何を繰り返さなければならないのか分からないんです。初期化・PERFORMにしてもどこを見れば良いのでしょうか?やっぱり入力形式・出力形式・処理条件を見て判断するのでしょうか? 質問を押し付けるみたいになって申し訳ないんですが、分かる方いらっしゃいましたら教えてくれないでしょうか。お願いします。

  • COBOL言語で開発できますか?

    SQL Server2000のデータ処理をCOBOL言語で開発できますか? 社内システムの開発コスト低減のためシルバー人材を使い安くあげたいと考えています。田舎のシルバー市場ではOPEN系言語を使える人が十分にはみつかりません、それでCOBOLを使って開発できないかと考えました。 すべての業務をCOBOLで開発するのではなくデータを抽出し加工してテキストデータをつくる部分をCOBOLで行えないかと考えています。 (欲を言えばレコードの追加や更新もできればこしたことはないのですが) システムの寿命は約10年と見積もっています

  • <COBOLでのSJISファイル出力について>

    <COBOLでのSJISファイル出力について> COBOL(開発環境はNETCOBOLです。)にて以下のような処理は可能でしょうか? 1.SJISで記載されたファイルを読み込む。 2.1のファイル内の全角カナについて半角カナに変換する。   ※数値項目などは特に変換しない。 3.2で返還した項目を置換後、再びSJISファイルとして出力する。 COBOL・文字コード共に理解が浅く答えが見つけられない状態です。 可能・不可能だけでもご教授頂けると大変助かります。 申し訳ありませんがよろしくお願いいたします。

  • COBOL FILLER

    COBOLのFILLER項目の出力を質問させていただきます。 質問1 OUT1-FILE. 01 OUT-REC  02 FILLER PIC X(10). このファイルを何もせず WRITE で出力した場合は空ファイルが出力されますか?それとも"0000000000"が出力されますか? 質問2 またこのファイルをINITHILIZEした後WRITEでファイル出力したら何が出力されますか? 質問3 このファイルをMOVE ZERO TO OUT-REC した後WRITEでファイル出力したら何が出力されますか?

  • COBOLのデータ型

    こんばんわ。 現在研修をしており、COBOLの勉強をしております。 COBOLを他言語に置き換える作業を後に担当することになるようです。何の言語かは聞いておりません。勉強している中いくつかわからない点がでました。ご教授いただければと思います。 S9(6)というデータ型は符号ありの整数ということは調べました。 ファイルレコード内に上記のデータ型が存在し、出力ファイルを調べると「00000A」 という値が出力されていました。 ここでふと思ったのがAって何だ?と思いました。そもそも10進数なのか?という疑問が出て 調べるとゾーン10進数という特殊な数値のようです。 ゾーン10進数を調べても全然意味がわかりません。ゾーン部を○○とする!とかゾーン10進数の説明している記載がありますがCOBOLにはそんな記述ないし・・・ とまぁ私が知りたいのはS9(6)というデータ型をどう他言語(C言語)でどう実現しようかという内容がしりたいです。また「00000A」は実際の10進数ではどういう数値かというのも知りたいです。 以上、お手数ですがどうかよろしくお願い致します。

  • !!!「コボル」!!!教えてください!!!

    こんにちは! 今日ある会社のPGの面接にいってきました。 中途採用です。 言語はコボルを使うらしいことが求人票にかいてありました。私はまったくプログラミングの経験がありませんが、「必要経験等は特にありません」との表記がありましたので面接にいきました。ところが即戦力(もしくはある程度理解してる方)希望と言われました。そしてあなたの力を知りたいので課題を出します。といわれました。課題はまだ頂いていないのですが早速今から基礎の勉強をしようかと思っていますがまったくわからないので何からしていいのかわかりませんw初心者用の良いサイトご存知の方いらっしゃいましたら教えてください!あと質問がいくつかあります。よろしくお願いします!! 1、教えてgooのカテゴリにはなぜ、コボルの欄がないのでしょうか? 2、コボルって難しいですか? 3、コボルは時代遅れで廃れてると聞きますがほんとですか? よろしお願いします!

  • 【COBOL】小さい字を大きい字へ変換するサブルーチン

    とても久しぶりのCOBOLで参考書も無く困っています。 汎用系COBOLです。 マスタファイルのデータで小さい字(ャュョ)を含むデータを抽出して、大きい字(ヤユヨ)に変換するサブルーチンを作成したいのですが、どう作成したら良いのかわかりません。 何かいい書き方をご存知の方、よろしくお願いします。 サンプル的にプログラムを記入していただけるととても嬉しいです。

  • COBOL

    COBOLを使ってこんなプログラムを作りたいです トランザクションファイルに店コード 売り上げ (01 100万  01 100万  01 100万  02 120万  04 140万)などが入っている マスターファイルに店コード 店名が入っている (01 大阪店  02 名古屋店  03 札幌店  04 東京店)など この2つのファイルを使って以下のファイルを出力する方法を教えてください。 出力ファイル 店名 売り上げ (大阪店 100万円  大阪店 100万円  大阪店 100万円) 注意:出力ファイルには、一致するコードをすべて 出力するのではなく、01の大阪店のみをすべて出力したいです。 ●SERCHを使いたいです ~~~~~~~~~~~~~~~~~ SET IDX 1 SERCH □□□ AT END エラー処理 WHEN ○○○=△△△(IDX) これは、2つのファイルが一致するすべてを出力してしまいます。 求めたいのは、一部のコード(01)のときだけです。 どうすればいいですか? 前提として、トランザクションファイルをすべて読み込みます。 マスターファイルは、テーブルにすべて読み込みます。 ~~~~~~~~~~~~~ 自分の見解 SERCHをやってトランザクションファイルとマスターファイルとが一致するのを探して一致する場合、さらに01か判断するような感じになると思うんですが・・・ 実際に簡単にプログラムを書いていただけるとうれしいです。

  • プログラミングの勉強をするべきですか?

    現在高校3年です。進路はコンピュータの専門学校に進学して、将来コンピュータ関係の仕事に就きたいと考えています。そこで質問なのですが、やはりコンピュータ関係の仕事をするには、プログラミングができた方がいいのでしょうか?一度COBOLという言語を勉強してみたのですが、難しくてほとんど理解できませんでした。なので、プログラマーはちょっときびしいかなと思っています。プログラマー以外にはどんな仕事がありますか。教えてください。また、どんな資格を持っていた方がいいですか?できれば教えてください。お願いします。

専門家に質問してみよう