[µ{¦¡»y¨¥ COBOL 8X ¤¶²Ð]

¤@¡B»y¨¥ºc¦¨
¡@¥i¨Ï¥Î¦r²Å
¡@¡@1.¼Æ¦r 0-9
¡@¡@2.­^¤å¦r¥À»PªÅ¥Õ a-z A-Z ¤j¤p¼gªí¥Ü¬Û¦P·N¸q
¡@¡@3.¹Bºâ²Å¸¹ + - * / = < > ** (­¼¤è)
¡@¡@4.¨ä¥L²Å¸¹ $ . , ; " ' ( ) :
¡@«O¯d¦r
¡@µ{¦¡®v¦Û¼¶¦r
¡@¡@a-z A-Z - ©Òºc¦¨
¡@¡@ªø«× 1-30 ¦r¡A»Ý§t¤@­Ó­^¤å¦r¥À¡F¦ýµ{§Ç³¡¬q¦W¥i¥þ¬°¼Æ¦r
¡@¡@- ¤£¥i¥X²{¦b²Ä¤@©Î³Ì«á¤@¦r
¡@¡@¤j¤p¼gªí¥Ü¬Û¦P·N¸q¡A¤@¯ë²ßºD¤W¥Î¤j¼g
¡@©w¦r(°Ï¤À¬°«D¼Æ­È«¬©w¦r Nonnumeric Literals¡A¼Æ­È«¬©w¦r Numeric Literals
¡@¤ñÀÀ±`¼Æ Figurative Constants)
¡@¼h¦¸¸¹½X 01-49,44,77,88
¡@¡@¼h¦¸¶V§C¥Î¶V¤jªº¼h¦¸¸¹½X©w¸q
¡@¡@66 ªí¥Ü renames ¸ê®Æ¶µ
¡@¡@77 ªí¥Ü Independent Items ¨S¦³ÁõÄÝÃö«Yªº¸ê®Æ¶µ
¡@¡@88 ªí¥Ü Conditional Items ±ø¥ó¸ê®Æ¶µ
¡@PIC ¦r¦ê
¡@¡@¤å¦r«¬ A ALPHABETIC :PIC AAAAAAAA OR A(8)
¡@¡@¼Æ­È«¬ 9 NUMERIC :PIC 99999 OR 9(5)
¡@¡@¤å¼Æ«¬ X ALPHAMUMERIC :PIC XXXXX OR X(5)
¡@¡@½s¿è«¬ EDITED PIC :PIC $$$,$$9 OR PIC A(10)
¡@»yªk®æ¦¡²Å¸¹»¡©ú
¡@¡@1.­^¤å¦r¤j¼g¬°«O¯d¦r¡A¥[©³½u¬°ÃöÁä¦r¡A¥¼µe©³½u¬°¿ï¥Î¦r¡C
¡@¡@2.¥[ [] ¬°¿ï¾Ü©Ê¬q¸¨
¡@¡@3.¥[ {} ¬°¥²¿ï¨ä¤¤¤§¤@
¡@¡@4.¥[ {{}} ¨ä¤¤¥i­«½Æ¿ï¾Ü
¡@¡@5. = < > ¬Ò¬°¥²¼g¦r²Å
¡@¡@6.... ªí¥i­«½Æ«e¤Þ¶µ¥Ø

¤G¡B°ò¥»¬[ºc
¡@¥ÑÃѧO³¡ IDENTIFICATION DIVISION.
¡@¡@³]³Æ³¡ ENVIRONMENT DIVISION.
¡@¡@¸ê®Æ³¡ DATA DIVISION.
¡@¡@µ{§Ç³¡ PROCEDURE DIVISION.
¡@©Òºc¦¨
¤T¡Bµ{¦¡¼¶¼g
¡@¡@1-6 §Ç¸¹ ªÅ¥Õ
¡@¡@7 ¯S®í¼Ð°O * ªíµù¸Ñ
¡@¡@¡@- ³s±µ¤W¦æ
¡@¡@¡@D ©ó°£¿ù«Å§i¤Uµo¥Í§@¥Î
¡@¡@¡@/ ¦C¦L®É§@¸õ­¶±±¨î¥Î
¡@¡@8-11 A °Ï ³¡¦WDIVISION¡A¸`¦WSECTION¡A¬q¦W¡AFD,01,77 ¬Ò¥Ñ¦¹°Ï°_ÀY
¡@¡@12-72 B °Ï ¬qªº¤º®e¡A­z¥y¤º®e
¡@¡@73-80 R °Ï µ{¦¡¼Ð¥Ü¥Î
¥|¡BCOBOL¡@¥|³¡
¡@¡@4.1 ÃѧO³¡ IDENTIFICATION DIVISION.
¡@¡@¡@»yªk¡G
¡@¡@¡@¡@ID DIVISION.
¡@¡@¡@¡@PROGRAM-ID. ÀɮצW.
¡@¡@¡@¡@[AUTHOR.]
¡@¡@¡@¡@[INSTALLATION.]
¡@¡@¡@¡@[DATE-WRITTEN.]
¡@¡@¡@¡@[DATE-COMPILED.]
¡@¡@¡@¡@[SECURITY.]
¡@¡@¡@¡@[REMARKS.]

¡@¡@4.2 ³]³Æ³¡ ENVIRONMENT DIVISION. note:­^¤å¤j¼gªíÃöÁä¦r
¡@¡@¡@»yªk¡G ¤p¼g ¿ï¥Î¦r
¡@¡@¡@¡@ENVIRONMENT DIVISION. ¤¤¤å ³]­p®v¦Û¥Î¦r
¡@¡@¡@¡@[CONFIGURATION SECTION.]
¡@¡@¡@¡@[INPUT-OUTPUT SECTION.]
¡@¡@¡@¡@[FILE-CONTROL.]
¡@¡@¡@¡@[I-O-CONTROL.]
¡@¡@¡@ÀÉ®×±±¨î¬q
¡@¡@¡@¡@FILE-CONTROL.
¡@¡@¡@¡@SELECT ¸ê®ÆÀɦW ASSIGN TO ¾Þ§@¤è¦¡ ¥~³¡ÀɦW
¡@¡@¡@¡@[ORGANIZATION ¤l¥y]
¡@¡@¡@¡@[ACCESS ¤l¥y]
¡@¡@¡@¡@[RECORD key ¤l¥y]
¡@¡@¡@¡@[file STATUS ¤l¥y]
¡@¡@¡@¡@¡@note:¡@SELECT ‘ô ³]©w¥~³¡¸ê®ÆÀɦW
¡@¡@¡@¡@¡@¡@¡@¡@ASSIGN ‘ô ¬°«ü©w¸ê®ÆÀɦW©Ò¦bªº´C¤¶Åé
¡@¡@¡@¾Þ§@¤è¦¡‘ô ÀÉ®×¾Þ§@¤è¦¡¡A¦pINPUT,OUTPUT,RANDOM,PRINT,PRINTER
¡@¡@¡@¡@INPUT-OUTPUT
¡@¡@¡@¡@ORGANIZATION is { BINARY } SEQUENTIAL. ‘ô ´y­z¸ê®ÆÀɵ²ºc
¡@¡@¡@¡@{ LINE }

¡@¡@4.3 ¸ê®Æ³¡ DATA DIVISION.
¡@¡@¡@»yªk¡G
¡@¡@¡@¡@DATA DIVISION.
¡@¡@¡@¡@[FILE SECTION.] //Àɮ׸` ´y­z¸ê®ÆÀɤ¤¨C¤@°O¿ýªº¸ê®Æ¦WºÙ¡A§Î¦¡¤Îªø«×
¡@¡@¡@¡@[WORKING-STORAGE SECTION.] //¤u§@¼È¦s¸` ³B²z¹Lµ{¤¤¼È®É©Ò»Ýªº¸ê®Æ¶µ
¡@¡@¡@¡@[LINKAGE SECTION.] //³s±µ¸` µ{¦¡¶¡©Ò»Ý¶Ç¿éªº¦U¶µ¸ê®Æ
¡@¡@¡@¡@[SCREEN SECTION.] //¿Ã¹õ¸` ¿Ã¹õ¤W¦U¶µ¸ê®Æªº¦WºÙ¦ì¸m¤Î¬ÛÃö¯S©Ê

¡@¡@4.4 µ{§Ç³¡ PROCEDURE DIVISION.
¡@¡@¡@¡@³B²zÅÞ¿è©Ò»Ýªº COBOL ±Ô­z¡A¤À¬q¤£¤À¸`¡C

¤­¡B¸ê®Æ³¡
¡@¡@5.1 Àɮ׸` FILE SECTION.
¡@¡@¡@¥]§t´y­zÀÉ®×¼h¦¸ªºÀÉ®×´y­z¥y(FILE DESCRIPTION ENTRY)
¡@¡@¡@´y­z°O¿ý¤º®eªº°O¿ý´y­z¥y(RECORD DESCRIPTION ENTRY)

¡@¡@5.1.1 ÀÉ®×´y­z¥y
¡@¡@¡@¡@FD ¤º³¡ÀɦW // FD FILE DESCRIPTION
¡@¡@¡@¡@[LABEL RECORD ¤l¥y]
¡@¡@¡@¡@[RECORD contains ¤l¥y]
¡@¡@¡@¡@[BLOCK contains ¤l¥y]
¡@¡@¡@¡@* [DATA RECORD ¤l¥y]
¡@¡@¡@¡@¡@¤º³¡ÀɦW‘ô ²ºÙÀɮצWºÙ¡A¬°µ{¦¡®v¦Û³]¦r¡C
¡@¡@¡@¡@¡@»Ý©ó ENVIRONMENT DIVISION.¤¤ INPUT-OUTPUT SECTION.¤¤ FILE-CONTROL.¤º¥H SELECT ©w¸q¡C
¡@¡@»yªk¸Ô¤¶¡G
¡@¡@¡@LABEL { RECORD is } { OMITTED | STANDARD }
¡@¡@¡@{ RECORDS are }
¡@¡@¡@// OMITTED ¤£¨Ï¥Î¼ÐÅÒ°O¿ý
¡@¡@¡@// STANDARD¨Ï¥Î¹q¸£¼Ð·Ç¼ÐÅÒ°O¿ý

¡@¡@¡@RECORD contains ¾ã¼Æ [characters]
¡@¡@¡@// ¨C¤@ÅÞ¿è°O¿ýªºªø«×

¡@¡@¡@BLOCK contains ¾ã¼Æ { RECORDS | characters }
¡@¡@¡@// ¨C¤@ block ©Ò§tÅÞ¿è°O¿ý©Î¦r¤¸­Ó¼Æ

¡@¡@¡@* DATA { RECORD is | RECORDS are } ¸ê®Æ¦WºÙ-1,...
¡@¡@¡@// °O¿ý¦WºÙ¡A¦ý¥»¶µ¥i¬Ù²¤¤£¼g

¡@¡@5.1.2 °O¿ý´y­z¥y
¡@¡@¡@99 { ¸ê®Æ¦WºÙ | FILLER } [ { PICTURE | PIC } pic-string ¤l¥y ]
¡@¡@¡@[ VALUE ¤l¥y ] [ REDEFINES ¤l¥y ]
¡@¡@¡@[ OCCURS ¤l¥y ] [ USAGE ¤l¥y ]
¡@¡@¡@[ BLANK WHEN ZERO ¤l¥y ]
¡@¡@¡@// 99 ¼h¦¸¸¹½X
¡@¡@¡@// ¸ê®Æ¦WºÙ FIELD NAME
¡@¡@¡@// FILLER ¦@¥Î¸ê®Æ¦WºÙ

¡@¡@¡@PIC pic-string
¡@¡@¡@// pic-string ®æ¦¡¡G
¡@¡@¡@1. ¼Æ­È§Î 9 0-9 ¨C¤@ '9' ¦û 1 BYTE
¡@¡@¡@V ¹ê¼Æ¸ê®Æ¤¤¤p¼ÆÂI¦ì¸m ¤£¦û°O¾ÐÅéªÅ¶¡
¡@¡@¡@S ¹ê¼Æ¸ê®Æ¤¤§t¦³¥¿­t¸¹­È ¤£¦û°O¾ÐÅéªÅ¶¡

¡@¡@¡@¸ê®Æ¦WºÙ-1 REDEFINES ¸ê®Æ¦WºÙ-2
¡@¡@¡@// ¤£¦P¸ê®Æ¦WºÙ§t¦³¬Û¦P­È¡A¦@¥Î¦P¤@¦ì§}¡C

¡@¡@¡@OCCURS // ©w¸qªí®æºû¼Æ

¡@¡@¡@BLANK WHEN ZERO // ±N¸ê®Æ¶µ¥Ø¬°¹s®É¡A¥HªÅ¥Õ¨ú¥N

¡@¡@¡@USAGE // «ü©w¸ê®Æ¶µ¥ØªºÀx¦s¤è¦¡¡A¹w³]­È¬° DISPLAY
¡@¡@¡@¼Ð·ÇÀx¦s®æ¦¡¡A¨C¤@¼Æ¦r 1 BYTE¡A­ì ASCII ½XÀx¦s®æ¦¡

¡@¡@¡@VALUE ©w¦r //¾A¥Î©ó¿W¥ß¶µ¥Ø©Î¬O±ø¥ó¦WºÙ(88)¤¤µ¹©wÅܼƪì­È
¡@¡@¡@//¤@¯ë¨Ó»¡¤£¯à¥X²{¦b FILE SECTION. ¤¤

¡@¡@5.2 ¤u§@¼È¦s¸` WORKING-STORAGE SECTION.
¡@¡@¡@¥ô¦ó¤£ÄÝ©óÀɮ׸ê®Æ¡A¦Ó¬°¨t²Î³B²z©Ò»Ýªº¸ê®Æ¦WºÙ©Î¨ä¥L¼È®É©Êªº¸ê®Æ¦WºÙ³£¥²¶·¦b¦¹¸`©w¸q¡C

¤»¡B½d¨Ò °²³]¥HºÖ§Q¯¸ªº®w¦s°µ¥Ü½d¡G

¿é¤JÀÉ®æ°O¿ý¦¡ ¿é¥XÀɮ榡
1-4 ¸¹½X 1-4 ½s¸¹
5-24 ¦WºÙ 7-26 ¦WºÙ
25-29 ¶i»ù 29-33 ¤W¤ë®w¦s
29-33 ¾P»ù 36-44 ¤W¤ë®w¦sª÷ÃB
47-51 ¥»¤ë¶i³f
54-61 ¥»¤ë¶i³fª÷ÃB
64-68 ¥»¤ë¾P³f
71-78 ¥»¤ë¾P³fª÷ÃB
81-85 ¥»¤ë®w¦s
88-95 ¥»¤ë®w¦sª÷ÃB
98-105 ¶i¾P®t»ù
*µ{¦¡¶}©l
ID DIVISION.
PROGRAM-ID. STOCK.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT IMPORT-FILE ASSIGN TO INPUT "ITEM.DAT".
SELECT REPORT-FILE ASSIGN TO OUTPUT "SALES.DAT".
*¸ê®Æ³¡
DATA DIVISION.
*ÀÉ®×´y­z¸`
FILE SECTION.
*ÀÉ®×´y­z¥y
FD IMPORT-FILE.
*°O¿ý´y­z¥y
01 ITEM-RECORD.
05 ITEM-NO PIC 9(4).
05 ITEM-NAME PIC X(20).
05 IMPORT-PRICE PIC 9(2)V9(2).
05 SALE-PRICE PIC 9(2)V9(2).
FD REPORT-FILE.
01 SALE-COUNT.
05 ITEM-NO PIC 9(4).
05 ITEM-NAME PIC X(20).
05 LAST-STOCK PIC 9(5).
05 LAST-STOCK-COUNT PIC 9(6)V9(2).
05 THIS-IMPORT PIC 9(5).
05 THIS-IMPORT-COUNT PIC 9(6)V9(2).
05 THIS-SALE PIC 9(5).
05 THIS-SALE-COUNT PIC 9(6)V9(2).
05 THIS-STOCK PIC 9(5).
05 THIS-STOCK-COUNT PIC 9(6)V9(2).
*µ{§Ç³¡
PROCEDURE DIVISION.
MAIN.
.
.
.