2009年04月17日

COBOLソースコードを読む SAMPLE08 無名項目を使う

なんか前の更新から間が開いてしまっていますが、今回も日付を表示するプログラムです。
*ここから
*無名項目を使う
IDENTIFICATION DIVISION.
*見出し部。
PROGRAM-ID. SAMPLE-08.
*-アイダホ州をプログラムしてください。 -08を抽出してください。
ENVIRONMENT DIVISION.
*環境整備課。
DATA DIVISION.
*データ部。
WORKING-STORAGE SECTION.
*作業場所節。
01 DATE-REC.
*01 日付-REC。
02 D-Y PIC 99.
*02 D-Y映画99。DはDATA。Yはyear(年)
02 D-M PIC 99.
*02 D-M映画99。Mはmonth(月)
02 D-D PIC 99.
*02 忌わしい映画99。忌わしい映画…。後のDはday(日)
01 EDIT-REC.
*01 編集-REC。
02 E-Y PIC 99.
*02 電子Y映画99。ここで今年は何年か編集してます。
02 PIC X(2) VALUE "年".
*02 映画X(2)は"年"を評価します。
02 E-M PIC 99.
*02 電子M映画99。ここで今月は何月か編集してます。
02 PIC X(2) VALUE "月".
*02 映画X(2)は"月"を評価します
02 E-D PIC 99.
*02 電子D映画99。ここで今日は何日か編集してます。
02 PIC X(2) VALUE "日".
*02 映画X(2)は"日"を評価します。

*
PROCEDURE DIVISION.
*手続き部。
MAIN.
*メイン。
ACCEPT DATE-REC FROM DATE
MOVE D-Y TO E-Y
MOVE D-M TO E-M
MOVE D-D TO E-D
DISPLAY EDIT-REC
STOP RUN.
*日付移動D-Yから電子Y移動D-Mまでの日付-RECを
*電子D表示編集-REC停止走行に忌わしい電子M移動
*に受け入れてください。


gms02c at 20:54|PermalinkComments(0)TrackBack(0)COBOL 

2009年03月28日

COBOLソースコードを読む SAMPLE07 日付の入力

これもある意味では定番ですね。今日の日付入力です。
*ここから
*日付を表示する
IDENTIFICATION DIVISION.
PROGRAM-ID. SAMPLE-07.
*
ENVIRONMENT DIVISION.
*
DATA DIVISION.
WORKING-STORAGE SECTION.
01 DATE-REC.
*この命令で日付を取得するのでしょうか?
02 D-Y PIC 99.
*ここを9999にして4桁にしてみましたが、「2009年」にはできません。
02 D-M PIC 99.
02 D-D PIC 99.
*
PROCEDURE DIVISION.
MAIN.
ACCEPT DATE-REC FROM DATE
DISPLAY D-Y "年" D-M "月" D-D "日"
STOP RUN.
*ここまで

このプログラムを実行すると、「09年03月28日」と出力されます。


gms02c at 22:17|PermalinkComments(0)TrackBack(0)COBOL 

2009年03月17日

COBOLソースコードを読む SAMPLE06 数値の入力

ようやく、実用的な(?)プログラムになります。今回のプログラムは、入力した数字「R」を半径とした円の面積を求めるプログラムです。

*ここから
*キーボードから値を入力する
IDENTIFICATION DIVISION.
*見出し部。
PROGRAM-ID. SAMPLE-06.
*アイダホ州にプログラムを作らせているサンプル-06。
ENVIRONMENT DIVISION.
*環境整備課。
DATA DIVISION.
*データ部。
WORKING-STORAGE SECTION.
*作業場所節。
01 PI PIC 9V99 VALUE 3.14.
*01 パイ映画9V99価値3.14。(円周率。Vは少数点を表すようです。
*およそ3ではないのです。)
01 R PIC 999V99.
*01 R映画999V99。
01 S PIC ZZZ9.99.
*01 S映画ZZZ9.99.
PROCEDURE DIVISION.
*手続き部。
MAIN.
*メイン。
DISPLAY "半径を入力してください"
ACCEPT R
*表示"半径を入力してください"はRを受け入れます
*(このACCEPTで、ユーザーに入力を要求できるのです。)
COMPUTE S = PI * R ** 2
DISPLAY "面積は " S
STOP RUN.
*パイ*R**2表示"面積は"S停止S=走行を計算してください。
*(3.14 X R X Rですね。R ** 2ではRを二回かけるということです。)
*ここまで


gms02c at 00:04|PermalinkComments(0)TrackBack(0)COBOL 

2009年03月09日

COBOLソースコードを読む SAMPLE05 VALUE句

VALUE句は文字列に定数を与える命令だそうですが、それだけなら
MOVE 数値 TO 文字列
とさほど変わらないような…?
*ここから
*VALUE句で初期値を指定する
IDENTIFICATION DIVISION.
*見出し部
PROGRAM-ID. SAMPLE-05.
*プログラム−ID SAMPLE-05
ENVIRONMENT DIVISION.
*環境整備課
DATA DIVISION.
*データ部
WORKING-STORAGE SECTION.
*作業場所節。
01 A PIC 9 VALUE 3.
*01 映画9値3。(1から9までの数字の3を代入するということ…だと思う。)
01 B PIC 9 VALUE 2.
*01 B映画9値2。(1から9までの数字の2を代入するということ…だと思う。)
01 C PIC ZZ9.
*01 C映画ZZ9.(ここは計算の答えが代入されます。ZZが9の前にきているので、百の位まで表示できます。
PROCEDURE DIVISION.
*手続き部。
MAIN.
*メイン。
COMPUTE C = A ** B
*C=*Bを計算してください。(**は何乗という計算です。)
DISPLAY A " の " B " 乗は " C
STOP RUN.
*"の"B"乗は"C停止走行を表示してください。
*ここまで

gms02c at 20:52|PermalinkComments(0)TrackBack(0)COBOL 

2009年03月03日

COBOLソースコードを読む SAMPLE043

SAMPLE-04は計算を行うプログラムです。
計算を行う命令は「COMPUTE」と言うようです。コンピューターは元々、計算機ですから、分かりやすい表現です。

*ここから
*計算する
IDENTIFICATION DIVISION.
*見出し部。
PROGRAM-ID. SAMPLE-04.
*プログラム−ID サンプル-04。
ENVIRONMENT DIVISION.
*環境整備課。
DATA DIVISION.
*データ部。
WORKING-STORAGE SECTION.
*作業場所節。
01 A PIC 9(3).
*01 映画9(3)。
01 B PIC 9(3).
01 B映画9(3)。
01 C PIC 9(3).
*01 C映画9(3)。(PICが映画??? なぜか「A PIC」のAだけ翻訳されません)
*ともかく、これでA,B,Cの三つの変数が設定されます。
PROCEDURE DIVISION.
*手続き部。
MAIN.
*メイン。
MOVE 16 TO A
MOVE 4 TO B
*Bへの移動16から移動4(なぜこんな約になる?Aに16、Bに4を代入します)
COMPUTE C = (A + B) * 2
*((A+B)X2を計算します。その答えがCです。)
DISPLAY "計算結果は " C
*(「計算結果は"C"」と表示します。
*もちろんCはAやBが変わればその計算結果のCも変動します。)
STOP RUN.
C=(+B)*2表示"計算結果は"C停止走行を計算してください。

gms02c at 23:20|PermalinkComments(0)TrackBack(0)COBOL 

2009年02月24日

COBOLソースコードを読む 編集項目を使う

SAMPLE03は、編集項目の使用です。
XとYという値を設定し、そこに数字を代入するのです。

*ここから
*編集項目を使う
IDENTIFICATION DIVISION.
*見出し部。
PROGRAM-ID. SAMPLE-03.
*アイダホ州にプログラムを作らせているサンプル-03。(もう突っ込むのはよそう…。)
ENVIRONMENT DIVISION.
*環境整備課。
DATA DIVISION.
*データ部。
WORKING-STORAGE SECTION.
*作業場所節。
01 X PIC 9(5).
*01 X映画9(5)。(今回のプログラムは「00500」と表示されます。)
01 Y PIC ZZZZ9.
*01 Y映画ZZZZ9。(Zは今回初登場。Zの数と同じ桁数を表示します。
*この場合は一万の桁、99,999まで表示できます。今回のプログラムでは「500」と表示されます。
*
PROCEDURE DIVISION.
*手続き部。
MAIN.
*メイン
MOVE 500 TO X Y
*X Yへの移動500(2つの変数に一度に代入できるんですね。)
DISPLAY "X の内容は " X
DISPLAY "Y の内容は " Y
STOP RUN.
*「Xの内容は」X表示「Yの内容は」Y停止走行を表示してください。
*(なんとなく分かるような、分からないような訳文ですね。)
*ここまで


gms02c at 00:36|PermalinkComments(0)TrackBack(0)COBOL 

2009年02月21日

COBOLソースコードを読む SAMPLE022

f25aa125.bmpなんとか、ブログ更新してます。
翻訳した(?)ソースコードは下に書くことにします。
()内は私のコメント(感想、ぼやき)です。
*ここから
*項目に値を入れるプログラムです。
IDENTIFICATION DIVISION.
*見出し部。
PROGRAM-ID. SAMPLE-02.
*アイダホ州にプログラムを作らせているサンプル-02。
*(だからアイダホ州って何だ?)

ENVIRONMENT DIVISION.
*環境整備課。
DATA DIVISION.
*データ部。(このあたりは前回と一緒です。)

WORKING-STORAGE SECTION.
*作業場所節。(作業場所は分かるが「節」って何?)
01 NUM PIC 9(3).
*01 ヌム映画9(3)。(01は意味が分かりません。
*(数字を変えてみたりしましたが、正常に動いていました。
*NUMは記号。数学のxやyです。ここに数値を代入するのです。
*他の文字を設定しても大丈夫です。)
*(PICが映画とは?)
*(9(3)1から9までの数字を3桁といった意味でしょうか?
*9を他の数字に変えるとプログラムが動かなくなります。
*(3)を多くすると桁数が増え、小さくすると減ります。)

PROCEDURE DIVISION.
*手続き部。
MAIN.
*メイン。
MOVE 256 TO NUM
*ヌムへの移動256(NUMに256を代入します。)
DISPLAY "NUM の内容は " NUM
*(「NUMの内容は」に続いて先ほど代入された数字が表示されます。)
STOP RUN.
*「ヌムの内容は」ヌムの停止走行を表示してください。
*ここまで


gms02c at 23:44|PermalinkComments(0)TrackBack(0)COBOL 

2009年02月18日

COBOLソースコードを読む

577be681.bmp最近は忙しかったり、モチベーションが下がったりでろくにコメントへの返事や更新もできていませんが、面白い物を見つけました。Cobolを手軽に試せるプログラミングソフト「YCobol」です。
作者様のサイト→http://akiyun.s53.xrea.com/
Cobolは1959年に開発された古い言語ですが、今でも官公庁や銀行などで使われています。それをインタプリントで簡単にためせるのが、このYCobolです。

早速、サンプルプログラム、その1を見ていきます。
*文字列の表示        約(Exciteより)
IDENTIFICATION DIVISION.   *見出し部。
PROGRAM-ID. SAMPLE-01.   *アイダホ州にプログラムを作らせているサンプル−01
*
ENVIRONMENT DIVISION. *環境整備課
*
DATA DIVISION. *データ部
*
PROCEDURE DIVISION. *手続き部。
MAIN. *メイン。
DISPLAY "YCobolの はじまり はじまり"
STOP RUN. *ディスプレイ「YCobolのはじまりはじま*り」は走行を止めます。

思わず翻訳してしまいましたが、この言語は普通の英語そっくりです。
上の5行はどうやら必ず書かなければならないようです。アイダホ州とは一体何を約したのでしょうか?

MAIN.はここからが本番だぞというようなメッセージのようです。
DISPLAYはなでしこで言う「と表示する。」と言ったところでしょうか?
STOP RUNはここでプログラムを終わるという事だと思われます。プログラムを閉じるという訳ではなさそうです。

正直、次の投稿がいつになるか分かりませんが何とかプログラムの学習を続けたいと思います。

gms02c at 21:08|PermalinkComments(0)TrackBack(0)COBOL 

2008年10月31日

完成せず

テストの点数を入力して、その合計点、平均点を出力するプログラムを作ったのですが、名前のかわりにqを入力すると終了するはずが、できません。
/*ここから*/
#include

struct test
{
char name[20];
int kokugo;
int sansu;
int rika;
int shakai;
int gokei;
};

struct test test1[100]; /*100人分のテストの点数を入れる*/

int input_test1(void);
void gokei_test1(int num);
void heikin_test1(int num);

int main(void)
{
int num;

num = input_test1();
gokei_test1(num);
heikin_test1(num);

return 0;
}

int input_test1(void)
{
int i, num = 0;

printf("テストのデータを入力して下さい");

for( i = 0; i < 100; i++ ){
printf("名前を入力して下さい");
printf("名前のかわりにqを入力すると作業終了します");
scanf("%s", test1[1].name);

if ( test1[i].name[0] == 'Q') break;

printf("国語の点数を入力して下さい");
scanf("%d", &test1[i].kokugo);
printf("算数の点数を入力して下さい");
scanf("%d", &test1[i].sansu);
printf("理科の点数を入力して下さい");
scanf("%d", &test1[i].rika);
printf("社会の点数を入力して下さい");
scanf("%d", &test1[i].shakai);
num++;
}

return num; /*入力したデータの数*/
}
/*各人の4科目の合計を計算*/
void gokei_test1(int num) //合計を計算する関数
{
int i;

for ( i = 0; i< num; i++ ) {
test1[i].gokei = test1[i].kokugo + test1[i].sansu
+ test1[i].rika + test1[i].shakai;
printf("% sの合計点は %d \n", test1[i].name,
test1[i].gokei);
}
}
/*テストを受けた人全体で4科目の平均点を計算する*/
void heikin_test1(int num)
{
float a = 0.0, b = 0.0, c = 0.0, d = 0.0;
int i;

for ( i = 0; i < num; i++ ) {
a = a + test1[i].kokugo;
b = b + test1[i].sansu;
c = c + test1[i].rika;
d = d + test1[i].shakai;
}

a = a / num;
b = b / num;
c = c / num;
d = d / num;

printf("国語の平均点は %6.2点\n", a);
printf("算数の平均点は %6.2点\n", b);
printf("理科の平均点は %6.2点\n", c);
printf("社会の平均点は %6.2点\n", d);

}
/*ここまで*/

qって誰だよ
qって誰だよ…。
qを入力したら終わるはずなんすけど。

gms02c at 20:48|PermalinkComments(1)TrackBack(0)C言語 

2008年07月11日

お久しぶりです

なでしこのプログラムは、今年二月に値札作成ソフトの改良版が却下されて以来、正直、やっていませんでした。評価されるためにやっていたのではないのにねえ…。
何か最近、ニコニコ動画でプログラミング講座の動画が多いようですが、それらを見ていたら、またやりたくなってきました。

【ニコニコ動画】プログラミングをしてみない? 第一回
なんか変なコメントが多いですが…。

gms02c at 02:12|PermalinkComments(0)TrackBack(0)