Skip to content

Instantly share code, notes, and snippets.

@akisute
Last active August 29, 2015 14:03
Show Gist options
  • Save akisute/3d1a7bbc2cc3eb290910 to your computer and use it in GitHub Desktop.
Save akisute/3d1a7bbc2cc3eb290910 to your computer and use it in GitHub Desktop.
昔見かけた伝統芸能、プログラムコードは http://people.sju.edu/~jhodgson/cobol/sample.html からお借りしました
* ***************************************************************
* プログラムID SSCD01
* 機能名 S社詳細帳票出力01
* 開発担当者 株式会社akisute
* あきすてさま
* 初版 2004/06/28
*
* 変更履歴
* 2004/06/28 変更者 あきすてさま
* 初版作成。
*
* 2004/07/02 変更者 あきすてさま
* テーブル形式 XXXXマスタのカラム長を4byteから8byteに変更。
* コメントの変更。
*
* 2004/07/04 変更者 あきすてさま
* コメントの変更。
*
* 2014/06/28 変更者 akisute
* 当時の開発規約ないし命名規約を追記。
* コメントの変更。
*
* 以下これが3〜4年分程度、だいたいエディタ3〜4画面程度続く。
*
* ***************************************************************
000010 IDENTIFICATION DIVISION.
000020 PROGRAM-ID. SSCD01.
000030
000040 DATE-WRITTEN. 4 February 2004
000050 ENVIRONMENT DIVISION.
000060 INPUT-OUTPUT SECTION.
000070 FILE-CONTROL.
000080 SELECT CHSS01-FILE ASSIGN TO SYSIN
000090 ORGANIZATION IS LINE SEQUENTIAL.
000100 SELECT PRINT-FILE ASSIGN TO SYSOUT
000110 ORGANIZATION IS LINE SEQUENTIAL.
000120
000130 DATA DIVISION.
000140 FILE SECTION.
000150 FD CHSS01-FILE
000160 RECORD CONTAINS 43 CHARACTERS
000170 DATA RECORD IS CHSS01-IN.
000180 01 CHSS01-IN PIC X(43).
000190
000200 FD PRINT-FILE
000210 RECORD CONTAINS 80 CHARACTERS
000220 DATA RECORD IS PRINT-LINE.
000230 01 PRINT-LINE PIC X(80).
000240
000241 SQL SECTION.
000242* 確か独自拡張でSQLの記述が可能だったような気がします。
000243* SQL SECTIONみたいなのがDATA DIVISIONにあって、
000244* そこにテーブル定義のSQLが生で書いてあったような。
000245* 詳細はぜんぜん覚えてません><
000249
000250 WORKING-STORAGE SECTION.
000251* これ拾ってきたコードなのでそれっぽい変数名になっているのですが、
000252* 実際のコードはすべての変数名は6文字ピッタリでした。SSCTMPとかSSCIN1とか。
000253* 先頭3文字が部署・モジュール名・用途(帳票出力・バッチ・画面など)を表し、
000254* 後ろの3文字が自由に使っていいルールだった気がします。
000260 01 DATA-REMAINS-SWITCH PIC X(2) VALUE SPACES.
000261 01 RECORDS-WRITTEN PIC 99.
000270
000280 01 DETAIL-LINE.
000290 05 FILLER PIC X(7) VALUE SPACES.
000300 05 RECORD-IMAGE PIC X(43).
000310 05 FILLER PIC X(30) VALUE SPACES.
000311
000312 01 SUMMARY-LINE.
000313 05 FILLER PIC X(7) VALUE SPACES.
000314 05 TOTAL-READ PIC 99.
000315 05 FILLER PIC X VALUE SPACE.
000316 05 FILLER PIC X(17)
000317 VALUE 'Records were read'.
000318 05 FILLER PIC X(53) VALUE SPACES.
000319
000320 PROCEDURE DIVISION.
000321
000330 PREPARE-SENIOR-REPORT.
000340 OPEN INPUT CHSS01-FILE
000350 OUTPUT PRINT-FILE.
000351 MOVE ZERO TO RECORDS-WRITTEN.
000360 READ CHSS01-FILE
000370 AT END MOVE 'NO' TO DATA-REMAINS-SWITCH
000380 END-READ.
000390 PERFORM PROCESS-RECORDS
000410 UNTIL DATA-REMAINS-SWITCH = 'NO'.
000411 PERFORM PRINT-SUMMARY.
000420 CLOSE CHSS01-FILE
000430 PRINT-FILE.
000440 STOP RUN.
000450
000460 PROCESS-RECORDS.
000470 MOVE CHSS01-IN TO RECORD-IMAGE.
000480 MOVE DETAIL-LINE TO PRINT-LINE.
000490 WRITE PRINT-LINE.
000500 ADD 1 TO RECORDS-WRITTEN.
000510 READ CHSS01-FILE
000520 AT END MOVE 'NO' TO DATA-REMAINS-SWITCH
000530 END-READ.
000540
000550 PRINT-SUMMARY.
000560 MOVE RECORDS-WRITTEN TO TOTAL-READ.
000570 MOVE SUMMARY-LINE TO PRINT-LINE.
000571 WRITE PRINT-LINE.
000572
000580
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment