【COBOL 読み1-7】夢の国と男闘呼組〜MOVEと日付の冒険〜

今日のコード

    INIT.
           MOVE FUNCTION CURRENT-DATE TO CD-RAW.
           *>  YYYYMMDDHHMMSS+TZ など21桁想定
           MOVE CD-RAW(1:4)  TO CD-YYYY
           MOVE CD-RAW(5:2)  TO CD-MM
           MOVE CD-RAW(7:2)  TO CD-DD
           MOVE CD-RAW(9:2)  TO CD-HH
           MOVE CD-RAW(11:2) TO CD-MN
           MOVE CD-RAW(13:2) TO CD-SS
目次

INIT ― ここから始まる物語

なるお)いきなりわからん。なめてんのかこれ!

むー INITはラベルだっけ?

係長)お、いいところに気づいたな。
そのとおり、INIT. はラベル(段落名)だ。

COBOL ではラベルの後ろに 「. 」を付けて「ここから始まる手続きのまとまりですよ」って宣言してる。

以前のここのコード

MAIN.
  PERFORM INIT
  PERFORM PROCESS-LOOP
  PERFORM FINISH
  STOP RUN.

この中に「PERFORM INIT」があるが、プログラムは「INIT. ってラベルのついたとこまで飛んで処理してこい」ってなる。

つまり「名前付きの処理ブロック」って理解でOKだ。

な)それはいいんすけど、

 MOVE FUNCTION CURRENT-DATE TO CD-RAW.

MOVE は動く?何が?誰が?私とあなたが夢の国?

主語なさすぎじゃないっすか?
俺は論理的な話をするためにこの会社に入ったのに。その望みすら叶えられないなんて!

係) 「MOVE X TO Y」=「XをYに入れる」 だ。

MOVE FUNCTION CURRENT-DATE TO CD-RAW

これは「システム日付を CD-RAW に入れろ」って意味。
FUNCTION CURRENT-DATE ってのは COBOLに最初から用意されてる組み込み関数で、「今のシステム日時」を文字列として返してくれるんだ。

な)いや、望み…

係)それがこのコメント部分になる

YYYYMMDDHHMMSS+TZ

年月日時分秒で、TZがタイムゾーンだ。

な)男闘呼組っすか?

係)あん?(ギロリ)

な)そんなに睨まなくても…

21桁の真実と男闘呼組の呪い

ゴホン
では、コメントの21桁想定ってなんですか。
システムが返してくれるなら、一定値になるのでは?

嘘つきたぬきがまた山から降りてきました?

係)だから俺のこと言ってんじゃねーだろうな。

COBOLの処理系(メーカーやバージョン)ごとに、FUNCTION CURRENT-DATE が返す文字列の中身がちょっと違うんだよ。

例えば、こうだな

20250926094530+0900

+0900 は日本のタイムゾーンな。

別のだとこう。

20250926094530.123+0900

ミリ秒やマイクロ秒がついているパターンとかあって、桁数が変わるって話。

だからこのゆらぎを考えて21桁想定しておけば大丈夫だろうというところだ。

な)へー

           MOVE CD-RAW(1:4)  TO CD-YYYY

次のこれはワンダフルコードですけど、なんですこれ。

MOVE で TO なのはわかったけど、1:4とか新たなる挑戦を受けてる感じがします。
係長ぐらいだと、道場破りとか行ってたんですか?

係)また余計なことを…

CD-RAW (1:4) ってのはな、「CD-RAW の 1文字目から4文字分」 って意味だ。
要は「部分切り出し」

MOVE CD-RAW(1:4) TO CD-YYYY

って書いたら、

CD-RAW の先頭4文字(例: “2025”)を CD-YYYY にコピーする。

な)おおー!じゃあ (5:2) は?

係)「5文字目から2文字分」だ。

つまり “MM” のとこだけ抜き出して CD-MM に入れてる。

おむすび

な)ま、実は、わかってましたけどね!

できる部下としては、係長のメンツを保たないといけないから、全然わかんなーい、みたいなふりしてましたけどね!

係)じゃ、もうお前のこと無視していいんだよな。

さっさと一人で外回りいって、調整してこいよ。

な)いやぁ!怒らないでー!!かわいい部下演じますからー!!

係)演じてんじゃねーよ!

― 目次(読みシリーズ)へ戻る ―

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次