1. COBOLãšã¯
ããã°ã©ãã³ã°ã®äžçã«ã¯å€ãã®èšèªãååšãããã®äžã€ã«é¡èãªååšæãæŸã€ã®ãCOBOLã§ããCOBOLã¯ããã®ç¬ç¹ã®ç¹æ§ãšãé·ãæŽå²ããçã¿åºãããå®çžŸã§ãçŸåšã§ãå€ãã®æ¥çã«ãããŠæŽ»èºããŠããŸãã
1.1 COBOLã®æŠèŠ
COBOLã¯Common Business-Oriented Languageã®ç¥ã§ãçŽèš³ãããšãå ±éããžãã¹æåèšèªããšãªããŸããããã¯ãCOBOLãããžãã¹åŠçãç¹ã«ã倧éã®ããŒã¿ãæ±ãããšãã£ãåçšã³ã³ãã¥ãŒã¿ã®çšéã«ç¹åããŠèšèšãããããã°ã©ãã³ã°èšèªã§ããããšãç©èªã£ãŠããŸãã
ãã®ãããªç¹æ§ãããäž»ã«éè¡ãä¿éºãå ¬å ±æ©é¢ãšãã£ã倧èŠæš¡ãªããŒã¿ã®åãæ±ãã䌎ãæ¥çã§æŽ»çšãããŠããŸãããŸãããã®èªã¿ãããããé·æéã«ããããœãããŠã§ã¢ã®ã¡ã³ããã³ã¹ã«å¯Ÿå¿ããããã®ããŒã«ãšããŠãéžã°ããããšãå€ãã§ãã
1.2 COBOLã®æŽå²ãšç¹åŸŽ
COBOLã¯ã1959幎ã«ã¢ã¡ãªã«åœé²ç·çã«ãã£ãŠéçºãéå§ãããŸããã人éãçŽæçã«ç解ããããèªç¶èšèªã«è¿ãææ³ãæã€ããšãããéããã°ã©ãã§ãæ¯èŒççæéã§ç¿åŸã§ããŸãããããŠãããã¹ãŠã®ããã°ã©ã ã¯ã人éããã®åäœãæ確ã«ç解ã§ããããã«èšè¿°ãããªããã°ãªããªãããšãã䞻矩ã®ããšã人éäžå¿ã®å²åŠããã£ãŠéçºãããŸããã
ãã®ç¹åŸŽã®äžã€ã«ããã¬ã³ãŒãæåããæããããŸããããããè¡ã¬ã³ãŒããšåŒã°ãããããŒãã«ã®è¡ã®ãããªããŒã¿æ§é ãçŽæ¥æäœããããšãã§ããŸããããã¯ãããžãã¹ã¢ããªã±ãŒã·ã§ã³ã倧éã®ã¬ã³ãŒããå¹çããåŠçããã®ã«é©ããŠããããã®ããã«COBOLãéè¡ãä¿éºäŒç€Ÿãªã©ã§åºã䜿çšãããçç±ã®äžã€ã§ãã
ãŸããCOBOLã¯ãã®å ç¢æ§ããã50幎以äžã®é·ãã«ãããæ¥çã§äœ¿çšããç¶ããŠããããã®ä¿¡é Œæ§ã¯åºãèªããããŠããŸãã
2. COBOLéçºç°å¢ã®æºå
COBOLã®ããã°ã©ãã³ã°ãå§ããåã«ããŸãã¯é©åãªéçºç°å¢ã®æºåãå¿ èŠã§ããéçºç°å¢ãšã¯ãããã°ã©ã ãæžããå®è¡ããããã®ç°å¢ã®ããšã§ãã
2.1 éçºç°å¢ã«å¿ èŠãªãã®
åºæ¬çã«ãCOBOLéçºç°å¢ãæŽããããã«ã¯ä»¥äžã®3ã€ã®èŠçŽ ãå¿ èŠãšãªããŸãã
1. ããã¹ããšãã£ã¿
2. COBOLã³ã³ãã€ã©
3. ã¿ãŒããã«ïŒã³ãã³ãããã³ããïŒ
ããã¹ããšãã£ã¿ã¯ãã³ãŒããæžãããã®ãã®ã§ãã¡ã¢åž³ããµãŒãããŒãã£è£œã®ãšãã£ã¿ãŒïŒSublime TextãVSCodeãªã©ïŒã䜿çšã§ããŸããäœã䜿ã£ãŠãè¯ãã®ã§ãããè€æ°ã®ãã¡ã€ã«ãéããããããã°ã©ãã³ã°èšèªã«ç¹åããã·ã³ã¿ãã¯ã¹ãã€ã©ã€ãïŒè²ä»ãïŒæ©èœããããšãã£ã¿ãŒãå©çšãããšäŸ¿å©ã§ãã
次ã«COBOLã³ã³ãã€ã©ã¯ãæžãããœãŒã¹ã³ãŒããæ©æ¢°èªã«å€æããããã®ãã®ã§ããããããªããšCOBOLããã°ã©ã ã¯å®è¡ã§ããŸããã
æåŸã«ã¿ãŒããã«ã¯ãã³ãã³ãã©ã€ã³ããCOBOLã³ã³ãã€ã©ãæäœããããã°ã©ã ãå®è¡ããããã®ãã®ã§ããWindowsãªããã³ãã³ãããã³ãããããPowerShellããMacãªããTerminalãã¢ããªã±ãŒã·ã§ã³ã該åœããŸãã
2.2 COBOLã³ã³ãã€ã©ã®ã€ã³ã¹ããŒã«æ¹æ³
éçºç°å¢ã«ã¯ããã€ãã®COBOLã³ã³ãã€ã©ããããŸãããä»åã¯ç¡æã§äœ¿ãããGnuCOBOLããäŸã«ã³ã³ãã€ã©ã®ã€ã³ã¹ããŒã«æé ã説æããŸããGnuCOBOLã¯ãªãŒãã³ãœãŒã¹ã§ãWindowsãMacãLinuxãªã©ã®OSã«å¯Ÿå¿ããŠããŸãã
WindowsãŠãŒã¶ãŒã®å ŽåãSourceForgeããã€ã³ã¹ããŒã©ãŒãããŠã³ããŒãããŠå®è¡ããã°OKã§ããMacãLinuxãŠãŒã¶ãŒã¯ãã¿ãŒããã«ã§ä»¥äžã®ã³ãã³ããå®è¡ããã°ã€ã³ã¹ããŒã«ã§ããŸãã
$ sudo apt-get update $ sudo apt-get install open-cobol
2.3 éçºç°å¢ã®èšå®
ã³ã³ãã€ã©ã®ã€ã³ã¹ããŒã«ãçµããã°ãããšã¯ããã¹ããšãã£ã¿ãèšå®ããã ãã§ãããšãã£ã¿ã«ãã説æã¯å€ããªããããããã§ã¯VSCodeãäŸã«èª¬æããŸããVSCodeãªããCOBOLããæ€çŽ¢ãããšãCOBOLãµããŒãã®æ¡åŒµæ©èœãèŠã€ãããŸãããããã€ã³ã¹ããŒã«ããã°ãCOBOLã®æ§æãã€ã©ã€ããèªåè£å®ãå©çšã§ããããã«ãªããŸãã
ããã§COBOLéçºç°å¢ã®æºåã¯å®äºã§ãã次ã®ç¯ããã¯ãå®éã«ããã°ã©ã ãæžããŠãããŸãããã
3. åããŠã®COBOLããã°ã©ã
COBOLã«è§ŠããåããŠã®æ¹ã¯ãŸãããã®åºæ¬çãªææ³ããå§ããŸããããCOBOLã®åºæ¬çãªææ³ã¯ä»ã®ããã°ã©ãã³ã°èšèªãšå€§ããã¯ç°ãªããªãã®ã§ãããã°ã©ãã³ã°ã®çµéšããã人ã«ãšã£ãŠã¯ãããã«ç解ã§ããã§ãããã
3.1 ææ³ã®åºæ¬
COBOLã®ããã°ã©ã ã¯ãåå²ããšåŒã°ãã4ã€ã®éšåã«åããŠæžãããŸãããã®4ã€ã¯èå¥éšåãç°å¢éšåãããŒã¿éšåãæç¶ãéšåã§ãããããã¯ããããç¹å®ã®ç®çãæãããäžã€ã®ããã°ã©ã å ã§é£æºããŠåäœããŸãã
ããã«COBOLã¯ããã®ææ³ãè±èªã«è¿ã圢ã§èšèšãããŠããããMOVEãããADDãããSUBTRACTããªã©ã®è±èªã®åèªã䜿ã£ãŠåœä»€ãæžããŸããããã«ãããã³ãŒããäžèªããã ãã§ãã®åŠçå 容ãæšæž¬ããããããšããç¹åŸŽããããŸãã
3.2 ã¯ãããŠã®ããã°ã©ã äœæ
ããã§ã¯ãå®éã«ç°¡åãªCOBOLã®ããã°ã©ã ãæžããŠã¿ãŸããããããã§ã¯ããHello, World!ããšç»é¢ã«åºåããããã°ã©ã ãäœæããŸããæ £ç¿ãšããŠãã»ãšãã©ã®ããã°ã©ãã³ã°èšèªã®æåã®ããã°ã©ã ãšããŠããHello, World!ããšåºåãããã®ãããçšããããŸãã
IDENTIFICATION DIVISION. PROGRAM-ID. Hello. PROCEDURE DIVISION. DISPLAY "Hello, World!". STOP RUN.
äžèšã®COBOLããã°ã©ã ã¯æšæºåºåã«ãHello, World!ããåºåããã·ã³ãã«ãªãã®ã§ãã
3.3 ããã°ã©ã ã®å®è¡ãšçµæã®ç¢ºèª
ããã°ã©ã ãæžãããã次ã«ãã®å®è¡æ¹æ³ã«ã€ããŠã§ãããŸããããã¹ããšãã£ã¿ã§äžèšã³ãŒããæã¡èŸŒã¿ããhello.cobããªã©ã®ååã§ä¿åããŸãããããããŠCOBOLã®ã³ã³ãã€ã©ã䜿çšããŠä¿åãããã¡ã€ã«ãã³ã³ãã€ã«ããŸãã
ã³ã³ãã€ã«ãæåããããçæãããå®è¡ãã¡ã€ã«ãèµ·åããŸãããã®çµæããHello, World!ããšããæååãç»é¢ã«è¡šç€ºãããã°ãåããŠã®ããã°ã©ã ã®äœæã¯æåã§ãã
ãããã®ã¹ããããéããŠãCOBOLã®åºæ¬çãªããã°ã©ãã³ã°ã®æµãããã¿åãããšãã§ããŸãããã ãããããæœè±¡çãªæŠå¿µãšæ çµã¿ããå ·äœçãªã³ãŒããžãšç§»è¡ããããšã§ãçè«ãäœéšãšçµã³ã€ããããæ·±ãç解ãžãšã€ãªããã®ã§ãã
4. COBOLã®åºæ¬çãªæ§æ
ã³ã³ãã¥ãŒã¿ãŒã«æ瀺ãåºããç¹å®ã®ã¿ã¹ã¯ãè¡ãããã«ã¯ããã°ã©ãã³ã°èšèªãçšããŸããããã°ã©ã ã¯ç¹å®ã®æ§æãšèŠåã«åŸãå¿ èŠãããããã®ã»ã¯ã·ã§ã³ã§ã¯COBOLã®åºæ¬çãªæ§æã«ã€ããŠèª¬æããŸãã
4.1 ããŒã¿åãšå€æ°
ããŒã¿åã¯ããããã®å€æ°ãå®æ°ã®åœ¢ãå®çŸ©ããŸããCOBOLã§ã¯äž»ã«æ°å€ãæååãæ±ããããæ°å€å(æŽæ°ãå°æ°ãªã©ïŒãšæåååãçšæãããŠããŸããæ°å€åã¯èšç®ã«äœ¿ãããæåååã¯ããã¹ããæ ŒçŽããŸãã
å€æ°ã¯ããã°ã©ã ãåäœããŠããéãå€ãä¿åãããåç §ãããããããã®ååä»ãã®ã¡ã¢ãªé åã§ããäžåºŠå®çŸ©ããå€æ°ã«ã¯ãæ°ããå€ãç¹°ãè¿ãä»£å ¥ããããšãã§ããŸããå€æ°ã®å®çŸ©ã¯DATA DIVISIONå ã§è¡ãããäŸãã°01ãšããã¬ãã«çªå·ãã€ããé ç®åãçšããŸãã以äžã«ç°¡åãªäŸã瀺ããŸãã
01 MY-VARIABLE PIC 9(5).
äžèšã®äŸã§ã¯ãMY-VARIABLEãšããååã®å€æ°ãå®çŸ©ããããã«ã¯æ倧5æ¡ã®æ°å€ãæ ŒçŽå¯èœãªããŒã¿åãæå®ããŠããŸãã
4.2 æŒç®åãšèšç®åŒ
COBOLã¯æ°åŠçãªèšç®ãè¡ãããã«äœ¿çšã§ããæ§ã ãªæŒç®åãæäŸããŠããŸãããã®ä»£è¡šçãªãã®ã«ã+ãïŒãã©ã¹ãå ç®)ãã-ãïŒãã€ãã¹ãæžç®ïŒãã*ãïŒã¢ã¹ã¿ãªã¹ã¯ãä¹ç®)ãã/ãïŒã¹ã©ãã·ã¥ãé€ç®ïŒããããŸãã以äžã«èšç®åŒã®ç°¡åãªäŸã瀺ããŸãã
COMPUTE TOTALCOST = ITEM * QUANTITY.
äžèšã®äŸã§ã¯ãITEMãšQUANTITYã®æ°å€ãä¹ç®ãããã®çµæãTOTALCOSTå€æ°ã«ä¿åããŠããŸãã
4.3 å¶åŸ¡æïŒæ¡ä»¶åå²ãšã«ãŒãïŒ
COBOLã«ã¯ãããã°ã©ã ã®å¶åŸ¡ãè¡ãããã®æ§æãåœä»€äžåŒãååšããŸãããã®ä»£è¡šçãªãã®ãæ¡ä»¶åå²ãšã«ãŒãã§ãã
æ¡ä»¶åå²ïŒIFæïŒã¯ãããæ¡ä»¶ãæºããããæã«ç¹å®ã®åŠçãè¡ããŸãã以äžã«ç°¡åãªäŸã瀺ããŸãã
IF AGE > 18 MOVE 'YES' TO ADULTSTATUS ELSE MOVE 'NO' TO ADULTSTATUS END-IF.
äžèšã®äŸã§ã¯ããAGEã18ããã倧ãããã©ããããšããæ¡ä»¶ããã§ãã¯ãããã®çµæã«å¿ããŠADULTSTATUSãšããå€æ°ã«’YES’ãŸã㯒NO’ãèšå®ããŠããŸãã
äžæ¹ãã«ãŒãïŒPERFORMæïŒã¯ãç¹å®ã®æ¡ä»¶ãæºããããéã¯åãåŠçãç¹°ãè¿ããŸãã以äžã«ç°¡åãªäŸã瀺ããŸãã
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 10 DISPLAY I END-PERFORM.
äžèšã®äŸã§ã¯ãå€æ°Iã10ãã倧ãããªããŸã§ãIã®å€ã衚瀺ããåŠçãç¹°ãè¿ããŸãã
以äžããCOBOLã®åºæ¬çãªæ§æã®èª¬æãšãªããŸãããã®ç¥èãåºã«ãäºãæäŸãããæ å ±ãé©åã«å©çšããããã«è€éãªããã°ã©ã ãäœæããããšãå¯èœã«ãªããŸãã
5. COBOLã§ã®ãã¡ã€ã«æäœ
COBOLã䜿ã£ãããã°ã©ãã³ã°ã§ã¯ããã¡ã€ã«ãžã®ã¢ã¯ã»ã¹ãäžå¯æ¬ ã§ããããã§ãã®ã»ã¯ã·ã§ã³ã§ã¯ãCOBOLã§ã®ãã¡ã€ã«æäœãç¹ã«ãã¡ã€ã«ã®ãªãŒãã³ã»ã¯ããŒãºãèªã¿èŸŒã¿ã»æžã蟌ã¿ã®æ¹æ³ã«ã€ããŠè©³ãã解説ããŸãããŸãããã¡ã€ã«æäœäžã«èµ·ãããããšã©ãŒãžã®å¯Ÿå¿ããäŒãããŸãã
5.1 ãã¡ã€ã«ã®ãªãŒãã³ãšã¯ããŒãº
COBOLã§ãã¡ã€ã«ãæäœããåã«ãå¿ èŠãšãªããã¡ã€ã«ããªãŒãã³ããå¿ èŠããããŸãããããŠãã¡ã€ã«ã®äœ¿çšãçµãã£ããã¯ããŒãºããã®ãåºæ¬çãªäœæ³ã§ãããOPENãã¹ããŒãã¡ã³ãã䜿ã£ãŠãã¡ã€ã«ãªãŒãã³ãè¡ãããCLOSEãã¹ããŒãã¡ã³ãã䜿ã£ãŠãã¡ã€ã«ã¯ããŒãºãè¡ããŸããOPENæã®åŸã«ã¯ãã¡ã€ã«åããCLOSEæã®åŸã«ã¯ãã¡ã€ã«åãæå®ããŸãã
OPEN INPUT MyFile.
...
CLOSE MyFile.
5.2 ãã¡ã€ã«ã®èªã¿èŸŒã¿ãšæžã蟌ã¿
ãã¡ã€ã«ããã®èªã¿èŸŒã¿ãšãã¡ã€ã«ãžã®æžã蟌ã¿ã¯ããããããREADãã¹ããŒãã¡ã³ããšãWRITEãã¹ããŒãã¡ã³ãã䜿ã£ãŠè¡ããŸããREADæã¯ãã¡ã€ã«ããïŒã€ã®ã¬ã³ãŒããèªã¿èŸŒã¿ãŸãããã®åŸãèªã¿èŸŒãã ããŒã¿ã¯èªåçã«WORKING-STORAGE SECTIONã«æ ŒçŽãããŸããäžæ¹ãWRITEæã¯WORKING-STORAGE SECTIONããããŒã¿ãåãåºãããããæå®ã®ãã¡ã€ã«ã«æžã蟌ã¿ãŸããäžèšã®ã³ãŒãã¯ããã¡ã€ã«ããäžè¡èªã¿èŸŒã¿ããã®å 容ãå¥ã®ãã¡ã€ã«ã«æžã蟌ãäŸã§ãã
OPEN INPUT InFile.
OPEN OUTPUT OutFile.
READ InFile.
IF NOT AT END
WRITE OutFile FROM InFile.
END-IF.
CLOSE InFile.
CLOSE OutFile.
5.3 ãã¡ã€ã«æäœã®ãšã©ãŒãã³ããªã³ã°
ãã¡ã€ã«æäœäžãããã€ãã®ãšã©ãŒãèµ·ããå¯èœæ§ããããŸããäŸãã°ãæå®ããããã¡ã€ã«ãååšããŠããªãããã¡ã€ã«ãèªã¿åãå°çšã§æžã蟌ã¿ãã§ããªãããªã©ã§ããCOBOLã§ã¯ããAT ENDãã¹ããŒãã¡ã³ãã䜿ã£ãŠãã¡ã€ã«æäœã®çµæã远跡ããããã«åºã¥ãããšã©ãŒãã³ããªã³ã°ãè¡ãããšãã§ããŸãããAT ENDãã¯ãã¡ã€ã«ãçµäºãããšãã«ããªã¬ãŒã«ãªããŸããããã«å¯Ÿå¿ããŠç¹å®ã®ã¢ã¯ã·ã§ã³ãå®è¡ãããããšãã§ããŸããäŸãã°ããŠãŒã¶ãŒã«ãšã©ãŒã¡ãã»ãŒãžã衚瀺ããŠããã°ã©ã ãå®å šã«çµäºããããªã©ã§ãã
READ MyFile
AT END DISPLAY 'Media error on MyFile'.
...
ããã¯åçŽãªåœ¢ã®ãšã©ãŒãã³ããªã³ã°ã§ãããå¿ èŠã«å¿ããŠããã«è€éãªãšã©ãŒãã³ããªã³ã°ã«ãŒãã³ãèšå®ããããšãå¯èœã§ãã
以äžã§COBOLã«ãããåºæ¬çãªãã¡ã€ã«æäœã«ã€ããŠã®èª¬æãçµãããŸãã次åã¯ãããŒã¿ããŒã¹æäœã«ã€ããŠè§£èª¬ããŸãããã¡ã€ã«æäœãšåãããããŒã¿ããŒã¹æäœãCOBOLããã°ã©ãã³ã°ã«ãããéèŠãªã¹ãã«ãªã®ã§ããã²æ¥œãã¿ã«ãåŸ ã¡ãã ããã
6. COBOLã§ã®ããŒã¿ããŒã¹æäœ
COBOLã§ã¯ããŒã¿ããŒã¹ãžã®ã¢ã¯ã»ã¹ãéèŠãªåœ¹å²ãæ ã£ãŠããŸããæãäžè¬çã«äœ¿çšãããããŒã¿ããŒã¹ã¯ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã§ãããCOBOLã¯ãã以å€ã«ãæ§ã ãªçš®é¡ã®ããŒã¿ããŒã¹ãšé£æºããããšãã§ããŸãã
6.1 ããŒã¿ããŒã¹ãšã¯
ããŒã¿ããŒã¹ãšã¯ãè€æ°ã®ããŒã¿ãæ å ±ãå¹çãã管çã»æäœã§ããããã«æŽçãããã®ãæããŸããããã«ããã倧éã®ããŒã¿ãè¿ éã«åŠçããããå¿ èŠãªæ å ±ãç¬æã«åãåºãããšãå¯èœã«ãªããŸããããŒã¿ããŒã¹ãçšããããšã§ããŒã¿ã®æŽåæ§ãã»ãã¥ãªãã£ãä¿ã€ããšãã§ããäŒæ¥æŽ»åã«ãããéèŠãªåºç€ãšãªã£ãŠããŸãã
6.2 ããŒã¿ããŒã¹ã®æ¥ç¶æ¹æ³
COBOLã§ããŒã¿ããŒã¹ã«æ¥ç¶ããããã«ã¯ããŸãæ¥ç¶æ å ±ã䜿çšããŠããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ããå¿ èŠããããŸããæ¥ç¶æ å ±ã«ã¯ããŒã¿ããŒã¹ã®ã¢ãã¬ã¹ãããŒãããŠãŒã¶ãŒåããã¹ã¯ãŒããªã©ãå«ãŸããŸãããããã®æ å ±ãããã°ã©ã äžã§æå®ããããŒã¿ããŒã¹ã«æ¥ç¶ããŸãã
EXEC SQL CONNECT TO {ããŒã¿ããŒã¹å} USER {ãŠãŒã¶ãŒå} USING {ãã¹ã¯ãŒã} END-EXEC
äžèšã®ããã«SQLæãCOBOLããã°ã©ã äžã§äœ¿çšããããšã§ãããŒã¿ããŒã¹ã«æ¥ç¶ããããšãã§ããŸãã
6.3 ããŒã¿ã®æœåºã»è¿œå ã»æŽæ°ã»åé€
ããŒã¿ããŒã¹ã«æ¥ç¶ããåŸã¯ãããŒã¿ã®æœåºã»è¿œå ã»æŽæ°ã»åé€ãªã©ã®æäœãè¡ããŸãããããã®æäœã¯SQL(Structured Query Language)ã䜿çšããŠè¡ããŸããSQLã¯ããŒã¿ããŒã¹æäœã®ããã®èšèªã§ããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã§æšæºçã«äœ¿çšãããŠããŸãã
ããŒã¿ã®æœåºã«ã¯SELECTæãããŒã¿ã®è¿œå ã«ã¯INSERTæãããŒã¿ã®æŽæ°ã«ã¯UPDATEæãããŒã¿ã®åé€ã«ã¯DELETEæã䜿çšããŸãã
"ããŒã¿ã®æœåº" EXEC SQL SELECT {ã«ã©ã å} FROM {ããŒãã«å} WHERE {æ¡ä»¶} END-EXEC "ããŒã¿ã®è¿œå " EXEC SQL INSERT INTO {ããŒãã«å} ({ã«ã©ã å}) VALUES ({å€}) END-EXEC "ããŒã¿ã®æŽæ°" EXEC SQL UPDATE {ããŒãã«å} SET {ã«ã©ã å} = {å€} WHERE {æ¡ä»¶} END-EXEC "ããŒã¿ã®åé€" EXEC SQL DELETE FROM {ããŒãã«å} WHERE {æ¡ä»¶} END-EXEC
ãããã®SQLæã䜿çšããã°ãCOBOLã§ããŒã¿ããŒã¹ã®æäœãå¯èœã«ãªããŸããä»åŸã®COBOLããã°ã©ãã³ã°ã«ãããŠãããŒã¿ããŒã¹æäœã®ã¹ãã«ã¯å¿ é ãšãªãã§ãããã
7. COBOLã§ã®ãšã©ãŒãã³ããªã³ã°
ããã°ã©ã ã®å®è¡äžã«äœããã®åé¡ãçºçããå Žåãããã¯ãšã©ãŒãšåŒã°ããŸããããã«å¯Ÿå¿ãããããããã°ã©ã å ã§ãããã®ãšã©ãŒãã©ã®ããã«å¶åŸ¡ããããèŠå®ããã®ããšã©ãŒãã³ããªã³ã°ã§ããããã¯ãšãŠãéèŠãªäœæ¥ã§ãããCOBOLã§ããã®éèŠæ§ã®é«ãã¯å€ãããŸããã
7.1 ãšã©ãŒãã³ããªã³ã°ãšã¯
ãšã©ãŒãã³ããªã³ã°ã¯ããã°ã©ã ãäºæãã¬ç¶æ³ããšã©ãŒã«ãã£ãŠäžæãããããšãªãå®å®çã«åäœãç¶ããããã®äžé£ã®ããã»ã¹ã§ããããã«ã¯å€ãã®äºæãå«ãŸããŠããŸããäŸãã°ããã¡ã€ã«ãååšããªã, äžæ£ãªããŒã¿å, äºæãã¬ããã°ã©ã ã®çµäºãªã©ã®ãããªãšã©ãŒã§ãããããã®ãšã©ãŒã¯å®è¡æã«çºçãããããããã°ã©ã ãæžã段éã§ã¯çºèŠã§ããŸããããããã£ãŠããããã®ãšã©ãŒã«å¯Ÿå¿ããããã®é©åãªãšã©ãŒãã³ããªã³ã°ã¯éèŠãšãªããŸãã
7.2 ãšã©ãŒã¡ãã»ãŒãžã®ç解ãšå¯ŸåŠæ¹æ³
ãšã©ãŒã¡ãã»ãŒãžã¯æ®éããšã©ãŒã®çš®é¡ãšãã®èµ·ãã£ãå Žæãæã瀺ããŸããCOBOLã§ãšã©ãŒã¡ãã»ãŒãžãç解ããããã«ã¯ããŸããã®ãšã©ãŒã¡ãã»ãŒãžã瀺ãæå³ãæ£ç¢ºã«ç解ããªããã°ãªããŸãããããšãã°ããFILE NOT FOUNDãã®ãšã©ãŒã¡ãã»ãŒãžã¯ãæå®ãããã¡ã€ã«ãèŠã€ãããªããšããããšã瀺ããŠããŸãããã®ããã«ããšã©ãŒã¡ãã»ãŒãžãäœãæå³ããŠããã®ããç解ããã°ããã®ãšã©ãŒã®åå ãèŠã€ãããããªããŸãã
ãããŠããšã©ãŒã®åå ãèŠã€ãããã次ã«ãããä¿®æ£ããããã®å¯ŸåŠæ¹æ³ãèããŸãã察åŠæ¹æ³ã¯ãšã©ãŒã®çš®é¡ã«ãã£ãŠå€ãããŸããããšãã°ããã¡ã€ã«ãèŠã€ãããªããšã©ãŒã®å Žåããã®åå ã¯ãã¡ã€ã«ãã¹ãééã£ãŠããããæå®ãããã¡ã€ã«ãååšããªããã®ããããã§ãããããããã£ãŠã察åŠæ¹æ³ãšããŠã¯ãæ£ãããã¡ã€ã«ãã¹ãæå®ããããååšãããã¡ã€ã«ãæå®ããããšãªããŸãã
éèŠãªããšãèŠããŠãããŠãã ããããšã©ãŒã¡ãã»ãŒãžã¯æµã§ã¯ãããŸããããããã¯ãããã°ã©ã ã«äœãåé¡ãèµ·ããŠããã®ããç解ãããããŠãããä¿®æ£ããæãããã§ãã
8. COBOLã®ã¢ããã³ã¹ãããã¯ã¹
ããã°ã©ãã³ã°ãåŠã¶äžã§ãåºæ¬çãªææ³ãšæäœã ãã§ãªããããé«åºŠãªããŒãã«ã觊ããããšã¯éåžžã«éèŠã§ããããã§ã¯ãCOBOLã«ãããé åãšãªã¹ããé¢æ°ãšããã·ãŒãžã£ããããŠãªããžã§ã¯ãæåãšããããããææ矩ãªãããã¯ã«ã€ããŠè§£èª¬ããŠãããŸãã
8.1 é åãšãªã¹ã
COBOLã§ã¯ãåãåã®ããŒã¿ãäžé£ã®é£ç¶ããèšæ¶é åã«æ ŒçŽããããã«ãäžæ¬¡å é åãå€æ¬¡å é åã䜿çšã§ããŸããCOBOLã®é åã¯ãOccurså¥ãã䜿çšããŠå®çŸ©ããããã®èŠçŽ ã«ã¯äœçœ®æå®ã§ã¢ã¯ã»ã¹ããŸããå€æ¬¡å é åã¯åçµã¿åããã«1ã€ãã€å€ãæã€ããšãã§ããŸããããã¯ãäŸãã°ãç¹å®ã®æã®ç¹å®ã®æ¥ã®å£²äžãæ ŒçŽãããããªå Žåã«äŸ¿å©ã§ãã
01 SALES-TABLE.
05 MONTH OCCURS 12 TIMES.
10 DAY OCCURS 31 TIMES PIC 9(7)V99.
äžèšã®äŸã§ã¯ãSALES-TABLEã¯æïŒ12åïŒãšæ¥ïŒåæ31åïŒã§æ§æãããäºæ¬¡å ã®é åãè¡šããŠããŸãã
8.2 é¢æ°ãšããã·ãžã£
COBOLã§ããã³ãŒãã®åå©çšæ§ãšç®¡çæ§ãé«ããããã«ãé¢æ°ãããã·ãžã£ã掻çšã§ããŸããé¢æ°ã¯ç¹å®ã®ã¿ã¹ã¯ãå®è¡ããå€ãè¿ãäžé£ã®æã®éãŸãã§ããCOBOLã«ã¯å€ãã®çµã¿èŸŒã¿é¢æ°ãçšæãããŠããŸãããèªèº«ã§é¢æ°ãäœæããããšãå¯èœã§ãã
FUNCTION SUM (X, Y)
RETURN X + Y
END FUNCTION
äžæ¹ãããã·ãžã£ã¯é¢æ°ãšäŒŒãŠããŸãããéåžžã¯å€ãè¿ãããšãªããäžé£ã®ã¿ã¹ã¯ãå®è¡ããŸããããã¯äžéšã®åŠçãã¢ãžã¥ãŒã«åããå¿ èŠã«å¿ããŠåŒã³åºãããšãã§ãããããã³ãŒãã®éè€ãé¿ããäžè²«æ§ãšæŽçãä¿ã€ã®ã«åœ¹ç«ã¡ãŸãã
8.3 ãªããžã§ã¯ãæåãšCOBOL
COBOLã¯äŒçµ±çã«ã¯æç¶ãåèšèªã§ããããããè¿å¹Žã®ããŒãžã§ã³ã§ã¯ãªããžã§ã¯ãæåã®æŠå¿µãå°å ¥ãããŸããããªããžã§ã¯ãæåããã°ã©ãã³ã°ã¯ãç¹ã«å€§èŠæš¡ã§è€éãªãœãããŠã§ã¢éçºã«ãããŠãã³ãŒãã®åå©çšæ§ã䞊åéçºãä¿å®æ§ã®åäžãªã©ã®å©ç¹ããããããŸãã
COBOLã§ã®ãªããžã§ã¯ãæåæ©èœã¯ãä»ã®èšèªïŒJavaãªã©ïŒãšæ¯ã¹ãŠåºæ¬çãªãã®ã§ãããã¯ã©ã¹ããªããžã§ã¯ããã¡ãœãããç¶æ¿ãªã©ã®äž»èŠãªèŠçŽ ããµããŒãããŠããŸããããã«ãããéçºè ã¯COBOLã䜿çšããŠãããçŸä»£çã§å¹ççãªã³ãŒãæ§é ãäœæã§ããŸãã
class-id. MyFirstClass public.
method-id. "HelloWorld" public.
procedure division.
display "Hello, World!".
goback.
end method "HelloWorld".
end class.
äžèšã®ã³ãŒãã¹ããããã¯ãHelloWorldãšããã¡ãœãããæã€COBOLã¯ã©ã¹ã®ç°¡åãªäŸã§ãããã®ã¡ãœããã¯Hello, World!ãšè¡šç€ºããŸãã
å ã«é²ãåã«ããããã®é«åºŠãªãããã¯ãåŠã¶ããšã¯COBOLã¹ãã«ãåäžãããäžã§éåžžã«æçšã§ãã
9. COBOLã§ã®ãã¹ããã©ã¯ãã£ã¹
ã§ã¯ãCOBOLã®ã³ãŒãã£ã³ã°ã§èŠããŠãããããã¹ããã©ã¯ãã£ã¹ã«ã€ããŠèŠãŠãããŸãããããã®ã»ã¯ã·ã§ã³ã§ã¯ãã³ãŒãã®å質åäžãã³ãŒãã®å¹çåããããŠãã¹ããšãããã°ã«ã€ããŠè©³ãã解説ããŸãã
9.1 ã³ãŒãã®å質åäž
COBOLã®ã³ãŒãå質ãåäžãããããã«ã¯å¯èªæ§ãšä¿å®æ§ã«éãã眮ãããšãéèŠã§ããCOBOLã¯ããžãã¹ã·ã¹ãã ã«å€ã䜿çšãããŠãããé·æéã«ãããã¡ã³ããã³ã¹ãããããšãå€ãã§ãããããã£ãŠãä»ã®äººãç解ãããããèªå·±èª¬æçãªã³ãŒããæžãããšãéèŠãšãªããŸãã
å ·äœçã«ã¯ãå€æ°åãé¢æ°åãé©åã«éžã¶ãã³ã¡ã³ããç©æ¥µçã«äœ¿çšãããªã©ãæããããŸããããã«ãCOBOLã®å Žåãåå²ã³ã³ãã€ã«ãå©çšããŠããã°ã©ã ãã¢ãžã¥ãŒã«åããããšã§ãä¿å®æ§ãé«ããããšãå¯èœã§ãã
9.2 ã³ãŒãã®å¹çå
次ã«ãã³ãŒãã®å¹çåã«ã€ããŠã§ããCOBOLããã°ã©ã ã¯ãã°ãã°å€§éã®ããŒã¿åŠçãå¿ èŠãšãããããã³ãŒãã®å¹çåã¯æ¬ ãããŸãããã«ãŒãåŠçã®æé©åãäžå¿ èŠãªèšç®ã®åé€ãªã©ãå¿ãããã¹ãã§ãã
ãŸããCOBOLã¯SQLãšé£æºããŠããŒã¿ããŒã¹ãæäœããããšãå€ãã®ã§ãSQLæã®æé©åãå¹çåã«å¯äžããŸããããšãã°ãå¿ èŠãªã«ã©ã ã ããæœåºããããé©åãªã€ã³ããã¯ã¹ãå©çšãããããŸãããã
9.3 ãã¹ããšãããã°
æåŸã«ããã¹ããšãããã°ã«ã€ããŠã§ããããã°ã©ã ãæåŸ éãã«åäœããã確èªããããã«ã¯ããã¹ããäžå¯æ¬ ã§ãããã¹ãã«ãã£ãŠãã³ãŒãã®äžå ·åãæ©æã«çºèŠããä¿®æ£ããããšãã§ããŸãããã¹ãæ¹éã¯ããã°ã©ã ã®èŠä»¶ã«ãããŸãããæäœéãŠããããã¹ãïŒåã ã®é¢æ°ãæç¶ãã®ãã¹ãïŒãšçµ±åãã¹ãïŒè€æ°ã®ã¢ãžã¥ãŒã«ãæ£ããé£æãããã®ãã¹ãïŒãè¡ãã¹ãã§ãã
äžæ¹ããã¹ãã«ãã£ãŠçºèŠãããäžå ·åã®åå ã調æ»ããä¿®æ£ããäœæ¥ããããã°ãšåŒã³ãŸãããããã¬ãå©çšããŠããã°ã©ã ã®å®è¡ãã¹ãããããšã«è¿œããªãããäžå ·åã®åå ãæ¢ããŸãããããã ãããããã°ã¯ãããŸã§ãäžå ·åä¿®æ£ã®æçµæ段ã§ãé«å質ãªã³ãŒããæžãããšã§ãããã°ã®å¿ èŠæ§ãæžããããšãçæ³çã§ãã
10. æåŸã«: COBOLã®å°æ¥æ§ãšåŠç¿ãžã®ãã³ã
COBOLããã°ã©ãã³ã°èšèªã®ããã©ãŒãã³ã¹ãšãªã¢ã«ã¿ã€ã åŠçèœåã¯ãéèæ¥çãæ¿åºæ©é¢ãªã©ãäžå¿ã«ä»ãªãé«ãè©äŸ¡ãããŠããŸãããã®ãããCOBOLã®æè¡è ã¯äžçäžã§äŸç¶ãšããŠéèŠããããŸãã
10.1 COBOLã®çŸç¶ãšå°æ¥
COBOLã¯ç«ã¡äžãããåäžçŽä»¥äžãçµéããŸããããæ¢åã®ã·ã¹ãã ã®ç¶æã»ä¿å®ã«ã¯æ¬ ãããªãååšãšãªã£ãŠããŸããã¯ãªãã£ã«ã«ãªããžãã¹ãæ ãåºå¹¹ç³»ã·ã¹ãã ã®å€ãã¯ãå ç¢æ§ãšä¿¡é Œæ§ãéèŠããŠCOBOLã§éçºãããŠããŸãã
ãã®äžæ¹ã§ãçŸä»£ã®ããã°ã©ãã³ã°èšèªãšæ¯ã¹ããšåŠç¿ãªãœãŒã¹ãéãããŠããã®ãçŸç¶ã§ãããã®ãããæ°ãã«COBOLãåŠãŒããšããè¥ãäžä»£ã®ãšã³ãžãã¢ã¯æ¯èŒçå°ãªããšèšãããŠããŸããããããã®äºå®ã¯åçŽãªäŸçµŠãšé絊ã®ãã©ã³ã¹ããèãããšãCOBOLã®ã¹ãã«ãç¿åŸããããšã§ã競äºåãä¿ã€å¯èœæ§ã瀺ããŠããŸãã
ãŸããè¿å¹Žã§ã¯COBOLããJavaãªã©ã®ææ°ã®ããã°ã©ãã³ã°èšèªãžã®ã·ã¹ãã 移è¡ãè¡ãæ¡ä»¶ãå¢ããŠãããCOBOLã®ç¥èãæã€æè¡è ãå¿ èŠãšãããŠããŸãã移è¡ãé²ããªããããæ§ã·ã¹ãã ã®é©åãªéçšãšãããŒãžã¡ã³ããæ±ãããããããCOBOLã¹ãã«ã¯å€ãããã®ã·ã¹ãã ãšæ°ããã·ã¹ãã ã®æ©æž¡ããæ ããŸãã
10.2 COBOLãåŠã¶ããã®ãªãœãŒã¹
COBOLãåŠã³ãããšæãæ¹ã ã«ãšã£ãŠã¯ãåŠç¿ãªãœãŒã¹ã®æ°ãéãããŠãããšã¯ãããã€ã³ã¿ãŒãããäžã«ã¯æ§ã ãªããŒã«ãææžãååšããŸãã
ãŸãäžã€ç®ã«æããã®ããç¡æã®ãªã³ã©ã€ã³ææã§ãããOpen Mainframe Projectãã®äžç°ãšããŠå ¬éãããŠãããCOBOL Programming Courseãã¯ãåå¿è åãã«COBOLã®åºæ¬ããåŠã¹ãè¯è³ªãªãªãœãŒã¹ãšãªã£ãŠããŸãããŸããIBM Developerã®ãµã€ãã§ã¯ãCOBOLã®æŠèŠã解説ãããã¥ãŒããªã¢ã«ããCOBOLãçšãããããžã§ã¯ãã®ãµã³ãã«ãèŠã€ããããšãã§ããŸãã
äºã€ç®ã«æããã®ãããªãã©ã€ã³ã®ææãæžç±ã§ãããMurach’s Mainframe COBOLãããBeginning COBOL for Programmersããªã©ãããŒã·ãã¯ãªç¥èããå¿çšãŸã§ãç¶²çŸ ããæ¬ãæ°å€ãåºçãããŠããŸããå³æžé€šãæžåºããªã³ã©ã€ã³ããã¯ã¹ãã¢ã§ãèªåã«åã£ãææãèŠã€ããŠã¿ãŠãã ããã
æåŸã«ãå®éã«æãåãããŠåŠã¶ã®ãäžçªæå¹ãªæ¹æ³ã§ããCOBOLã®ç°å¢ã¯ãã¡ãã®ããŒãžã§æã«å ¥ããããšãã§ããŸããåããŠã®ããã°ã©ã äœæããå§ããŠãã ããã
COBOLã®ç¥èã¯ã確ããªãã£ãªã¢ãç¯ãããã®äžã€ã®æ段ãšãªãåŸãŸãããã²ææŠããŠã¿ãŠãã ããã