COBOLã·ã¹ãã ã¯ãéèãå»çãæ¿åºæ©é¢ãªã©ãå€ãã®æ¥çã®æ¥åã®äžæ žãæ¯ãç¶ããŠããŸãããã®æŽå²ã¯å€ãããã®ä¿¡é Œæ§ã¯å®èšŒæžã¿ã§ãããäŒæ¥ã®ã¯ãŒã¯ãããŒã«æ·±ãçµ±åãããŠãããããäŸç¶ãšããŠäžå¯æ¬ ãªååšã§ããããããé·å¹Žã«ãããã¡ã³ããã³ã¹ã𿮵éçãªã¢ããããŒããçµãŠã¢ããªã±ãŒã·ã§ã³ãé²åããã«ã€ããå¶åŸ¡ãããŒããžãã¯ã¯è€éåããäžéæã«ãªãã管çããŸããŸãå°é£ã«ãªãããšããããããŸãã
COBOLã«ãããå¶åŸ¡ãããŒã®ç°åžžã¯ãæ€åºãšä¿®æ£ãå°é£ãªæ·±å»ãªåé¡ãåŒãèµ·ããå¯èœæ§ããããŸããå ·äœçã«ã¯ãå°éäžèœã³ãŒããç¡éã«ãŒããäžè²«æ§ã®ãªãçµäºãã¹ãäžèŠåãªåå²åäœãªã©ãæããããŸããããããç°åžžãæŸçœ®ãããšãã³ãŒãã®å¯èªæ§ãäœäžããé ããæ¬ é¥ãçããæ¬çªéçšäžã®ã·ã¹ãã é害ã®ãªã¹ã¯ãé«ãŸããŸãããŸãããããã®ç°åžžã®ååšã¯ãå®è¡ãã¹ãæç¢ºã«ææ¡ããããšãäžå¯æ¬ ãšãªãã¢ããã€ãŒãŒã·ã§ã³ã®åãçµã¿ãè€éåãããŸãã
COBOLã®ç°åžžãçŽ æ©ãæ€ç¥
SMART TS XL é ãã COBOL å¶åŸ¡ãããŒã®ãªã¹ã¯ããã³ã¹ãã®ãããé害ã«ãªãåã«çºèŠããŸãã
ä»ããçºèŠéãããå®è¡æ¡ä»¶ããè©äŸ¡ã§ããªãåçãã¹ããšã¯ç°ãªãã éçåæ ã³ãŒãèªäœã®æ§é ãšã»ãã³ãã£ã¯ã¹ãæ€æ»ããããšã§ãããããç°åžžãçºèŠããæ¹æ³ãæäŸããŸããéçºè ãã¢ããªã¹ãã¯ãããã°ã©ã å ã®ãããããã¹ããããã³ã°ããæ±ºããŠå®è¡ãããªãã»ã°ã¡ã³ããç¹å®ããå¶åŸ¡èŠåŸãäžååãªã³ãŒãé åããªã¹ã¯ã®é«ãããžãã¯ãã¿ãŒã³ããã€ã©ã€ãããããšãã§ããŸãã
COBOLã³ãŒãããŒã¹ã«éçè§£æææ³ãé©çšããå¶åŸ¡ãããŒã®ç°åžžãæ€åºã»å¯ŸåŠããæ¹æ³ãå æ¬çã«èŠãŠãããŸããããåã»ã¯ã·ã§ã³ã§ã¯ãç¹å®ã®ç°åžžã®çš®é¡ãããããããããªã¹ã¯ããããŠéçè§£æäžã«ç°åžžãç¹å®ããããã®ææ³ã«ã€ããŠè§£èª¬ããŸãããããã®ãã¿ãŒã³ãçè§£ããããšã§ãéçºããŒã ã¯COBOLã¢ããªã±ãŒã·ã§ã³ã®å質ãããã©ãŒãã³ã¹ãä¿å®æ§ãåäžãããéèŠãªã·ã¹ãã å šäœã§ããå®å šãªéçšã確ä¿ããããšãã§ããŸãã
COBOLããã°ã©ã ã«ãããå°éäžèœã³ãŒãã®æ€åº
å°éäžèœã³ãŒããšã¯ãCOBOLããã°ã©ã ã«ãããŠããããªãæ£åœãªå¶åŸ¡ãã¹ã®äžã§ã決ããŠå®è¡ã§ããªãã»ã°ã¡ã³ããæããŸãããããã®ã»ã°ã¡ã³ãã¯ãå€ãã®å Žåãå¢åã¡ã³ããã³ã¹ãæŸæ£ãããæ©èœããããã¯æå¹ãªããžãã¯ãåæ ããªããªã£ãå€ãæ¡ä»¶ãã©ã°ãªã©ã«ãã£ãŠçºçããŸãããããã®ã»ã°ã¡ã³ãã¯å®è¡ãããŸããããã³ãŒãããŒã¹ã«ååšããããšã§ãªã¹ã¯ãå¢å€§ããŸããéçºè ãæ··ä¹±ãããããç£æ»ã誀ãããããå°æ¥ã®å€æŽæã«æå³ãã埩掻ããå Žåã«ãã°ãåã³çºçããããããå¯èœæ§ããããŸãã
COBOLã§ã¯ãå°éäžèœã³ãŒããçºçããåå ã¯ããã€ããããŸããäŸãã°ã次ã®ãããªçµäºåœä»€ã®åŸã«çœ®ãããæã¯ã STOP RUN or GOBACK 決ããŠå®è¡ãããŸãããåæ§ã«ã誀ã£ã PERFORM THRU é床ã«è€éãªæ¡ä»¶åå²ããé床ã«è€éãªæ¡ä»¶åå²ã«ãã£ãŠã段èœå
šäœãå¶åŸ¡ãããŒã°ã©ãããåé¢ããŠããŸãå¯èœæ§ããããŸããå°éäžèœã³ãŒããç¡å®³ãªå Žåã§ããã³ãŒãããŒã¹ãæ±æããä¿å®æ§ãäœäžãããŸãã
éçè§£æã¯ãããã°ã©ã ã®å¶åŸ¡ãããŒã¢ãã«ãæ§ç¯ããããšã§ããã®ãããªã³ãŒããæ€åºããäžã§éèŠãªåœ¹å²ãæãããŸãããã®ã¢ãã«ã¯ãèãããããã¹ãŠã®ãžã£ã³ããåŒã³åºããããã³çµäºããããã³ã°ããŸããã©ã®ãšã³ããªãã€ã³ããããå°éã§ããªããããã¯ã¯ãããããããã¯ãŸãã¯å°éäžèœãããã¯ãšããŠãã©ã°ä»ããããŸããåçãã¹ããšã¯ç°ãªãããã®ææ³ã¯å®è¡ãå¿ èŠãšããªãããã培åºçãªå質ä¿èšŒãã¹ããè¡ã£ãŠãèŠéãããå¯èœæ§ã®ããå°éäžèœã»ã°ã¡ã³ããç¹å®ã§ããŸãã
å°éäžèœã³ãŒãããã®ãŸãŸæŸçœ®ããŠãããšãæ··ä¹±ãæãã ãã§ã¯ãããŸããããã€ãŠã¯éèŠã ã£ãããžãã¯ããéçšäžã¯æ£ããèªèãããªãã±ãŒã¹ãå°ãªããããŸããããã®ãããä¿å®äžã®ãã¹ã誀ã£ãæ³å®ãããã«ã¯ãå®éã«çšŒåããŠããã¯ãã®è²¡åèšç®ãå®å šæ§ãã§ãã¯ã«é¢ããã³ãŒãã®å Žåã¯ãã³ã³ãã©ã€ã¢ã³ã¹éåã«ã€ãªããããšããããŸãã
å°éäžèœã³ãŒããåé€ããããé©åã«ææžåããããšã§ããããã®ãªã¹ã¯ã軜æžããã¢ããªã±ãŒã·ã§ã³ã®é·æçãªå®å®æ§ãåäžãããããšãã§ããŸããããã¯ãCOBOLã·ã¹ãã ãè¿ä»£åããããã®éèŠãªã¹ãããã§ãã ãªãã¡ã¯ã¿ãªã³ã°ããŸãã¯ç£æ»ã
PROCEDURE DIVISION ã«ããããããã³ãŒããã¹
æç¶ãéšã¯COBOLããã°ã©ã ã®å®è¡äžæ žã§ãããããžãã¹ããžãã¯ã¯æ§é åãããæ®µèœãšå¶åŸ¡æä»€ã«ãã£ãŠè¡šçŸãããŸãããã®éšå ã§ã¯ã誀ã£ãåå²ãå€ããã©ã°ããããã¯ãã以äžã®èµ°æ»ã劚ããå¶åŸ¡çµæ¢ç¬Šãªã©ã«ãããç¹å®ã®æ®µèœãæãäžåºŠãå®è¡ãããªãå Žåããããã³ãŒããã¹ãçºçããŸããåã«å»æ¢ãããã³ãŒããšã¯ç°ãªããããããã¹ã¯å®è¡ããªãŒããè«ççã«åãé¢ãããŠãããå®è¡æã«äœã®åœ¹å²ãæãããŸããã
æãäžè¬çãªåå ã®äžã€ã¯ãæ©æçµäºã§ãã STOP RUN, GOBACKãŸã㯠EXIT PROGRAM å®è¡ã忢ããŸãããéçºè
ã¯èª€ã£ãŠããããã¯ä»¥åã®ããŒãžã§ã³ã®åæ®ãšããŠãåŸããããžãã¯ãæ¿å
¥ããããšããããŸããäŸãã°ïŒ
PERFORM INIT-SECTION
STOP RUN
DISPLAY "This will never appear"
ãã®äŸã§ã¯ã DISPLAY è¡ãå°éäžèœã§ããå®è¡æã«ã¯ç¡å®³ã§ããããã®æãååšãããšãç¹ã«ã¡ã³ããã³ã¹ãã³ãŒãã¬ãã¥ãŒæã«ãéçºè
ããã®æãã¢ã¯ãã£ãã§ãããšèª€è§£ããå¯èœæ§ããããŸããããã¯èªç¥çãªãŒããŒãããã®å¢å ã«ã€ãªããããªãã¡ã¯ã¿ãªã³ã°äžã«èª€ã£ãŠäœ¿çšããããªã¹ã¯ãé«ããŸãã
ãããã³ãŒãã¯äžé©åã«èšå®ãããå Žåã«ãçºçããŸã PERFORM ã¹ããŒãã¡ã³ããäŸãã°ã PERFORM THRU ã³ãã³ãã¯æ®µèœãããã¯ãå®è¡ããããšããããå¢çãäžæ£ç¢ºãªããã«ãããã¯ã«å°éã§ããªãã£ãå¯èœæ§ããããŸãããã§ãŒã³ã®æåŸã®æ®µèœããã€ãã¹ãŸãã¯åé¢ããããšããã®æ®µèœã¯åé¢ãããŸãã
éçè§£æã¯ãããã°ã©ã ã®å¶åŸ¡ãããŒã°ã©ããèµ°æ»ããããšã§ããããã®ããããã¹ãæããã«ããããšãã§ããŸããåæ®µèœãŸãã¯åœä»€ã¯ãæ¢ç¥ã®ãšã³ããªãã€ã³ãããã®æ¥ç¶æ§ã«ã€ããŠæ€æ»ãããŸãããã®ãããªæ¥ç¶ãååšããªãå Žåã¯ãããã«èª¿æ»ããããã«ãã©ã°ãä»ããããŸãããã®ããã»ã¹ã§ã¯ãå®å
šã«å°éäžå¯èœãªæ®µèœã ãã§ãªããç¡æ¡ä»¶åå²ã«ç¶ãè¡ãªã©ãéåžžã¯ã¢ã¯ãã£ããªæ®µèœå
ã®å°éäžå¯èœãªã»ã°ã¡ã³ãã匷調衚瀺ãããŸãã GO TO or STOP RUN.
PROCEDURE DIVISION å ã®ããã ã³ãŒããã¯ãªãŒã³ã¢ãããããšãæç¢ºããåäžããè«çãšã©ãŒã®ãªã¹ã¯ã軜æžãããããã°ã©ã ã®æäœãããŒãæå³ããããžãã¹ ããžãã¯ãšäžèŽããããã«ãªããŸãã
PERFORM THRUã®èª€çšãšå°éäžå¯èœãªæ®µèœã®ç¹å®
ãã® PERFORM THRU æã¯ãäžé£ã®æ®µèœãé æ¬¡å®è¡ããããã«çšãããããåŸæ¥ã®å¶åŸ¡æ§é ã§ããé¢é£ããããžãã¯ãã°ã«ãŒãåããã·ã³ãã«ãªã¡ã«ããºã ãæäŸããŸãããCOBOLããã°ã©ã ã«ãããŠå¶åŸ¡ãããŒã®ç°åžžãåŒãèµ·ããåå ã«ããªããŸããæã®èª€çšãèšå®ãã¹ã¯ã PERFORM THRU å€ãã®å Žåãç¯å²å®çŸ©ãééã£ãŠããããçµäºæåãä»åšããŠãããââãããããæ§æçã«ã¯æå¹ã§ãããå®è¡ã§ããªããå°éäžèœãªæ®µèœã³ãŒã ã»ã°ã¡ã³ããçæãããŸãã
次ã®ã³ãŒã ã¹ãããããæ€èšããŠãã ããã
PERFORM START-LOGIC THRU FINAL-LOGIC
...
START-LOGIC.
DISPLAY "Begin"
MIDDLE-LOGIC.
DISPLAY "Middle"
FINAL-LOGIC.
DISPLAY "End"
STOP RUN
EXTRA-LOGIC.
DISPLAY "This is never reached"
ãã®å Žåã EXTRA-LOGIC äžéšã§ãããšèª€ã£ãŠä¿¡ããããŠãã PERFORM THRU ã·ãŒã±ã³ã¹ãå®éã«ã¯å°éäžå¯èœã§ããããã«æªãããšã«ã FINAL-LOGIC ã¡ã³ããã³ã¹äžã«äœçœ®ãååã倿ŽãããŸãããã PERFORM ã¹ããŒãã¡ã³ãã倿Žãããªãå Žåãæå³ãããããžãã¯ã®äžéšãæé»çã«ã¹ããããããå¯èœæ§ããããŸãã
å°éäžå¯èœãªæ®µèœã®åå PERFORM THRU 誀çšã¯ããšã©ãŒãããã«ã¯æããã«ãªããªãå¯èœæ§ããããããç¹ã«å±éºã§ããã³ãŒãã¯ã³ã³ãã€ã«ããããã©ã°ãç«ãŠãããããšãªãå®è¡ããããããããŸããããæåŸ
ãããããžãã¹ããžãã¯ããã€ãã¹ãããããææªã®å Žåãé åºéãã«å®è¡ãããªãã£ããããå¯èœæ§ããããŸãããããã®åé¡ã¯ããã¹ããããããŸãã¯éè€ããã³ãŒããå«ãå€§èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ã§ã¯æåã§æ€åºããããšãå°é£ã§ãã PERFORM THRU ãããã¯ã
éçè§£æã§ã¯ãåå¶åŸ¡ç¯å²ãæç€ºçã«ã¢ãã«åããããšã§ããã«å¯ŸåŠããŸãã PERFORM THRUããããã®ã¿ãŒã²ããæ®µèœãæ£ãããã¹å
ã«ãããã©ããããŸããã©ãŒã«ã¹ã«ãŒãçµäºã«ãã£ãŠæåŸ
ãããå®è¡ãäžæããããã©ãããèå¥ããŸãã PERFORM ã·ãŒã±ã³ã¹ã§ããããã©ããŒãµã«ã§ã¯å°éã§ããªããã®ã¯ç°åžžãšããŠãã©ã°ä»ããããŸãã PERFORM è€æ°ã®ã¢ãžã¥ãŒã«ã«ãããå Žåãå¶åŸ¡ã®æŽåæ§ãå®å
šã«æ€èšŒããã«ã¯ã远å ã®æé éåæãå¿
èŠã«ãªãå ŽåããããŸãã
ç¹å®ãšä¿®æ£ PERFORM THRU 誀çšã«ãããããã°ã©ã ããžãã¯ãæå³ãããšããã«æµããããšãä¿èšŒããããšããž ã±ãŒã¹ã®å®è¡æãäžèŠç¡å®³ãªã³ãŒã倿ŽåŸã«è¡šé¢åããå¯èœæ§ã®ããé ããæ¬ é¥ã®ãªã¹ã¯ã軜æžãããŸãã
STOP RUNãŸãã¯GOBACKåŸã®ã³ãŒãïŒå°éäžå¯èœãªå®è¡ãã¹ïŒ
COBOLããã°ã©ã ã«ãããŠæãåçŽã§ãããªããèŠèœãšãããã¡ãªå¶åŸ¡ãããŒã®ç°åžžã®äžã€ã¯ã次ã®ãããªç«¯æ«åœä»€ã«ç¶ãã³ãŒãã®ååšã§ããã STOP RUN, GOBACKãŸã㯠EXIT PROGRAMãããã®ã¹ããŒãã¡ã³ãã¯ããã°ã©ã ãŸãã¯ãµãããã°ã©ã ã®å®è¡ã®çµäºãéç¥ããåãè«çãããã¯å
ã®ãããã®ã¹ããŒãã¡ã³ãããåŸã®è¡ã«ã¯ãããªãç¶æ³ã§ãã¢ã¯ã»ã¹ã§ããªããªããŸãã
å ·äœçãªäŸãæããŸããšã以äžã®éãã§ãã
STOP RUN
DISPLAY "This line will never execute"
ãã® DISPLAY ã³ãã³ãã¯äºå®äžæ»ãã§ããŸããå¶åŸ¡ãå®å
šã«åæ¢ãããããæ±ºããŠå®è¡ãããŸããã STOP RUNãããããã®ãããªè¡ã¯ã¬ã¬ã·ãŒã·ã¹ãã ã§ããèŠãããŸãããããã¯ãæ®ã£ããããã°æãäœçœ®ããããããžãã¯ããããã¯ãããé©çšãããããã£ãã¯ã¹äžã«å¶åŸ¡çµç«¯æåã远å ããã以åã®ãªããžã§ã³ã®æ®éªžã§ããå¯èœæ§ããããŸãã
ãããåŠçããã©ã³ã¶ã¯ã·ã§ã³åŠçç°å¢ã§ã¯ããã®ãããªå°éäžèœã»ã°ã¡ã³ããæ€åºã§ããªããšãæ·±å»ãªèª€è§£ãçããå¯èœæ§ããããŸããéçºè ã¯ãã¯ãªãŒã³ã¢ããããžãã¯ãç£æ»èšŒè·¡ãå®éã«ã¯å®å šã«ãã€ãã¹ãããŠããã«ãããããããå®è¡ãããŠãããšèª€è§£ããå¯èœæ§ããããŸããæéã®çµéãšãšãã«ããããã®ã»ã°ã¡ã³ããèç©ãããã³ãŒãããŒã¹ãä¹±éã«ãªããã¡ã³ããã³ã¹äœæ¥ã®æéãé·ããªããããžãã¯ãšã©ãŒãçºçããå¯èœæ§ãé«ãŸããŸãã
éçè§£æã§ã¯ãå¶åŸ¡ãããŒã¿ãŒãããŒã¿ãè§£æããåšå²ã®å®è¡ã³ã³ããã¹ãããããã³ã°ããããšã§ãã®ç°åžžãç¹å®ããŸãã STOP RUN or GOBACK ãæ€åºããããšãåãå®è¡ãã¹å
ã®åŸç¶ã®ãã¹ãŠã®æã¯å°éäžèœãšããŠããŒã¯ãããŸããããã¯çŽç²ã«æ§æãšæ§é ã®ã¿ã®ãã§ãã¯ã§ãããããä¿¡é Œæ§ãé«ããèªååã«æé©ã§ãã
ããã«ãå¶åŸ¡çµç«¯ã«ç¶ãå°éäžèœã³ãŒãã¯ãã¢ããã€ãŒãŒã·ã§ã³ã«ãããŠç¹ã«åé¡ãšãªãå¯èœæ§ããããŸããæ§é å翻蚳ã¢ãã«ãæç¶ãåãããã³ã°ã«äŸåããããŒã«ã¯ããããã®ã»ã°ã¡ã³ããæç¢ºã«æ³šéä»ããŸãã¯åé€ãããŠããªãéããæå¹ãªããžãã¯ãšããŠèª€ã£ãŠè§£éããå¯èœæ§ããããŸãããã®ããããã®ãããªçµç«¯èšå·ã®åŸã«ç¶ãè¡ã¯ãããã¥ã¡ã³ããšããŠæ©èœããªãéããåé€ãŸãã¯ã³ã¡ã³ãã¢ãŠãããããšããã¹ããã©ã¯ãã£ã¹ãšèããããŠããŸãã
å°éäžå¯èœãªå®è¡ãã¹ãã¯ãªãŒã³ã¢ããããããšã§ãCOBOLããã°ã©ã ã®æçæ§ãšæ£ç¢ºæ§ãåäžããŸããããã«ãããããŒãžã«èšè¿°ãããå 容ãšã·ã¹ãã ã®å®éã®åäœã確å®ã«äžèŽããããã«ãªããŸãã
æ¡ä»¶åå²ã«ãããããã³ãŒãã»ã¯ã·ã§ã³ã®äœæ
COBOLã«ãããæ¡ä»¶åå²ã¯ãéåžžããã¹ãæ§é ã§æ§ç¯ãããŸãã IF ã¹ããŒãã¡ã³ã EVALUATE æ§é ããŸãã¯æ¡ä»¶ä»ãã§å®è¡ããã PERFORM ãããã¯ã¯ã決å®ããžãã¯ã®å®è£
ã«äžå¯æ¬ ã§ãããããããããã®å¶åŸ¡æ§é ã誀ã£ãŠæ§æãããŠããããå¶åŸ¡ãããã«æ¡åŒµãããããããšãããã°ã©ã ã®äžéšãæå³ããåé¢ãããæå¹ãªå
¥åã«å¯ŸããŠå®è¡ãããªããããã³ãŒãã»ã¯ã·ã§ã³ãäœæãããå¯èœæ§ããããŸãã
次ã®äŸãèããŠã¿ãŸãã
IF CUSTOMER-ELIGIBLE = 'Y'
PERFORM ISSUE-CARD
ELSE
IF CUSTOMER-ELIGIBLE = 'N'
PERFORM REJECT-CARD
äžèŠãããšããã®è«çã¯æ£ããããã«èŠããŸãããããã CUSTOMER-ELIGIBLE 以åã®æ€èšŒããžãã¯ã«ãã£ãŠãYããŸãã¯ãNãã®ããããã«ãªãããšãä¿èšŒãããŠãããå€åŽã®æ¡ä»¶ã¯ãã§ã«ãYãããã¹ãããŠãããå
åŽã® IF åé·ã§ããå®éã«ã¯ããã㯠REJECT-CARD ãããŒã®ãã®æç¹ã§ 'N' ãèš±å¯ãããå€ã§ãªãå Žåãæ®µèœã«å°éã§ããªããªããŸãã
æ¡ä»¶åå²ã«ãããããã³ãŒãã¯ãæ¡ä»¶ãã§ãã¯ã§äœ¿çšããããã©ã°ãéæšå¥šã§ãã£ãããèšå®ãããŠããªãã£ããã䜿çšåã«äžæžããããŠãããããå Žåã«ãçºçããå¯èœæ§ããããŸããå€§èŠæš¡ãªã³ãŒãããŒã¹ã§ã¯ããããã®ãã©ã°ãè€æ°ã®ã³ã³ããã¹ãã§åå©çšãŸãã¯åå®çŸ©ãããããšãå€ããèªåãµããŒããªãã§ã¯è¿œè·¡ãå°é£ãªäžæŽåãçºçããŸãã
éçè§£æã¯ã次ã®ãããªæ¹æ³ã§ãã®ã¯ã©ã¹ã®å¶åŸ¡ãããŒç°åžžãæ€åºããã®ã«åœ¹ç«ã¡ãŸãã å€ã®ç¯å²åæ æ¡ä»¶å€æ°ã«ã€ããŠãåæ±ºå®ãã€ã³ãã§å€æ°ãä¿æã§ããæœåšçãªå€ã調ã¹ãããã倿°ãå®çŸ©ããã³æŽæ°ãããå Žæãšçžäºåç §ããããšã§ãåæãšã³ãžã³ã¯ç¹å®ã®åå²ãå°éå¯èœãã©ããã倿ããŸãã
ããã«ãããã°ã©ã ã®ç¶æ ã«åºã¥ããŠæ¡ä»¶ãåžžã«çãŸãã¯åœãšè©äŸ¡ãããå Žåãå°éäžå¯èœãªåå²ãšããŠãã©ã°ãä»ããããŸãããã®ç¥èŠã¯ãæ¡ä»¶ãäŸåããããŒã¿ã¢ãã«ãšã¯ç¬ç«ããŠé²åããããšãå€ãã¬ã¬ã·ãŒã·ã¹ãã ã«ãããŠç¹ã«æçšã§ãã
å°éäžå¯èœãªæ¡ä»¶ãã¹ãåé€ãŸãã¯ãªãã¡ã¯ã¿ãªã³ã°ãããšãèªã¿ããããåäžãã è€éããè»œæž å¶åŸ¡ãããŒããªãŒã®ããŸããæ®ãã®ããžãã¯ãæå³çã§ãã¹ãå¯èœã§ãããããžãã¯ã®éè€ãççŸãçºçãã«ããããšãä¿èšŒããŸãã
å°éäžèœãããã¯ã®å¶åŸ¡ãããŒã°ã©ãïŒCFGïŒåæ
å¶åŸ¡ãããŒã°ã©ãïŒCFGïŒè§£æã¯ãCOBOLããã°ã©ã å ã®å°éäžèœã³ãŒããæ€åºããéçã³ãŒãè§£æã«ãããåºæ¬çãªææ³ã®äžã€ã§ããCFGã¯ãããŒãïŒåœä»€ã®åºæ¬ãããã¯ã衚ãïŒãšãšããžïŒãããã¯éã®å¶åŸ¡ã®åãæž¡ãã衚ãïŒãçšããŠãããã°ã©ã å®è¡ã«ãããããããå¯èœãªãã¹ã衚ããŸãããã®æ§é åã¢ãã«ã¯ãæç¶ãåèšèšãåŸæ¥ã®å¶åŸ¡æ§é ã«ãã£ãŠå®éã®å®è¡é åºãææ§ã«ãªããã¡ãªCOBOLã«ãããŠç¹ã«æçšã§ãã
COBOLããã°ã©ã ã®CFGãæ§ç¯ããã«ã¯ããŸãéçã¢ãã©ã€ã¶ã以äžãèå¥ããŸãã ãšã³ããªãã€ã³ããäŸãã°ã PROCEDURE DIVISION ãŸã㯠PERFORM ã¿ãŒã²ãããæ¬¡ã«æ®µèœãè§£æããåå²åœä»€ïŒäŸïŒ IF, GOTO, PERFORMïŒãšãããå¶åŸ¡ã®é·ç§»ãç¹ã«æ³šæãå¿
èŠãªã®ã¯ã PERFORM THRU ã·ãŒã±ã³ã¹ããã©ãŒã«ã¹ã«ãŒæ®µèœãæ¡ä»¶ä»ãã§å®è¡ããããµãã«ãŒãã³ã
æ¬¡ã®æ§é ãèããŠã¿ãŸãããã
INITIALIZE.
PERFORM SETUP
PERFORM PROCESS THRU FINALIZE
GOBACK
SETUP.
DISPLAY "Setting up"
PROCESS.
DISPLAY "Processing"
FINALIZE.
DISPLAY "Finalizing"
UNUSED.
DISPLAY "Dead code"
ãã®äŸã§ã¯ã UNUSED ãã®æ®µèœã¯ã PERFORMããŸããã©ãŒã«ã¹ã«ãŒãã¹ã®äžéšã§ããããŸãããCFGè§£æã§ã¯ãå
¥åãšããžãæ¥ç¶ãããŠããªãããšãç¹å®ãããŸãã UNUSED ããŒãã«å°éäžèœãšããŠããŒã¯ããŸãããã®æ¹æ³ã§ã¯ãã³ãŒãã»ã°ã¡ã³ãã«æå¹ãªãšã³ããªãã¹ãååšããªãããšãéçã«èšŒæãããããåçãã¬ãŒã¹ã¯äžèŠã«ãªããŸãã
å®éã«ã¯ãCOBOLã®CFGçæã¯ãçŸä»£ã®æ§é åèšèªãããè€éã§ããã¢ãã©ã€ã¶ãŒã¯ã次ã®ãããªåŸæ¥ã®æ§é ãåŠçããå¿
èŠããããŸãã ALTER, GO TO DEPENDING ONã鿥çãªæ®µèœåŒã³åºããã¿ãŒã³ãªã©ããããŸããããã«ããšã³ã¿ãŒãã©ã€ãºã·ã¹ãã ã§ã¯ãå¶åŸ¡ãããŒãåå¥ã«ã³ã³ãã€ã«ãããã¢ãžã¥ãŒã«ã«ãŸãããå Žåããããããã°ã©ã éã®CFGããŒãžãèŠçŽãããåŒã³åºãã°ã©ããå¿
èŠã«ãªããŸãã
CFGãæ§ç¯ããããšãã°ã©ãã®ãã©ããŒãµã«ã«ãã£ãŠå°éäžå¯èœãªãããã¯ãæ€åºãããŸããã¢ãã©ã€ã¶ãŒã¯æ¢ç¥ã®ãšã³ããªãã€ã³ãããéå§ããå°éå¯èœãªãã¹ãŠã®ããŒããããŒã¯ããŸãããã®ãã©ããŒãµã«äžã«èšªåãããªãã£ãããŒãã¯ãããããŒããšã¿ãªããããããªãæ€æ»ã®ããã«ã¬ããŒããããŸãã
CFGè§£æã¯å®è¡ããžãã¯ãæç¢ºãã€èŠèŠçã«è¡šçŸãããšã³ãžãã¢ãCOBOLã¢ããªã±ãŒã·ã§ã³ã«ãããå°éäžèœã³ãŒããåé·ãªåå²ãéå¹ççãªå¶åŸ¡ãã¹ãç¹å®ã§ããããã«ããŸãããŸããã«ãŒãæ€åºãªã©ã®ããé«åºŠãªè§£æã®åºç€ãšããŠãæ©èœããŸãã 圱é¿åæãããã³ç°åžžã¹ã³ã¢ãªã³ã°ãå¶åŸ¡ããŸãã
åŸæ¥ã®ãã©ãŒã«ã¹ã«ãŒããžãã¯ã«ããã誀æ€ç¥ã®åŠç
ã«ããã課é¡ã® XNUMX ã€ã¯ã COBOLããã°ã©ã ã®éçè§£æ ã¬ã¬ã·ãŒãªãã©ãŒã«ã¹ã«ãŒåäœãæ£ç¢ºã«è§£éããããšã§ããæç¢ºãªãããã¯ã¹ã³ãŒããšå¶åŸ¡å¢çã匷å¶ããçŸä»£ã®æ§é åèšèªãšã¯ç°ãªããCOBOLã§ã¯ãã¿ãŒãããŒã¿ãåå²åœä»€ã«ãã£ãŠäžæãããªãéããæç€ºçãªåŒã³åºããªãã«æ®µèœããæ®µèœãžãšå®è¡ãæµããŸãããã®ã¬ã¬ã·ãŒãã¿ãŒã³ã¯ããã°ãã°ã ãã©ãŒã«ã¹ã«ãŒããžãã¯ãåçŽãªéçã¢ãã©ã€ã¶ãŒã«ãã£ãŠãç°¡åã«å°éäžèœãªã³ãŒããšããŠèª€åé¡ãããå¯èœæ§ããããŸãã
次ã®äŸãèããŠã¿ãŸãã
MAIN-LOGIC.
PERFORM SETUP
SETUP.
MOVE A TO B
CLEANUP.
MOVE B TO C
ãã®å Žåã MAIN-LOGIC 段èœã¯æç€ºçã« SETUPã ã ãã© CLEANUP çŽæ¥åç
§ãããããšã¯ãããŸããããããã STOP RUN, GOBACKãŸã㯠GO TO ãã©ããŒäž SETUPããã°ã©ã ã¯å€±æãã CLEANUP å®è¡äžã«çºçããŸãããã®åäœã¯æå¹ã§ãããæå³ãäžæçã§ãããã³ãŒãã®ä¿å®ãå®å
šãªãªãã¡ã¯ã¿ãªã³ã°ãå°é£ã«ãªããŸãã
åçŽãªCFGåæã§ã¯ã CLEANUP 誰ã®ç®æšã«ããªã£ãŠããªããããå°éäžå¯èœãªãã®ãšã㊠PERFORMãã㯠åœéœæ§ éçºè
ã誀解ãããå®éã«ã¯åäœå¯èœãªã³ãŒããåé€ãããæžãæãããããå¯èœæ§ããããŸããããã·ã§ã³ã¯ãªãã£ã«ã«ãªã·ã¹ãã ã§ã¯ããã®ãããªèª€è§£ã¯æ·±å»ãªãªã¹ã¯ããããããŸãã
ãããæ£ããåŠçããã«ã¯ãéçã¢ãã©ã€ã¶ãŒã¯é£æ¥ããæ®µèœéã®æé»çãªå¶åŸ¡ã®ç§»è¡ãèªèããå¿
èŠããããŸãããŸããããã°ã©ã åºæã®ã³ãŒãã£ã³ã°èŠçŽãå°éããå¿
èŠããããŸããã·ã¹ãã ã«ãã£ãŠã¯ãæç€ºçã«åç
§ãããŠããªã段èœããã©ãŒã«ã¹ã«ãŒããžãã¯ã®ããã«æå³çã«çµã¿èŸŒãŸããŠããå ŽåããããŸãããŸãããã¹ãŠã®æ®µèœã以äžã®æ¹æ³ã§åŒã³åºãããããšãæ³å®ãããŠããå ŽåããããŸãã PERFORM ã®ã¿ããã®åºå¥ã«ã¯ãæ¢ç¥ã®ã¢ãŒããã¯ãã£ãã¿ãŒã³ã«åºã¥ããŠåæåäœãé©å¿ãããæ§æããã¥ãŒãªã¹ãã£ãã¯ãå¿
èŠã«ãªãããšããããããŸãã
é«åºŠãªåæè£ 眮ã§ã¯ã äœçœ®ãèæ ®ããCFGæ§ç¯ (NAIST) ãš ã»ãã³ãã£ãã¯ãããã¡ã€ãªã³ã° 誀æ€ç¥ãæå°éã«æããããã«ãæç€ºçãªåå²ã ãã§ãªããæ®µèœã®é 眮ãã³ãŒãããŒã¹ã§èгå¯ãããäžè¬çãªæç¶ããã¿ãŒã³ãèæ ®ããŠå®è¡é åºãã¢ãã«åããŸããããã«ããŠãŒã¶ãŒã«ããæ³šéãã·ã¹ãã åºæã®ã«ãŒã«ãçµ±åããããšã§ãæå³ãããã©ãŒã«ã¹ã«ãŒåäœãã¢ãã©ã€ã¶ãŒã«éç¥ã§ããŸãã
ãããã®ãã¥ã¢ã³ã¹ãèæ ®ããããšã§ãéçåæã¯ããä¿¡é Œæ§ãé«ããå®çšçã«ãªããåŸæ¥ã® COBOL éçºã®çŸå®ã«æ²¿ã£ããã®ã«ãªããŸãã
èªå®æ¡ä»¶ SMART TS XL å°éäžå¯èœãªã³ãŒããé«ç²ŸåºŠã§ãã©ã°ä»ã
å€§èŠæš¡ãªCOBOLç°å¢ã§ã¯ãå°éäžèœã³ãŒãã¯æ°åãã®æ®µèœãã¢ãžã¥ãŒã«ã«æ·±ãåã蟌ãŸããŠããããšããããããŸãããããæ£ç¢ºã«ç¹å®ããã«ã¯ãåºæ¬çãªè§£æä»¥äžã®åŠçãå¿ èŠã§ãã SMART TS XL é«åºŠãªå¶åŸ¡ãã㌠ã¢ããªã³ã°ãã³ã³ããã¹ãã«å¿ããåæãããã³ãšã³ã¿ãŒãã©ã€ãºåºæã®ãã¥ãŒãªã¹ãã£ãã¯ãé©çšããŠé«ç²ŸåºŠã®èšºæãå®çŸããããšã§ããã®èª²é¡ã«å¯ŸåŠããŸãã
ã®æåã®å©ç¹ SMART TS XL ãã®ã«ãããŸã å
æ¬çãªå¶åŸ¡ãããŒã°ã©ãçæåäžã®ã¢ãžã¥ãŒã«ãŸãã¯ããã·ãŒãžã£å
ã§åäœããåçŽãªãªã³ã¿ãŒãšã¯ç°ãªãã SMART TS XL ãžã§ãã¹ããããããã°ã©ã ãããã«ã¯å€éšJCLåç
§ã«æž¡ãå¶åŸ¡ãããŒããããã³ã°ããŸããããã°ã©ã ãšã³ããªãã€ã³ãã¯ã PROCEDURE DIVISIONã ãã§ãªãããžã§ã ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ ãã¡ã€ã«ããã©ã³ã¶ã¯ã·ã§ã³å®çŸ©ããµãããã°ã©ã ãåŒã³åºãæ¡ä»¶åå²ãããååŸã§ããŸãã
åæäžã SMART TS XL å¶åŸ¡ãã¹ããã®å
¥åãšããžããªã段èœããããã¯ãæ€åºããŸãããããã®ã»ã°ã¡ã³ãã¯å°éäžèœãšããŠãã©ã°ä»ããããŸãããã®ããŒã«ã®ç¹åŸŽã¯ãçã®ãããã³ãŒããšãããã³ãŒãã§ã¯ãªãã³ãŒããåºå¥ã§ããç¹ã§ãã æé»çãªãã©ãŒã«ã¹ã«ãŒãéããŠå°éå¯èœ ãŸãã¯åçåŒã³åºããäœçœ®ãèæ
®ãã PERFORM THRU ã·ãŒã±ã³ã¹ãããã³èª€æ€ç¥ãåé¿ããããã®æé äžã®ä»®å®ãçµã¿èŸŒãŸããŠããŸãã
ããã«ããã®ãã©ãããã©ãŒã ã¯ãå®è¡ããžãã¯ã«åœ±é¿ãäžããVSAMå®çŸ©ãCOPYBOOKæ§é ãã«ã¹ã¿ã å¶åŸ¡ããŒãã«ãšãã£ãã¬ã¬ã·ãŒã¡ã¿ããŒã¿ãšçµ±åãããŠããŸããããã«ãããã¢ãã©ã€ã¶ãŒã¯ããŒã¿äœ¿çšãã¿ãŒã³ãå¶åŸ¡ãããŒã¢ãã«ã«çµã¿èŸŒãããšãã§ããŸããäŸãã°ãå ±æãã©ã°ãããŒã¿ããŒã¹ããŒã®å®è¡æç¶æ ã«å¿ããŠåŒã³åºããè¡ãããæ®µèœã«ã€ããŠãå°éäžèœãã©ã°ãæå¶ããããšãã§ããŸãã
SMART TS XL ãŸããã€ã³ã¿ã©ã¯ãã£ããªã€ã³ã¿ãŒãã§ãŒã¹ãéããŠãå°éäžå¯èœãªãããã¯ãèŠèŠçã«æ¢çŽ¢ããããšãã§ããŸããéçºè ã¯ã段èœãå°éäžå¯èœãªçç±ã远跡ããä»ã®åå²ãã©ã®ããã«ãããè¿åãããã確èªãããããæ¬åœã«å»æ¢ãããŠããã®ãããããšãæ¡ä»¶ä»ãã§éã¢ã¯ãã£ãã«ãªã£ãŠããã ããªã®ãã倿ã§ããŸãããã®è¿œè·¡å¯èœæ§ã¯ãç¹ã«æ¬¡ã®ãããªå Žåã«æææ±ºå®ãæ¹åããŸãã ã¬ã¬ã·ãŒã·ã¹ãã ã®è¿ä»£å ãŸãã¯ã³ã³ãã©ã€ã¢ã³ã¹ç£æ»ã®æºåãããã
ã°ã©ããã©ããŒãµã«ãå±¥æŽäœ¿çšç¶æ³ãããã¡ã€ãªã³ã°ãå®è¡ã³ã³ããã¹ãã¢ããªã³ã°ãçµã¿åãããããšã§ã SMART TS XL èª€å ±åãæå°éã«æããéèŠãªå¶åŸ¡ç°åžžãåªå ããŸããããã«ãããã¬ã¬ã·ãŒCOBOLã¢ããªã±ãŒã·ã§ã³ã®ã¯ãªãŒã³ã¢ãããšãå€§èŠæš¡ãªå¶åŸ¡ãããŒã®æŽåæ§ç¶æã«åœ¹ç«ã€åŒ·åãªããŒã«ãšãªããŸãã
COBOLã«ãããç¡éã«ãŒããšååž°ã®ãªã¹ã¯
COBOLã«ãããç¡éã«ãŒãã¯ãCPU䜿çšçã®ç¡å¶éåããã©ã³ã¶ã¯ã·ã§ã³ããã¯ãããã«ã¯ã·ã¹ãã å šäœã®åæ¢ãåŒãèµ·ããå¯èœæ§ã®ãããæ·±å»ãªå¶åŸ¡ãããŒã®ç°åžžã§ããCOBOLã«ã¯çŸä»£ã®ããã°ã©ãã³ã°èšèªã«èŠããããããªãã€ãã£ãã®ååž°é¢æ°ã¯ãããŸããããã«ãŒãæ§é ããã©ã°ã®èª€çšãäžé©åãªãµãããã°ã©ã 管çãCOPYBOOKã€ã³ã¯ã«ãŒããªã©ã«ãã£ãŠãç¡éå¶åŸ¡ãããŒãçºçããå¯èœæ§ããããŸãã
æ¥åžžçãªãã¹ãã§çºèŠãããäžæçãªãã°ãšã¯ç°ãªããç¡éã«ãŒãã¯çšãªå ¥åããšããžã³ã³ãã£ã·ã§ã³ã«ãã£ãŠããªã¬ãŒããããŸã§ããã°ãã°æœåšçã«ååšããŸãããã®ããã1åã®ã«ãŒãååŸ©ã§æ°çŸäžä»¶ãã®ã¬ã³ãŒããåŠçãããããåŠçç°å¢ã§ã¯ãç¹ã«å±éºã§ããCICSã®ãããªå¯Ÿè©±åã·ã¹ãã ã§ã¯ãç¡éã«ãŒãã«ãã£ãŠç«¯æ«ã»ãã·ã§ã³ãå¿çããªããªãããã©ã³ã¶ã¯ã·ã§ã³ãªãœãŒã¹ãç¡éã«æ¶è²»ãããå¯èœæ§ããããŸãã
COBOLã«ãããç¡éã«ãŒãã®æ ¹æ¬çãªåå ã¯æ§ã
ã§ãããããããã¿ãŒã³ã¯ PERFORM UNTIL çµäºæ¡ä»¶ãæ¬ èœããŠãããå°éã§ããªãæããã®ä»ã®åœ¢æ
ãšããŠã¯ã端æ«ããã°ã©ã ã«ãããã€ãã³ãé§ååã«ãŒãã®äžé©åãªåŠçããå
¥åæ¡ä»¶ãæçµçã«åœã«ãªããšæ³å®ããªããå®éã«ã¯åœã«ãªããªãããŒã¿äŸååã«ãŒããªã©ãæããããŸãã
COBOLã«ãããååž°ãªã¹ã¯ã¯ãã埮åŠã§ããCOBOLã§ã¯çŸä»£ã®èšèªã®ããã«èªå·±åç
§æç¶ãã¯èš±å¯ãããŠããŸããããããã§ãååž°ã¯ã·ãã¥ã¬ãŒãããããããµãããã°ã©ã ã«ãã£ãŠèª€ã£ãŠå°å
¥ããããããå¯èœæ§ããããŸãã CALLãšCOPYBOOKã®ã€ã³ã¯ã«ãŒããCOPYBOOKã«ãæçµçã«åãCOPYBOOKãåã€ã³ã¯ã«ãŒãããã»ã¯ã·ã§ã³ãåŒã³åºãããžãã¯ãã€ã³ã¯ã«ãŒããããŠããå Žåãå¶åŸ¡ãµã€ã¯ã«ãçºçããŸãããã®ãããªãã¿ãŒã³ã¯ãŸãã§ãããã¡ã¢ãªãšã³ã³ãã€ã©æéãç¯çŽããããã«åå©çšãšã€ã³ã©ã€ã³å±éãäžè¬çã«è¡ãããŠããã¬ã¬ã·ãŒã·ã¹ãã ã§ã¯èгå¯ãããŠããŸãã
éçè§£æã¯ãç¡éã«ãŒãã®ãªã¹ã¯ãç¹å®ããããã®å®çšçãªã¢ãããŒããæäŸããŸããã«ãŒãæ§é ãçµäºæ¡ä»¶ãããã³ããã·ãŒãžã£éãããŒãè§£æããããšã§ãã¢ãã©ã€ã¶ãŒã¯å¶åŸ¡ãã¹ããããªãå®è¡å¯èœãªç¶æ ã«ãããŠãäžæãããªãã±ãŒã¹ãæ€åºã§ããŸããååž°çãªã€ã³ã¯ã«ãŒãã®å Žåããµã€ã¯ã«æ€åºã¢ã«ãŽãªãºã ã¯ã¢ãžã¥ãŒã«éã®åŒã³åºãããã¬ãŒã¹ããã³ãŒã«ã°ã©ãå ã®æœåšçãªã«ãŒãããã©ã°ä»ãããŸãã
COBOLã·ã¹ãã ã®å®å®æ§ãšããã©ãŒãã³ã¹ãç¶æããããã«ã¯ãç¡éã«ãŒãç¶æ ãæ€åºãã察åŠããããšãäžå¯æ¬ ã§ããããããå¶åŸ¡ç°åžžã¯ãå°å ¥åŸã®ãããã°ãå°é£ãªå Žåãå€ããæç¶ãåããžãã¯ãšå®è¡æã®åäœã®äž¡æ¹ãè©³çŽ°ã«ææ¡ããå¿ èŠããããŸãã
ç¡å¶éã«ãŒãã®éçæ€åº
COBOLã«ãããç¡éã«ãŒãã¯ãå€ãã®å Žåã PERFORM æå¹ãªçµäºæ¡ä»¶ãæ¬ ããæããããã®ã«ãŒãã«ã¯åºæã®å®å
šçããªããããç¹å®ã®ããŒã¿æ¡ä»¶ãæç¶ãäžã®æ¬ é¥ãããå Žåã«ã¯ãã«ãŒããç¡æéã«ç¶ç¶ããå¯èœæ§ããããŸããå®çšŒåç°å¢ã§ã¯ããã®ãããªåäœã«ãããããã°ã©ã ãã·ã¹ãã ãªãœãŒã¹ãæ¶è²»ãããŸãŸé²è¡ã§ããããžã§ãã®å€±æãããŒã¿ã®äžæŽåããŸãã¯æåã«ããä»å
¥ãçºçããå¯èœæ§ããããŸãã
äžè¬çãªæ§é ã¯æ¬¡ã®ãšããã§ãã
PERFORM PROCESS-DATA UNTIL COMPLETED = 'Y'.
ãã®ã«ãŒãã¯äžèŠå®å
šã«èŠããŸããããããéçè§£æã§ã¯å€æ°ã COMPLETED 'Y'ã«èšå®ãããŠãã PROCESS-DATA 段èœãåæã§æžãèŸŒã¿æäœãèŠã€ãããªãå Žåã¯ã COMPLETEDããŸãã¯åå²ããžãã¯ã«ããå²ãåœãŠã«å°éã§ããªããšå€æãããå Žåããããç¡å¶éã«ãŒããšããŠãã©ã°ä»ãããŸãã
çµäºæ¡ä»¶ããã¡ã€ã«èªã¿åãããã©ã³ã¶ã¯ã·ã§ã³ãã©ã°ãããŒã¿ããŒã¹ãã£ãŒã«ããªã©ã®å€éšå ¥åã«äŸåããå Žåãããè€éãªã±ãŒã¹ãçºçããŸããäŸãã°ã
PERFORM UNTIL END-OF-FILE = 'Y'
READ CUSTOMER-FILE
AT END
MOVE 'Y' TO END-OF-FILE
NOT AT END
PERFORM PROCESS-CUSTOMER
END-PERFORM.
ããã§ãéçæ€åºã¯ã READ æäœãå®è¡ããã«ãŒãçµäºæ¡ä»¶ãäžè²«ããŠæŽæ°ãããã©ããã確èªããŸãã END-OF-FILE ã©ã®ãã©ã³ãã«ãå²ãåœãŠãããªãããŸã㯠AT END ãã©ã°ã®é
眮ãééã£ãŠããããã«ããžãã¯ã«å°éã§ããªãå Žåãã«ãŒããç¡éã«å®è¡ãããå±éºæ§ããããŸãã
æ€åºæ¹æ³ã«ã¯ä»¥äžã®ãã®ããããŸãã
- ã«ãŒãæ¬äœå ã®ãã¹ãŠã®ãã¹ã«ãããå¶åŸ¡ãããŒã®ãã¬ãŒã¹
- ã«ãŒãæ¡ä»¶ã«çµã³ä»ãããã倿°ã®ç¶æ 远跡
- æ¬ èœãŸãã¯å°éäžèœãªå²ãåœãŠã®æ€åº
- äºæž¬ã§ããªãçµæãããããå€éšäŸåé¢ä¿ïŒäŸïŒããŒã¿ããŒã¹ã®èªã¿åãïŒã®ãã©ã°ä»ã
éçããŒã«ã¯ãçµäºå€æ°ãžã®çŽæ¥çããã³éæ¥çãªå€æŽã®äž¡æ¹ãèæ
®ããå¿
èŠããããŸããããã«ã¯ä»¥äžãå«ãŸããŸãã MOVE, SETããã«ãæºããããå¯èœæ§ãäœãæ¡ä»¶ã«ãã£ãŠå²ãåœãŠãå¶éãããæ¡ä»¶ä»ãããžãã¯ããããŸãã
éçè§£æã¯ããããã®ãã¿ãŒã³ãç¹å®ããããšã§ãã«ãŒããããã©ãŒãã³ã¹ã«åœ±é¿ãäžããããæ¬çªç°å¢ã§ã€ã³ã·ãã³ããåŒãèµ·ããããããåã«ãéçºè ãä»å ¥ããã®ã«åœ¹ç«ã¡ãŸããã«ãŒãããªãã¡ã¯ã¿ãªã³ã°ããæç¢ºã«å®çŸ©ãããçµäºåºæºãšæ€èšŒå¯èœãªç¶æ æŽæ°ãå«ããããšã§ãã·ã¹ãã ã®ä¿¡é Œæ§ãšãããã°ã®å®¹æããå€§å¹ ã«åäžããŸãã
ç¡å¶éã«ãŒãã®éçæ€åº
COBOLã«ãããç¡éã«ãŒãã¯ãå€ãã®å Žåã PERFORM æå¹ãªçµäºæ¡ä»¶ãæ¬ ããæããããã®ã«ãŒãã«ã¯åºæã®å®å
šçããªããããç¹å®ã®ããŒã¿æ¡ä»¶ãæç¶ãäžã®æ¬ é¥ãããå Žåã«ã¯ãã«ãŒããç¡æéã«ç¶ç¶ããå¯èœæ§ããããŸããå®çšŒåç°å¢ã§ã¯ããã®ãããªåäœã«ãããããã°ã©ã ãã·ã¹ãã ãªãœãŒã¹ãæ¶è²»ãããŸãŸé²è¡ã§ããããžã§ãã®å€±æãããŒã¿ã®äžæŽåããŸãã¯æåã«ããä»å
¥ãçºçããå¯èœæ§ããããŸãã
äžè¬çãªæ§é ã¯æ¬¡ã®ãšããã§ãã
PERFORM PROCESS-DATA UNTIL COMPLETED = 'Y'.
ãã®ã«ãŒãã¯äžèŠå®å
šã«èŠããŸããããããéçè§£æã§ã¯å€æ°ã COMPLETED 'Y'ã«èšå®ãããŠãã PROCESS-DATA 段èœãåæã§æžãèŸŒã¿æäœãèŠã€ãããªãå Žåã¯ã COMPLETEDããŸãã¯åå²ããžãã¯ã«ããå²ãåœãŠã«å°éã§ããªããšå€æãããå Žåããããç¡å¶éã«ãŒããšããŠãã©ã°ä»ãããŸãã
çµäºæ¡ä»¶ããã¡ã€ã«èªã¿åãããã©ã³ã¶ã¯ã·ã§ã³ãã©ã°ãããŒã¿ããŒã¹ãã£ãŒã«ããªã©ã®å€éšå ¥åã«äŸåããå Žåãããè€éãªã±ãŒã¹ãçºçããŸããäŸãã°ã
PERFORM UNTIL END-OF-FILE = 'Y'
READ CUSTOMER-FILE
AT END
MOVE 'Y' TO END-OF-FILE
NOT AT END
PERFORM PROCESS-CUSTOMER
END-PERFORM.
ããã§ãéçæ€åºã¯ã READ æäœãå®è¡ããã«ãŒãçµäºæ¡ä»¶ãäžè²«ããŠæŽæ°ãããã©ããã確èªããŸãã END-OF-FILE ã©ã®ãã©ã³ãã«ãå²ãåœãŠãããªãããŸã㯠AT END ãã©ã°ã®é
眮ãééã£ãŠããããã«ããžãã¯ã«å°éã§ããªãå Žåãã«ãŒããç¡éã«å®è¡ãããå±éºæ§ããããŸãã
æ€åºæ¹æ³ã«ã¯ä»¥äžã®ãã®ããããŸãã
- ã«ãŒãæ¬äœå ã®ãã¹ãŠã®ãã¹ã«ãããå¶åŸ¡ãããŒã®ãã¬ãŒã¹
- ã«ãŒãæ¡ä»¶ã«çµã³ä»ãããã倿°ã®ç¶æ 远跡
- æ¬ èœãŸãã¯å°éäžèœãªå²ãåœãŠã®æ€åº
- äºæž¬ã§ããªãçµæãããããå€éšäŸåé¢ä¿ïŒäŸïŒããŒã¿ããŒã¹ã®èªã¿åãïŒã®ãã©ã°ä»ã
éçããŒã«ã¯ãçµäºå€æ°ãžã®çŽæ¥çããã³éæ¥çãªå€æŽã®äž¡æ¹ãèæ
®ããå¿
èŠããããŸããããã«ã¯ä»¥äžãå«ãŸããŸãã MOVE, SETããã«ãæºããããå¯èœæ§ãäœãæ¡ä»¶ã«ãã£ãŠå²ãåœãŠãå¶éãããæ¡ä»¶ä»ãããžãã¯ããããŸãã
éçè§£æã¯ããããã®ãã¿ãŒã³ãç¹å®ããããšã§ãã«ãŒããããã©ãŒãã³ã¹ã«åœ±é¿ãäžããããæ¬çªç°å¢ã§ã€ã³ã·ãã³ããåŒãèµ·ããããããåã«ãéçºè ãä»å ¥ããã®ã«åœ¹ç«ã¡ãŸããã«ãŒãããªãã¡ã¯ã¿ãªã³ã°ããæç¢ºã«å®çŸ©ãããçµäºåºæºãšæ€èšŒå¯èœãªç¶æ æŽæ°ãå«ããããšã§ãã·ã¹ãã ã®ä¿¡é Œæ§ãšãããã°ã®å®¹æããå€§å¹ ã«åäžããŸãã
PERFORMã«ãŒãã®çµäºæ¡ä»¶ã®æ¬ èœ
COBOLã¯è€æ°ã®ããªãšãŒã·ã§ã³ãæäŸããŠãã PERFORM ã«ãŒããå«ã PERFORM UNTIL, PERFORM VARYING, PERFORM WITH TEST BEFORE/AFTERãããã®æ§é ã¯æè»ã§ãããçµäºæ¡ä»¶ãæç€ºçã«é©çšãããŠããªãå ŽåããŸãã¯å€åããªã倿°ã®ç¶æ
ã«åºã¥ããŠããå Žåããªã¹ã¯ã䌎ããŸããéçãŸãã¯å°éäžå¯èœãªçµäºæ¡ä»¶ãæã€ã«ãŒãã¯ãå®è¡ãç¡å¶éã«ãªããããããžã§ãã忢ããããCICSãã©ã³ã¶ã¯ã·ã§ã³ãããã¯ããããããå¯èœæ§ããããŸãã
次ã®äŸãèããŠã¿ãŸãã
PERFORM WITH TEST AFTER
PROCESS-RECORD.
äžèšã®ã«ãŒãã¯çµäºæ¡ä»¶ãå®çŸ©ããŠããŸããã PROCESS-RECORD æçµçã«ã¯æ¡ä»¶æãåŒã³åºã EXIT PERFORMã§ãããããã¯æ§æäžåŒ·å¶ããããã®ã§ã¯ãããŸããã EXIT PERFORM è«çé害ãŸãã¯å
¥åç°åžžã«ããããªã¬ãŒãããªãå Žåãã«ãŒãã¯ç¡éã«å®è¡ãããŸãã
çµäºæ¡ä»¶ãå®çŸ©ãããŠãããããããå¶åŸ¡ããç¶æ ãã«ãŒãæ¬äœå ã§å€æŽãããªãå Žåããã埮åŠãªã±ãŒã¹ãçºçããŸãã
PERFORM PROCESS-CUSTOMERS UNTIL FILE-STATUS = 'EOF'.
If FILE-STATUS å
éšã¯æŽæ°ãããŠããªã PROCESS-CUSTOMERSãŸãã¯ãã¢ã¯ãã£ãåãããªãæ¡ä»¶åå²ã§æŽæ°ãçºçããå Žåãã«ãŒãã¯ç¡å¶éã®ãŸãŸã«ãªããŸãã
éçåæã§ã¯ã次ã®ãããªæ¹æ³ã§ãã®ãããªç¶æ ãæ€åºããŸãã
- ã«ãŒã宣èšãè§£æããŠæ¡ä»¶åŒãæœåºãã
- ã«ãŒãæ¬äœå ã®å€æ°å²ãåœãŠã®èå¥
- å²ãåœãŠãçµäºæ¡ä»¶ã«åœ±é¿ãäžãããã©ãããè©äŸ¡ãã
- ãã®ãããªå²ãåœãŠããã¹ãŠã®çŸå®çãªå¶åŸ¡ãã¹ã§å°éå¯èœã§ããããšãæ€èšŒãã
ä¿èšŒãããå²ãåœãŠããªãå Žåãã«ãŒãã¯æœåšçã«ç¡éã§ãããšããŒã¯ãããŸãã
ããŒã¿ããŒã¹ã¯ãšãªãCICSãã©ã³ã¶ã¯ã·ã§ã³ãšãã£ãå€éšåŒã³åºãã®åœ±é¿ãåãããã©ã°ã§ã¯ãå¥ã®è€éãªåé¡ãçºçããŸãããããã®æäœã¯éæ¥çã«çµäºæ¡ä»¶ãèšå®ããå¯èœæ§ããããæç€ºçãªå éšããžãã¯ããªããã°ãéçæšè«ã ãã§ã¯ãã®å¹æãä¿èšŒããããšãã§ããŸããããã®ãããªå ŽåãããŒã«ã¯ã«ãŒããæ¡ä»¶ä»ãç¡å¶éãšããŠæ³šéä»ãããæåã«ããã¬ãã¥ãŒãæšå¥šããããšããããŸãã
ãããã®ãªã¹ã¯ã軜æžããããã«ãCOBOLéçºè ã¯çµäºããžãã¯ãæç€ºçãã€æ€èšŒå¯èœã«ããããšãç®æãã¹ãã§ããåã«ãŒãã«ãããŠãæ¡ä»¶ãã©ã®ããã«ãã©ãã§æºããããããæç¢ºã«ç€ºãå¿ èŠããããŸããã¢ãµãŒã·ã§ã³ãæ§é åãããçµäºãã¹ãçµã¿èŸŒãããšã§ãè§£æç²ŸåºŠãšããã°ã©ã ã®ä¿¡é Œæ§ã®äž¡æ¹ãåäžããŸãã
ååž°çãªCOPYBOOKã®å å«ãªã¹ã¯
COBOLã§ã¯ãCOPYBOOKã¯ãå ±æããŒã¿å®çŸ©ããå Žåã«ãã£ãŠã¯åå©çšå¯èœãªããžãã¯ãå«ããããšã§ãã³ãŒãã®åå©çšãä¿é²ããããã°ã©ã éã®äžè²«æ§ãç¶æããããã«åºã䜿çšãããŠããŸããCOPYBOOKã¯æ¬è³ªçã«æå®³ã§ã¯ãããŸããããäžé©åã«äœ¿çšããããšãç¹ã«ä»¥äžã®ãããªå Žåã«æ·±å»ãªå¶åŸ¡ãããŒã®ç°åžžãåŒãèµ·ããå¯èœæ§ããããŸãã ååž°çå å«ãã¿ãŒã³ ãŸãã¯æå³ããªãå¶åŸ¡ãµã€ã¯ã«ãçºçããŸãã
COBOLèªäœã¯æç¶ãã¬ãã«ã§ã®çã®ååž°ããµããŒãããŠããªããïŒCãPythonã®ãããªèšèªã§èŠããããããªïŒãCOPYBOOKã«å®è¡å¯èœãªæ®µèœã PERFORM ã³ãŒãã®ã»ã¯ã·ã§ã³ãåç
§ããã¹ããŒãã¡ã³ãã¯ãå
ã®ã³ããŒããã¯ãåã³ã€ã³ã¯ã«ãŒãããŸãããã®åœ¢åŒã® 鿥ååž° æåæ€æ»ã§ã¯æ€åºãé£ãããæç€ºçã«ããªã¬ãŒãããªãéããã¹ãäžã«è¿œè·¡ããããšãã»ãŒäžå¯èœãªå¶åŸ¡ãµã€ã¯ã«ãäœæãããŸãã
åçŽåããäŸ:
* In MAIN-PROGRAM
COPY INCLUDE-LOGIC.
...
* In INCLUDE-LOGIC COPYBOOK
PERFORM VALIDATE-ENTRY.
...
VALIDATE-ENTRY.
COPY INCLUDE-LOGIC.
ããã§ã VALIDATE-ENTRY 段èœã¯ãå
ã
åŒã³åºããã®ãšåãCOPYBOOKãåã蟌ã¿ãååž°çãªã€ã³ã¯ã«ãŒããåŒãèµ·ãããŸããã³ã³ãã€ã«æã«ãCOPYBOOKã«æ§æçã«æå¹ãªæ§é ãå«ãŸããŠããå Žåãããã«ãšã©ãŒãçºçããªãå¯èœæ§ããããŸãããã ããæ¡åŒµãããå¶åŸ¡ãããŒã«ã¯ã ã«ãŒããã¹ æç¢ºãªåºå£ããªãã
éçè§£æããŒã«ã¯ãæ¬¡ã®æ¹æ³ã§ããã«å¯ŸåŠããŸãã
- COPYBOOKéå±€ãåäžã®å¶åŸ¡ãããŒã¢ãã«ã«ãã©ããåãã
- ããã°ã©ã ãšã³ããŒããã¯éã®å å«é¢ä¿ã®è¿œè·¡
- å å«ã°ã©ããšå®è¡ã°ã©ãã«ããããµã€ã¯ã«ã®æ€åº
- åãåŒã³åºããã§ãŒã³å ã§åã COPYBOOK ãžã®ç¹°ãè¿ãåç §ã«ãã©ã°ãä»ãã
å€§èŠæš¡ã·ã¹ãã ã§ã¯ãç¹ã«COPYBOOKãè€æ°ã®ã¢ãžã¥ãŒã«ã«ãŸããããäžè²«æ§ã®ãªãæ¹æ³ã§åå©çšãããŠããå Žåãããããååž°ãã¹ã®æ€åºã¯å°é£ã§ããéçºè ã¯åã€ã³ã¯ã«ãŒããç¬ç«ããŠãããšæ³å®ããŠãããããããŸããããå®éã«ã¯æ¡åŒµãããã³ãŒãã«ãã£ãŠåŸªç°äŸåé¢ä¿ãçããŠããŸãã
ãã®ãããªååž°çãªã€ã³ã¯ã«ãŒãã¯ãç¡éå¶åŸ¡ã«ãŒããCALLãã§ãŒã³ã«ãããã¹ã¿ãã¯ãªãŒããŒãããŒïŒååž°ããµãããã°ã©ã ãå«ãå ŽåïŒããããŠäºæž¬äžå¯èœãªå®è¡æåäœãšãã£ãåé¡ãåŒãèµ·ãããŸãããŸããCOBOLãæ§é åèšèªã«å€æããèªåããŒã«ããããã®ãµã€ã¯ã«ãæå¹ãªå埩ããžãã¯ãšèª€èªããå¯èœæ§ããããããã¢ããã€ãŒãŒã·ã§ã³ã®åãçµã¿ãè€éåãããŸãã
COPYBOOKå ã§å®è¡å¯èœã³ãŒããé¿ããããæç¶ãåããžãã¯ãå ±æå®çŸ©ããåé¢ãããããããšãããã®ãªã¹ã¯ã軜æžããããã®å®çšçãªã¢ãããŒãã§ããããžãã¯ã®åå©çšãå¿ èŠãªå Žåã¯ãCOPYBOOKã«åã蟌ãŸããå®è¡ããžãã¯ããããæç¢ºãªåŒã³åºãå¢çãæã€ãµãããã°ã©ã ã䜿çšããæ¹ãæãŸããã§ãããã
çµäºã¬ãŒããªãã®ã€ãã³ãé§ååã«ãŒã
端æ«ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ããŸãã¯å€éšããã€ã¹ãšå¯Ÿè©±ããCOBOLã·ã¹ãã ãç¹ã«CICSãåæ§ã®ãã©ã³ã¶ã¯ã·ã§ã³ã¢ãã¿ãŒã®äžã§å®è¡ãããã·ã¹ãã ã§ã¯ãã€ãã³ãé§ååã«ãŒããäžè¬çãªãã¿ãŒã³ã§ãããããã®ã«ãŒãã¯ãå ¥åãåŸ æ©ãããããåŠçããããŒå ¥åãã³ãã³ããå¶åŸ¡æåãªã©ã®ç¹å®ã®æ¡ä»¶ãæºãããããŸã§æäœãç¶ç¶ããããã«èšèšãããŠããŸãããã ããé©å㪠çµäºã¬ãŒã å®è£ ãããŠããªãå Žåããããã®ã«ãŒãã¯ç¹å®ã®æ¡ä»¶äžã§ç¡æéã«å®è¡ãããã¢ããªã±ãŒã·ã§ã³ã®ãã³ã°ããªãœãŒã¹ ãªãŒã¯ãçºçããå¯èœæ§ããããŸãã
ã€ãã³ãé§ååã«ãŒãã®å žåçãªäŸã¯æ¬¡ã®ãšããã§ãã
PERFORM UNTIL EIBAID = 'CLEAR'
EXEC CICS RECEIVE MAP(MAP-NAME)
END-EXEC
PERFORM PROCESS-INPUT
END-PERFORM.
ãã®æ§é ã§ã¯ããŠãŒã¶ãŒããCLEARãããŒãæŒããŸã§ãã«ãŒãã¯ãŠãŒã¶ãŒå
¥åã®åä¿¡ãšåŠçãç¶ç¶ããã¯ãã§ãããããã EIBAID æŽæ°ãããªãå ŽåïŒäŸãã°ã端æ«ãæå¹ãªå
¥åãéä¿¡ããªãå Žåããããã³ã°ãšã©ãŒãçºçããå ŽåïŒãã«ãŒãã¯ç¡éã«ãªããŸããææªã®å ŽåãæŽæ°ããžãã¯ã EIBAID æ¡ä»¶ãŸãã¯äŸå€ãã¹ã«ããååšããªããå°éã§ããªãå¯èœæ§ããããæå¹ãªæäœã·ããªãªã§ã¯ã«ãŒããç Žãããšãã§ããªããªããŸãã
éçåæã§ã¯ãæ¬¡ã®æ¹æ³ã§ãããã®è匱æ§ãèå¥ããŸãã
- å ¥åããªã¬ãŒçµäºæ¡ä»¶ã®ã€ãã³ãé§åã«ãŒãã®ã¹ãã£ã³
- å¶åŸ¡å€æ°ã
EIBAID,COMMAREAãã©ã°ãŸãã¯å ¥åãããã¡ãã«ãŒãæ¬äœå ã§å€æŽããã - ç¶æ é·ç§»ãå°éå¯èœã§ãããåžžã«åœã®æ¡ä»¶ãå€éšäŸåé¢ä¿ã«ãã£ãŠå¶éãããŠããªãããšã確èªãã
ãããã®ã«ãŒãã¯ã端æ«ã»ãã·ã§ã³ã®å€±æãã¡ãã»ãŒãžãã¥ãŒã®åæ¢ãäžæ£ãªå ¥åãã±ãããªã©ãæ¬çªç°å¢ã«ç¹æã®ç¶æ³ã§ã®ã¿çºçããå¯èœæ§ããããããåçã«ãã¹ãããããšãç¹ã«å°é£ã§ãããã®çµæããããã®æ¬ é¥ã¯ãé倧ãªé害ãçºçãããŸã§æœåšçã«ååšãç¶ããããšããããããŸãã
ãªã¹ã¯ã軜æžããããã«ãçµäºã¬ãŒãã«ã¯ã€ãã³ããã©ã°ã ãã§ãªãã ã¿ã€ã ã¢ãŠããã§ãã¯, å埩å¶éãŸã㯠ãã©ãŒã«ããã¯ãã¬ãŒã¯æ¡ä»¶ äŸãã°ïŒ
PERFORM UNTIL EIBAID = 'CLEAR' OR LOOP-COUNT > 100
ããã«ãããå ¥åã倱æãããç¡å¹ã«ãªã£ããããå Žåã§ããã«ãŒããç¡æéã«å®è¡ãããããšããªããªããŸãã
é«å¯çšæ§ãäžå¯æ¬ ãªç°å¢ã§ã¯ããã¹ãŠã®ã«ãŒããç¹ã«å€éšå ¥åãåŸ æ©ããã«ãŒãã«æç¢ºãªçµäºãã¹ã远å ããããšããã¹ããã©ã¯ãã£ã¹ã§ããéçè§£æããŒã«ã¯ãä¿è·ãããŠããªãã«ãŒããç¹å®ãããã®æœåšçãªå®è¡çµæãå¯èŠåããããšã§ããã®èŠåŸã®åŒ·åã«åœ¹ç«ã¡ãŸãã
é«ãªã¹ã¯ã«ãŒãæ§é ã®ãã¿ãŒã³èªè
åã ã®ã«ãŒãã®çµäºæ¡ä»¶ãæ€æ»ããããšã¯ã§ããŸãããå€§èŠæš¡ãªåé¡ã®ããå¶åŸ¡ãããŒãæ€åºããæã广çãªæ¹æ³ã®1ã€ã¯ã ãã¿ãŒã³èªèCOBOLã«ãããé«ãªã¹ã¯ã®ã«ãŒãæ§é ã¯ãéçè§£æããŒã«ãèªåçã«ãã©ã°ä»ãã§ãããèªèå¯èœãªãã¿ãŒã³ã«åŸãããšããããããŸãããããã®ãã¿ãŒã³ã¯æ¬è³ªçã«èª€ãã§ã¯ãããŸããããå³å¯ã«ç®¡çããªããšãç¡éã«ãŒããéå°ãªCPU䜿çšçãäžå®å®ãªå¶åŸ¡åäœãåŒãèµ·ãããªã¹ã¯ãé«ãŸããŸãã
ããã€ãã®ã«ãŒã ãã¿ãŒã³ã§ã¯ç¹ã«åé¡ãçºçãããããªããŸãã
1. æ·±ããã¹ããããã«ãŒã
è€æ°ã®ã¬ã€ã€ãŒãé床ã«ãã¹ããããšã PERFORM æã¯çµäºãã¹ãäžæçã«ããå¶åŸ¡ããžãã¯ã®è¿œè·¡ãå°é£ã«ããå¯èœæ§ããããŸããæ·±ããã¹ãã¯ããã¡ã€ã«åŠçãã¬ããŒãçæãªã©ã®ããŒã¿é§ååæäœã§ãã䜿çšãããŸãããæç¢ºã«æ§é åãããŠããªãå ŽåãçµäºåŠçã®èŠéãããã©ã°ã®é
眮ãã¹ãé£éçãªé害ã®çºçå¯èœæ§ãé«ãŸããŸãã
äŸïŒ
cobolã³ããŒç·šéPERFORM UNTIL EOF
PERFORM UNTIL RECORD-FOUND
PERFORM CHECK-INDEX
END-PERFORM
PERFORM PROCESS-DATA
END-PERFORM.
éçåæããŒã«ã¯ãã¹ãã®æ·±ããæ€åºãããããå€ãè¶ ããã€ã³ã¹ã¿ã³ã¹ïŒããšãã°ã3 ã¬ãã«ãè¶ ããæ·±ãïŒã«ãã©ã°ãä»ããŠãéçºè ãè€éããæœåšçãªç¡å¶éã®ãã¹ã確èªã§ããããã«ããŸãã
2. å€éšåºå£ãæã€ã«ãŒã
äœ¿ãæ¹ GOTO, EXIT PERFORMããŸãã¯æªç㪠RETURN ã«ãŒãå
ã®æã¯ãäžèŠåãªå¶åŸ¡ãããŒãçã¿åºãå¯èœæ§ããããŸãããããã®æã¯ã«ãŒãããã®åçãªçµäºãå¯èœã«ãããããã¢ãã«åãšæ€èšŒãå°é£ã«ãªããŸãããããã®æ§é ã«äŸåããŠçµäºããã«ãŒãã¯ãçµäºæ¡ä»¶ãæç¢ºã«å®çŸ©ãããã«ãŒãããããšã©ãŒãçºçãããããªããŸãã
äŸïŒ
cobolã³ããŒç·šéPERFORM UNTIL VALID
IF ERROR
GO TO CLEANUP
END-PERFORM.
ãã¿ãŒã³èªèã«ããããã®ãããªäœ¿çšç¶æ³ããã©ã°ä»ããããã«ãŒãã®è¡çç¶æ ãé©åãã©ããã確èªããããšãä¿ãããŸãã
3. æ®çºæ§å
¥åã«äŸåããã«ãŒã
ã«ãŒãã®çµäºããã¡ã€ã«ãããŒã¿ããŒã¹ããŸãã¯å€éšã·ã¹ãã ããã®å
¥åã«äŸåããå Žåãå®å
šãªçµäºãä¿èšŒããããšãå°é£ã«ãªããŸããå
¥åã忢ãããããŸã£ããåä¿¡ãããªãã£ãããããšãã«ãŒããç¡éã«å®è¡ãããå¯èœæ§ããããŸãã
éçåæããŒã«ã¯ãäŸåé¢ä¿ãã§ãŒã³ã远跡ããI/O æäœãŸãã¯ã©ã³ã¿ã€ã ç¶æ ãã©ã°ã«é¢é£ä»ããããçµäºæ¡ä»¶ãèªèããããšã§ããããèå¥ããŸãã
4. æç¢ºãªåæåãŸãã¯çµäºããžãã¯ããªãã«ãŒã
å¶åŸ¡å€æ°ãåæåããã«éå§ãããã«ãŒããããã©ã°ããªã»ããããã«çµäºããã«ãŒãã¯ãæéã®çµéãšãšãã«äžèŠåãªåäœã瀺ãå¯èœæ§ããããŸãããããã®ã«ãŒãã¯ãã«ãŒãã®æ§é ãšãã«ãŒãå¢çå
ã§ã®äºæããã代å
¥ã®æç¡ã«åºã¥ããŠãã©ã°ãä»ããããŸãã
ã³ãŒãããŒã¹å šäœã§ãããã®ãã¿ãŒã³ãèªèãããã©ã°ä»ãããããšã§ãéçè§£æã¯éçºè ã®æ³šæãæããªã¹ã¯ã®é«ãã«ãŒãã«éäžãããããšãã§ããŸãããã®ããã¢ã¯ãã£ããªã¬ãã¥ãŒããã»ã¹ã«ãããæœåšçãªæ¬ é¥ã®çºç確çãäœæžãããã·ã¹ãã ãå®å šã«ãªãã¡ã¯ã¿ãªã³ã°ãŸãã¯ã¢ããã€ãŒãŒã·ã§ã³ã§ããç¶æ ã«ãªããŸãã
CALLãããããã°ã©ã éã®æç¶ãéã«ãŒãè§£æ
COBOLã·ã¹ãã ãç¹ã«å€§èŠæš¡ãªãšã³ã¿ãŒãã©ã€ãºã¢ããªã±ãŒã·ã§ã³ã§ã¯ãå¶åŸ¡ãããŒãåäžã®ããã°ã©ã ãè¶
ããŠæ¡åŒµãããããšããããããŸããããã¢ãžã¥ãŒã«ãå¥ã®ã¢ãžã¥ãŒã«ãåŒã³åºãããã«ã CALL æããã©ã¡ãŒã¿ãå
±æã¡ã¢ãªãä»ããŠå¶åŸ¡ãšããŒã¿ãæž¡ããŸããã«ãŒãããããã®ããã°ã©ã å¢çããŸããå Žåããã®æ§é ãèå¥ããæ£ããçµäºããããšãä¿èšŒããããšã¯éåžžã«è€éã«ãªããŸããããã æç¶ãéã«ãŒãè§£æ äžå¯æ¬ ã«ãªããŸãã
次ã®äŸãèããŠã¿ãŸãã
cobolã³ããŒç·šéPERFORM UNTIL COMPLETE = 'Y'
CALL 'PROCESS-STEP'
END-PERFORM.
äžèŠãããšããã®ã«ãŒã㯠COMPLETE ãã©ã°ããã ãããã®ãã©ã°ã®å®éã®èšå®ã¯ãµãããã°ã©ã å
ã§è¡ãããå¯èœæ§ãããã PROCESS-STEPããŸãã¯äºæ¬¡ã¢ãžã¥ãŒã«ã®ããã«å¥¥æ·±ãã§ PROCESS-STEP åŒã³åºãããã¹ããããããã°ã©ã ã倿Žã«å€±æããå Žå COMPLETE ãŸãã¯ããŸããªç¶æ³ã§ã®ã¿ãããè¡ããšã芪ããã°ã©ã ã®ã«ãŒããç¡éã«ãªãå¯èœæ§ããããŸãã
éçè§£æã¯åäžãã¡ã€ã«ã®ç¯å²ãè¶
ããŠãåŒã³åºãåŽãšåŒã³åºãå
ããã°ã©ã éã®ããŒã¿ã®æµããè©äŸ¡ããå¿
èŠããããŸããããã«ã¯ã ã³ãŒã«ã°ã©ãããã©ã¡ãŒã¿ã®æµãã远跡ããïŒäŸãã°ã USING ã«ãŒãã®çµäºæ¡ä»¶ïŒç¯ïŒãåŒã³åºããã§ãŒã³ã®ã©ããã§æºããããŠãããã©ãããåæããŸããã¢ãã©ã€ã¶ãŒã¯ãã«ãŒããçµäºããããã«äœ¿çšããã倿°ãäžè²«ããŠæŽæ°ããããã®æŽæ°ãäžè¬çãªå¶åŸ¡ãã¹ã§å°éå¯èœã§ããããšã確èªããå¿
èŠããããŸãã
ããã·ãŒãžã£éã«ãŒãè§£æã«ããã課é¡ã¯æ¬¡ã®ãšããã§ãã
- ãã€ãããã¯ã³ãŒã« ããã°ã©ã åã¯å€æ°ãšããŠæž¡ãããããå®è¡æã«æ±ºå®ããã
- å
±æããŒã¿é å ãããª
LINKAGE SECTIONçŸåšã®ã¢ãžã¥ãŒã«å€ã§å€æŽããã倿° - æ¡ä»¶ä»ãåŒã³åºã ç¹å®ã®ç¶æ ã§ã®ã¿ãµãããã°ã©ã ãåŒã³åºããããã«ãŒãæ€èšŒãè€éã«ãªã
ãããåŠçããããã«ãé«åºŠãªéçè§£æããŒã«ã¯ æèäŸååæã§ã¯ãåãµãããã°ã©ã ã¯åŒã³åºãå ã®ã³ã³ããã¹ãã§è§£æãããŸããã«ãŒãå¶åŸ¡å€æ°ãããã·ãŒãžã£ã®å¢çãè¶ããŠã©ã®ããã«åäœãããã远跡ããããã°ã©ã éã§å€ãã©ã®ããã«äŒæããããã·ãã¥ã¬ãŒãããŸãã
ããã·ãŒãžã£éè§£æã宿œããªããšãçµäºããªãã«ãŒããèŠéãåœé°æ§ããã¢ãã©ã€ã¶ãŒã倿°ã®æŽæ°ã远跡ã§ããªãåœéœæ§ãçºçããå¯èœæ§ããããŸãããããã®å Žåããã·ã¹ãã ã¯ãµã€ã¬ã³ãç¡éã«ãŒãã®è匱æ§ãæ±ããããã©ãŒãã³ã¹ã®äœäžãæ©èœçãªãããããã¯ãåŒãèµ·ããå¯èœæ§ããããŸãã
ã«ãŒãåæãåŒã³åºããã§ãŒã³å šäœã«æ¡åŒµããããšã§ãçµç¹ã¯è€æ°ã®ããã°ã©ã ããžãã¯ãæ£ç¢ºã«å¯èŠåããæ€åºãé£ããè€éãªå¶åŸ¡ãããŒã®é害ãé²ãããšãã§ããŸãã
SMART TS XLã«ãŒãè€é床ã¹ã³ã¢ãªã³ã°ã®ãã¥ãŒãªã¹ãã£ãã¯
è€éãªCOBOLã·ã¹ãã ã§ã¯ããã¹ãŠã®ã«ãŒããåãã¬ãã«ã®ãªã¹ã¯ãããããããã§ã¯ãããŸãããæç¢ºã«å¢çãå®ãããå®å šãªã«ãŒããããã°ãè€æ°ã®ãã¹ãã¬ãã«ãåçãªå ¥åãããã°ã©ã éã®äŸåé¢ä¿ãªã©ã«ãããé害ã®å¯èœæ§ãé«ãŸãã«ãŒãããããŸãã SMART TS XL ãã®èª²é¡ã«å¯ŸåŠããããã«ãã«ãŒãã®è€éãã®ã¹ã³ã¢ãªã³ã°ãå°å ¥ããŸããããã¯ãã«ãŒãããã®æ§é äžã®ãªã¹ã¯ã«å¿ããŠè©äŸ¡ããåªå é äœãä»ãããã¥ãŒãªã¹ãã£ã㯠ããŒã¹ã®ã¡ã«ããºã ã§ãã
ã¹ã³ã¢ãªã³ã° ã·ã¹ãã ã§ã¯ãã«ãŒããç¡éå®è¡ãè«çãšã©ãŒãä¿å®æ§ã®åé¡ãªã©ã®ç°åžžãåŒãèµ·ããå¯èœæ§ãè©äŸ¡ããããã«ãããã€ãã®éèŠãªå±æ§ãèæ ®ããŸãã
1. çµäºæ¡ä»¶ã®æç¢ºå
ã«ãŒãå
ã§åãæ¿ãããããã©ã°ãæ¢ç¥ã®ã¬ã³ãŒãæ°ãªã©ãåçŽã§çŽæ¥çãªçµäºæ¡ä»¶ãæã€ã«ãŒãã¯ã¹ã³ã¢ãäœããªããŸããè€éãªåŒãå®è¡æå
¥åããŸãã¯å€éšç¶æ
ïŒããŒã¿ããŒã¹ãã©ã°ã端æ«ã³ãã³ããªã©ïŒã«äŸåããã«ãŒãã¯ã¹ã³ã¢ãé«ããªããŸãã SMART TS XL çµäºæ¡ä»¶ãäºæž¬ã©ããã«æŽæ°ããããã©ãããããã³ãããã®æŽæ°ããã¹ãŠã®å®è¡ãã¹ã«æ²¿ã£ãŠå°éå¯èœãã©ããã調ã¹ãŸãã
2. ãã¹ãã®æ·±ã
æ·±ããã¹ããããã«ãŒãã¯ãæ¬è³ªçã«åæãšä¿å®ãå°é£ã«ãªããŸãã SMART TS XL ãã¹ããããã¬ãã«ãå¢å ããããšã«ã¹ã³ã¢ãå¢å ããŸããç¹ã«ããã¹ããç°ãªãã«ãŒãã¿ã€ãïŒäŸïŒ PERFORM VARYING å
éš PERFORM UNTIL) éå°ãªãã¹ãããæ©èœåè§£ãŸãã¯æ§é ãªãã¡ã¯ã¿ãªã³ã°ã®å¿
èŠæ§ã瀺åããŠããŸãã
3. å¶åŸ¡ç§»è¡ã®å€åæ§
䜿çšããã«ãŒã EXIT PERFORM, GOTOããŸãã¯éæ¥çã« CALL çµäºããæã¯ãéæšæºã®å¶åŸ¡åäœãšããŠãã©ã°ãä»ããããŸãããããã®ãã¿ãŒã³ã¯çµäºãã€ã³ãã®äºæž¬ãè€éã«ããå¶çºçãªç¡éå®è¡ã®å¯èœæ§ãé«ããªããŸãã
4. æç¶ãéã®äŸåé¢ä¿
ã«ãŒãã®çµäºããµãããã°ã©ã ã§å€æŽããã倿°ã«äŸåããå Žåãã«ãŒãã¯ããé«ãã¹ã³ã¢ãåãåããŸãã SMART TS XL å¶åŸ¡ãã㌠ã°ã©ããšããŒã¿ ãã㌠ã°ã©ããéããŠãã®ãããªäŸåé¢ä¿ã远跡ããåãã¢ãžã¥ãŒã«å
ã§éçã«çµäºããããšãä¿èšŒã§ããªãã«ãŒããããŒã¯ããŸãã
5. æ¡ä»¶ä»ãè€éæ§
ã«ãŒãå
ã«åå²ããžãã¯ãååšããã»ã©ã IF ã¹ããŒãã¡ã³ã EVALUATE ãããã¯ããã«ããã¹ããŒã¿æ€èšŒãªã©ã®è€é床ã¹ã³ã¢ãé«ãã»ã©ãè€é床ã¹ã³ã¢ã¯é«ããªããŸããããã¯ãç¹å®ã®æ¡ä»¶äžã§äžéšã®åå²ãéèŠãªçµäºããžãã¯ãã¹ãããããå¯èœæ§ãåæ ããŠããŸãã
åã«ãŒãã«ã¯ããããã®èŠçŽ ã«åºã¥ããŠçޝç©ã¹ã³ã¢ãä»äžãããŸããåºåã«ã¯ãé«ãªã¹ã¯ã«ãŒãã®ã©ã³ã¯ä»ãããããªã¹ããšããã®ã¹ã³ã¢ã®å ·äœçãªçç±ã泚éãšããŠè¡šç€ºãããŸããããã«ãããéçºè ãç£æ»æ åœè ã¯ãæ°çŸãã®ç¡å®³ãªã«ãŒãã粟æ»ããã®ã§ã¯ãªããæãåé¡ã®ããé åã«ãŸã泚æãéäžãããããšãã§ããŸãã
ã«ãŒããªã¹ã¯ãå®éåããããšã§ã SMART TS XL 察象ãçµã£ã修埩ãå¯èœã«ããã³ãŒãã¬ãã¥ãŒã®åªå é äœã決å®ããã·ã¹ãã ã®ãªãã¡ã¯ã¿ãªã³ã°ãææ°åãããžã§ã¯ãäžã«å®çšçãªæŽå¯ãæäŸããŸãã
å¶åŸ¡ãããŒã°ã©ãïŒCFGïŒã®ç°åžž
COBOLã«ãããå¶åŸ¡ãããŒã°ã©ãïŒCFGïŒã®ç°åžžãšã¯ãæåŸ ãããå®è¡é åºãä¹±ããããããžãã¯å ã«æå³ããªããã¹ãäœæãããããæ§é äžã®äžèŠåæ§ã§ãããããã®ç°åžžã¯ãæç¶ãåææ³ãç¡å¶éã®åå²ãã¡ã³ããã³ã¹äž»å°ã®å€æŽãæéã®çµéãšãšãã«è€éåããã¬ã¬ã·ãŒã¢ããªã±ãŒã·ã§ã³ã§ç¹ã«ããèŠãããŸããåçŽãªæ§æãšã©ãŒãšã¯ç°ãªããCFGã®ç°åžžã¯ããã°ã©ã æ§é ã®ããæ·±å»ãªæ¬ é¥ãåæ ããŠãããäºæããªãåäœã誀ã£ãåºåããŸãã¯ã¡ã³ããã³ã¹ãªãŒããŒãããã®å¢å ã«ã€ãªããå¯èœæ§ããããŸãã
å¶åŸ¡ãããŒã°ã©ãã®æ§ç¯ã«ã¯ãããã°ã©ã ãæåãšããžïŒå¶åŸ¡é·ç§»ã衚ãïŒã§æ¥ç¶ãããåºæ¬ãããã¯ïŒåãããã¯ã¯æã®ç·åœ¢ã·ãŒã±ã³ã¹ã衚ãïŒã®éåãšããŠã¢ãã«åããããšãå«ãŸããã PERFORM, GOTO, IFãŸã㯠CALLçæ³çã«ã¯ããã®ã°ã©ãã¯äžè²«æ§ãããäºæž¬å¯èœãªå®è¡ãã¿ãŒã³ãåæ ããã¯ãã§ããããããå€ãã®COBOLã·ã¹ãã ã§ã¯ãã°ã©ãã«å£ãããã¹ãæç¢ºãªåºå£ã®ãªãã«ãŒããããã°ã©ã ãŠãããéã®å
¥å£ãšåºå£ã®äžæŽåãªã©ãå«ãŸããŸãã
CFG åæäžã«çºçããç°åžžã«ã¯ããã€ãã®ã«ããŽãªããããŸãã
- æç€ºçãªå¶åŸ¡ã®ç§»è¡ãªãã«çžäºã«é¢ä¿ããæ®µèœãŸãã¯ã»ã¯ã·ã§ã³
GOTOæ§é åãããã·ãŒã±ã³ã¹ãç Žå£ããé·è·é¢ãžã£ã³ããäœæããã¹ããŒãã¡ã³ãPERFORMã°ã©ãã®äžéšã§å®è¡ãéå§ããããäžè²«ããŠæ»ã£ããçµäºãããããªãæ- äºæ³ãããåæåãŸãã¯æ€èšŒæé ããã€ãã¹ããåå²ããžãã¯
ãããã®äžèŠåæ§ã«ãããã³ã³ãã€ã«æããã¹ãæã«ãšã©ãŒãçºçããããšã¯ãããŸããããããã°ã©ã ã®çè§£ãå°é£ã«ãªããã¡ã³ããã³ã¹ãæ¡åŒµæã«è«ççãªæ¬ é¥ãçºçããå¯èœæ§ãé«ããªããŸãã
CFG ããŒã¹ã®æšè«ããµããŒãããéçè§£æããŒã«ã¯ãæ¬¡ã®æ¹æ³ã§ãããã®é ããç°åžžãçºèŠã§ããŸãã
- ããããå¯èœãªãã¹ãã«ããŒããå®è¡ã¢ãã«ã®æ§ç¯
- åããŒãïŒãããã¯ãŸãã¯æ®µèœïŒã«é©åãªéå§æ¡ä»¶ãšçµäºæ¡ä»¶ãããããšã確èªãã
- åæãããããŒããŸãã¯äžé©åã«ãªã³ã¯ãããã³ã³ããŒãã³ãã®æ€åº
- ãã¹ããããã»ã¯ã·ã§ã³ãŸãã¯çžäºäŸåã»ã¯ã·ã§ã³ã«ãããå®è¡ãããŒã®ã·ãã¥ã¬ãŒã·ã§ã³
CFGã®ç°åžžãç¹å®ãä¿®æ£ããããšã¯ãã³ã³ãã©ã€ã¢ã³ã¹èªèšŒãããã©ãŒãã³ã¹ãã¥ãŒãã³ã°ãã·ã¹ãã ã®è¿ä»£åãšãã£ãåãçµã¿ã«ãããŠæ¥µããŠéèŠã§ããä¿¡é Œã§ããå¶åŸ¡æ§é ããªããã°ãCOBOLããã°ã©ã ã®ã¢ãžã¥ãŒã«åããªãã¡ã¯ã¿ãªã³ã°ããããã¯ææ°èšèªãžã®ç¿»èš³ãšãã£ãäœæ¥ã«ãããŠããšã©ãŒãçºçããå¯èœæ§ãå€§å¹ ã«é«ãŸããŸãã
次ã®ãµãã»ã¯ã·ã§ã³ã§ã¯ãCOBOL ã§æãäžè¬ç㪠CFG ç°åžžãããããçºçããåå ãããã³ããããæ€åºããŠé²æ¢ããããã«éçåæã§äœ¿çšãããæ¹æ³ã«ã€ããŠèª¬æããŸãã
段èœãšã»ã¯ã·ã§ã³ã®é åºä»ããªã¹ã¯
COBOLã§ã¯ãããã°ã©ã ã¯æ¬¡ã®ããã«æ§é åãããŸãã ãã©ã°ã©ã (NAIST) ãš ã»ã¯ã·ã§ã³ã¯ãæç¶ãåããžãã¯ãšãããŒå¶åŸ¡ã®åºç€ãšããŠæ©èœããŸããã¢ãžã¥ãŒã«æ§é ãšãšã³ããªãã€ã³ãæ€èšŒã匷å¶ããçŸä»£ã®èšèªãšã¯ç°ãªããCOBOLã§ã¯å³å¯ãªå¶åŸ¡å¢çãèšããããšãªããæ®µèœãŸãã¯ã»ã¯ã·ã§ã³ããæ¬¡ã®æ®µèœãŸãã¯ã»ã¯ã·ã§ã³ãžãšå®è¡ãç§»ãããšãã§ããŸãããã®æè»æ§ã¯ãããã°ã©ã èšèšã®åææ®µéã§ã¯æçšã§ãããé·æéçšã·ã¹ãã ã«ãããŠã¯ãç¹ã«æ§é äžã®ç°åžžã«ãã£ãŠã·ãŒã±ã³ã¹ãäžæãããå Žåã«ãã¡ãªãããšãªããŸãã
段èœãšã»ã¯ã·ã§ã³ã®é åºä»ãã«é¢ãããªã¹ã¯ã¯ãå¶åŸ¡ãæå³ããªãæ¹æ³ã§ãããã¯ã«å
¥ã£ããããããã¯ããåºãããããšãã«çºçããŸããäŸãã°ã PERFORM 1ã€ã®æ®µèœã§å§ãŸããããããªããããã©ãŒã«ãã¹ã«ãŒã GOTOã¯ãå
šãå¥ã®ãããã¯ã«æãåºããŸããããã«ããå®è¡ãããŒã«ææ§ããçããããã°ã©ã ã®ä¿å®ããããã°ãå°é£ã«ãªããŸãã
ãªã¹ã¯ã®ããã·ãŒã±ã³ã¹ã®äŸ:
SECTION-A.
PERFORM INIT
MOVE A TO B
SECTION-B.
DISPLAY B
ãã®æ§é ã§ã¯ã SECTION-A ããž SECTION-Bã ãã PERFORM åŒã³åºã SECTION-Aããã㊠EXIT or GO TOãå®è¡ã¯å€±æããŸã SECTION-Bæå³çãã©ããã«é¢ãããããã®ãããªé åºä»ãã¯ã段èœãã»ã¯ã·ã§ã³ãæéã®çµéãšãšãã«åç·šæããããã€ãŠç¶æãããŠããæé»ã®æµãã厩ããå Žåã«ç¹ã«å±éºã§ãã
远å ã®ã·ãŒã±ã³ã¹ãªã¹ã¯ã¯æ¬¡ã®ãšããã§ãã
- æåã®æ®µèœãééããã«ã»ã¯ã·ã§ã³ã®éäžã«ãžã£ã³ããã
- ããã»ã¯ã·ã§ã³ã®æ®µèœãããå®çŸ©ãããé·ç§»ãªãã§çŽæ¥å¥ã®ã»ã¯ã·ã§ã³ã®æ®µèœã«ç§»åããããš
- ç°ãªãã³ã³ããã¹ãã§æ®µèœåãåå©çšãããšãã©ã®ãããã¯ãå®è¡ãããããæ··ä¹±ãã
éçè§£æã§ã¯ããããã®ç°åžžãè§£æããŠç¹å®ããŸãã ãšã³ããªãŒãã€ã³ããšãšã°ãžãããã€ã³ã ãã¹ãŠã®ã»ã¯ã·ã§ã³ã𿮵èœã«ã€ããŠããããã¯éã®é·ç§»ãæç€ºçã«å®çŸ©ãããŠãããã©ãããæ€èšŒããè«çãŠãããããŸããããã©ãŒã«ã¹ã«ãŒããã§ãã¯ããŸããããã«ãã°ã©ãæ§é ãéåããŠããç®æã®äžäžèŽããã€ã©ã€ã衚瀺ããŸãã åäžå ¥å£ãåäžåºå£ ç¹ã«å®å šæ§ãéèèŠå¶äžã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯æåŸ ãé«ãŸããŸãã
é©åãªã»ã¯ã·ã§ã³èšèšã¯æ¬¡ã®ããã«ãªããŸãã
- å«ã
EXITåã»ã¯ã·ã§ã³ã®æ«å°Ÿã®å£°æ - è€æ°ã®ãããã¯éã§æ®µèœåãå ±æããããšã¯é¿ããŠãã ãã
- æç€ºçãª
PERFORMorGO TOã»ã¯ã·ã§ã³éã®é·ç§»ã«é¢ããã¹ããŒãã¡ã³ã
ã¯ãªãŒã³ãªã·ãŒã±ã³ã¹ ã«ãŒã«ãé©çšããããšã§ãããŒã ã¯ã³ãŒãã®æçæ§ãå€§å¹ ã«åäžãããå¶åŸ¡ãšã©ãŒã®ãªã¹ã¯ã軜æžããCOBOL ããã°ã©ã ãããå®å šãªã¡ã³ããã³ã¹ãšææ°åã«åããŠæºåããããšãã§ããŸãã
SECTION ã§ã®æå³ããªããã©ãŒã«ã¹ã«ãŒ (EXIT ã®æ¬ èœ)
COBOLã«ãããæã埮åŠã§ãããªãã圱é¿åã®ããå¶åŸ¡ãããŒã®åé¡ã®1ã€ã¯ ã»ã¯ã·ã§ã³éã®æå³ããªããã©ãŒã«ã¹ã«ãŒçŽå€±ã眮ãå¿ãã«ãã£ãŠèµ·ããããšãå€ã EXIT æãCOBOLã§ã¯ãSECTIONã®å®è¡ãå®äºããæç€ºçãªçµäºãå¶åŸ¡ã®ç§»è¡ããªãå Žåãããã°ã©ã ã¯æ¬¡ã®SECTIONã«é 次é²ã¿ãŸãããã®åäœã¯æ§é åãããã³ãŒããããã¯ã§ã¯æå³ãããŠãããããããŸããããæè¿ã®ããã¡ã³ããã³ã¹ãããã·ã¹ãã ã®å€ãã§ã¯ãèšèšäžã®æ¬ é¥ãšããŠæ±ãããŠããŸãã
å ·äœçãªäŸãæããŸããšã以äžã®éãã§ãã
SECTION-A.
PERFORM INITIALIZE
MOVE A TO B
* No EXIT statement here
SECTION-B.
PERFORM CALCULATE
ãã®å Žåãå®è¡åŸ SECTION-Aãå¶åŸ¡ã¯çŽæ¥ SECTION-B ãªãéã GO TO, EXITãŸã㯠STOP RUN ä»å
¥ããå Žå SECTION-B ãã®ãããŒã®äžéšãšããŠå®è¡ãããããšãæå³ããŠããªãå Žåããã®ãã©ãŒã«ã¹ã«ãŒã¯å¶åŸ¡ç°åžžãæ§æããŸãããã®çµæãäºéå®è¡ãäžæŽåãªç¶æ
ããŸãã¯èª€ã£ãæ¡ä»¶äžã§ã¢ã¯ãã£ãåãããããã«èŠããããžãã¯ãçºçããå¯èœæ§ããããŸãã
ã¡ã³ããã³ã¹ãã³ãŒãããŒãžäžã«ã»ã¯ã·ã§ã³ã®é åºã倿Žãããšãæå³ããªããã©ãŒã«ã¹ã«ãŒãçºçããããšããããŸããç¹ã«ãããã¥ã¡ã³ããæ¬ èœããŠãããââãå€ããªã£ãŠããå¯èœæ§ãããã¬ã¬ã·ãŒç°å¢ã§ã¯ããã®åŸåãé¡èã§ããéçºè
ã¯åã»ã¯ã·ã§ã³ãç¬ç«ããŠãããšæ³å®ããŠãããã®ã®ãåŸã«ãªã£ãŠãã»ã¯ã·ã§ã³ãç¬ç«ããŠããªãããšã«æ°ä»ãããšããããŸãã EXIT ã¹ããŒãã¡ã³ãã«ãããå®è¡ãäºæããåŸç¶ã®ããžã㯠ãããã¯ã«é£éãããå¯èœæ§ããããŸãã
éçè§£æããŒã«ã¯ã çµäºç¶æ åã»ã¯ã·ã§ã³ã®ã圌ãã¯ä»¥äžã®ç¹ãæ±ããŠããŸãã
- ã®æç¡
EXITæåŸã« - å¶åŸ¡ã®ç§»è¡ãä»ããªãé£ç¶ããSECTIONå®çŸ©
- æç€ºçãªé·ç§»ãªãã§1ã€ã®ã»ã¯ã·ã§ã³ããå¥ã®ã»ã¯ã·ã§ã³ã«ãŸãããå¶åŸ¡ãã¹
ãã©ãŒã«ã¹ã«ãŒãç¹å®ããããšããããžã§ã¯ãåºæºã«å¿ããŠãèšèšäžã®ç°åžžãŸãã¯æ§é äžã®èŠåãšããŠãã©ã°ä»ããããŸããå®å šæ§ãéèŠãªã·ã¹ãã ãéèã·ã¹ãã ã§ã¯ãå¶åŸ¡ãããŒã®éææ§ãç¶æããããã«ããã©ãŒã«ã¹ã«ãŒåäœã¯éåžžå®å šã«çŠæ¢ãããŸãã
ãã®ç°åžžãé²ãããã«ãCOBOL ããã°ã©ãã¯æ¬¡ã®ããšãè¡ãå¿ èŠããããŸãã
- ã»ã¯ã·ã§ã³ã¯åžžã«
EXIT声æãŸãã¯é©åãªçµäº - 飿¥ããã»ã¯ã·ã§ã³ã«ç¡é¢ä¿ãªããžãã¯ãããã¯ãé 眮ããªãã§ãã ãã
- åœåèŠåãšæ§é ã³ã¡ã³ãã䜿çšããŠãã»ã¯ã·ã§ã³ã®å¢çãæç¢ºã«ææžåããŸãã
åã»ã¯ã·ã§ã³ãéããããé©åã«ã¹ã³ãŒãèšå®ãããå®è¡åäœã§ããããšã確èªãããšãããã°ã©ã ã®äºæž¬å¯èœæ§ãåäžãããããŒåæãç°¡çŽ åãããæ§é åãããæé èšèšã®ãã¹ã ãã©ã¯ãã£ã¹ã«æºæ ã§ããããã«ãªããŸãã
GOTOé§ååã¹ãã²ããã£ã³ãŒããšCFGã®æ··ä¹±
ãã® GOTO COBOLã®ã¹ããŒãã¡ã³ãã¯ãæ§æçã«æå¹ã§æŽå²çã«äžè¬çã§ãããã®ã®ãå¶åŸ¡ãããŒæ§é ã貧匱ã«ãªãæãæªåé«ãåå ã®1ã€ã§ããã ã¹ãã²ããã£ã³ãŒãèŠåŸãªã䜿çšãããšã GOTO 段èœãã»ã¯ã·ã§ã³ããŸãã远跡äžå¯èœãªãžã£ã³ããäœæããæå³ãããããžãã¯ããã€ãã¹ããæ§é åãããã·ãŒã±ã³ã¹ãç Žå£ããå¶åŸ¡ãããŒã°ã©ãïŒCFGïŒã®æŽåæ§ãç Žå£ããŸãããã®ãããªå¶åŸ¡ã®äžæã¯ãå¯èªæ§ãæãªãã ãã§ãªããå®è¡æã«ããžãã¯ãšã©ãŒãæå³ããªãåäœãçºçããå¯èœæ§ãé«ããŸãã
éæ§é åå¶åŸ¡è»¢éã®ç°¡åãªäŸ:
IF ERROR-FLAG = 'Y'
GOTO ERROR-HANDLER
...
ERROR-HANDLER.
DISPLAY 'An error occurred.'
åäœã§ã¯ç¡å®³ã«èŠãããããããŸããããçŸå®ã®ã·ã¹ãã ã§ã¯ãã®ãããªãžã£ã³ããæ°ååãå«ãŸããŠããããšãå€ããæã«ã¯ãã¹ãããããæ¡ä»¶ä»ãã§é£éãããããŸããããã«ãããéç·åœ¢ã§åŸæ¹ãšããžãå€ããç¹ã«ãžã£ã³ããåæåã³ãŒããã¯ãªãŒã³ã¢ããã³ãŒãããã€ãã¹ããå Žåã«è§£æãå°é£ãªCFGãçæãããŸãã
éå°ãŸãã¯èª€çšã«ããçµæ GOTO 次ã®ãšããã§ãã
- å°éäžå¯èœãªæ®µèœ ãã€ãã¹ãããåå²ã«ããå ¥åãããªã
- ååæåãªãã®åçªå ¥æ®µèœãé åºã©ããã«é²ãŸãªãå Žå
- æçåãå¶åŸ¡ããè«çãããŒãããã°ã©ã ã®é¢ããéšåã«æ£ãã°ã£ãŠããå Žå
- 解決äžå¯èœãªãµã€ã¯ã« ååž°ãç¡éã«ãŒãæ¡ä»¶ã«äŒŒãŠãã
éçè§£æã«ããã GOTOç°åžžãªç¶æ³ã調ã¹ãããšã§ã CFGã®ãšããžã®ãããªæ§é åãããæ§æãšã¯ç°ãªãã PERFORMåŒã³åºãå
ã«å¶åŸ¡ãè¿ã GOTO æ°žç¶çãªãªãã€ã¬ã¯ããå°å
¥ããŸããã¢ãã©ã€ã¶ãŒã¯ãã¹ãŠã®ãªãã€ã¬ã¯ãå
ãè©äŸ¡ããŸãã GOTO æç€ºã«åŸã£ãŠããããå®å
šã§äºæž¬å¯èœãªã¿ãŒã²ããã«ã€ãªãããã©ããã倿ãããžã£ã³ããæ§é åããããããã¯ã®æŽåæ§ãç Žå£ãããã©ãããè©äŸ¡ããŸãã
ãã©ã°ãä»ããããæãç Žå£çãªãã¿ãŒã³ã¯æ¬¡ã®ãšããã§ãã
- è€æ°ã®ã»ã¯ã·ã§ã³å¢çããŸãã
- ã¢ã¯ãã£ãã«ãŒããŸãã¯æ¡ä»¶åå²ãžã®åŸæ¹ãžã£ã³ã
- 段èœãŸãã¯è«çãããã¯ã®éäžã«ãžã£ã³ãããŸã
- ãã©ã°å€ãäºæããæŽæ°ãããåã«æ¡ä»¶æãå®è¡ããã
GOTO
CFGã®æ··ä¹±ã軜æžããããã®ãã¹ããã©ã¯ãã£ã¹ã«ã¯ã GOTO ã PERFORM ãŸãã¯ããžãã¯ãåæ§ç¯ãã EVALUATE, IF, EXIT PERFORM è¿ä»£åãããžã§ã¯ãã§ã¯ãèªååããŒã«ããã°ãã° GOTO å¶åŸ¡æå³ãæç¢ºã«å®çŸ©ãããŠããå Žåã¯ãäœ¿çšæ³ãæ§é åãããåçã®ãã®ã«å€æããŸãã
æé€ãŸãã¯éé¢ GOTO ã®äœ¿çšã¯ãCOBOL ã¢ããªã±ãŒã·ã§ã³ã®ä¿å®æ§ãšãã¹ãæ§ãé«ããæ§é åããã°ã©ãã³ã° ã¢ãã«ãææ°ã®èšèªãžã®å€æã«é©ãããã®ã«ããããã®éèŠãªã¹ãããã§ãã
äžåè¡¡ãªPERFORMïŒãšã³ããªãŒ/ãšã°ãžããã®äžäžèŽïŒ
ãã® PERFORM COBOLã«ãããæã¯ãã³ãŒããããã¯ã®ç¹°ãè¿ããã«ãŒãã³ã®åŒã³åºããã«ãŒãæ§é ã®ç®¡çãªã©ãå®è¡ãããŒã®å¶åŸ¡ã«ãããŠäžå¿çãªåœ¹å²ãæãããŸããããããç¹ã«å€§èŠæš¡ãŸãã¯é²åãç¶ããã³ãŒãããŒã¹ã§ããèŠãããäŸå€ãã ã¢ã³ãã©ã³ã¹ãªããã©ãŒãã³ã¹ããã°ã©ã ã¯æ®µèœãŸãã¯ã»ã¯ã·ã§ã³ã®å®è¡ãéå§ããŸãã PERFORMããããæ§é åãããäºæž¬å¯èœãªæ¹æ³ã§ãããå®äºããããšãã§ããŸããã
ãã®äžäžèŽã¯ããã€ãã®çç±ã§çºçããå¯èœæ§ããããŸãã
- åºå£
GOTOèš±å¯ããã®ã§ã¯ãªãPERFORMèªç¶ã«å埩ãã - æ©æçµäº
STOP RUN,GOBACKãŸãã¯EXIT PROGRAMå®è¡ããããããã¯å - éäžããé£ã³èŸŒãã ãé£ã³åºããã
PERFORMç¯å²ç¹ã«äœ¿çšããå ŽåPERFORM THRU
ããã¯äžåè¡¡ãªäŸã§ãã PERFORM:
PERFORM SETUP THRU CLEANUP
...
SETUP.
DISPLAY 'Initializing'
MAIN.
DISPLAY 'Running main logic'
GOTO END-PROGRAM
CLEANUP.
DISPLAY 'Cleaning up'
ãã®å Žåã GOTO END-PROGRAM å
éš MAIN 段èœã¯æ©æéåºãåŒãèµ·ãã PERFORM THRU ã·ãŒã±ã³ã¹ããã®çµæã CLEANUP ã¯å®è¡ããããæå³ããã¯ãªãŒã³ã¢ããããã»ã¹ãäžæãããŸããããã«ããã PERFORMã®ãšã³ã㪠ãã€ã³ããšãã®çµäºãã¹ãç Žæããå®è¡ãäžå®å
šã«ãªã£ãããããžãã¯ãã¹ããããããããç¶æ
ãç ŽæãããããŸãã
éçè§£æããŒã«ã¯äžåè¡¡ãæ€åºããŸã PERFORM æ§é ïŒ
- ããããå
¥å£ãšåºå£ã®ãããã³ã°
PERFORMåŒã³åºã - å¶åŸ¡ã確å®ã«æ¬¡ã®åœä»€ã«æ»ããã©ããã远跡ãã
PERFORM - å®è¡ããããããã¯å ã§å®å šãªãã¹ã劚ãããžã£ã³ããŸãã¯çµäºããã©ã°ä»ããã
ãã¹ãããã PERFORM ãããã¯ãããã·ãŒãžã£éåŒã³åºããªã©ã®äžåè¡¡ãªåäœã¯ãèªåãããŒã¢ããªã³ã°ãªãã§ã¯çºèŠãå°é£ã«ãªããŸããã¢ãã©ã€ã¶ãŒã¯ãäºæž¬ãããå®è¡ãŠã£ã³ããŠãæ§ç¯ããŸãã PERFORM æ§é åãããå¶åŸ¡åäœããã®éžè±ã匷調衚瀺ããŸãã
äžåè¡¡ã®çµæ PERFORMs 次ã®ãšããã§ãã
- ãã¡ã€ãã©ã€ãºãŸãã¯ã¯ãªãŒã³ã¢ããã³ãŒããã¹ãããããŸãã
- è«ççãªççŸ éšåçã«å®è¡ãããã¯ãŒã¯ãããŒã«ãã£ãŠçºçãã
- ç£æ»ãªã¹ã¯ã®å¢å€§ç¹ã«ããã»ã¹çµäºæã®ãã§ãã¯ãéèŠãªéèã·ã¹ãã ã§ã¯
ãããã®åé¡ãåé¿ããã«ã¯ãCOBOL éçºè ã¯æ¬¡ã®ããšãè¡ãå¿ èŠããããŸãã
- 䜿çšãé¿ãã
GOTOå®è¡ãããæ®µèœå - 確ä¿
PERFORM THRUç¯å²ã¯æç¢ºã«å®çŸ©ãããŠãããã¡ã³ããã³ã¹äžã«ç¶æãããŸã - ã
EXITè«çãããã¯ãé©åã«çµäºããããã®ã¹ããŒãã¡ã³ã
ãã¹ãŠã®ãã©ã³ã¹ã®åããå¶åŸ¡ãããŒãç¶æãã PERFORM ãã®æäœã«ãããä¿¡é Œæ§ãçè§£æ§ãç£æ»æ§ã«åªãã COBOL ããã°ã©ã ãå®çŸããŸãã
CALLããã°ã©ã ãã§ãŒã³ã«ãããåœå®¶è æãªã¹ã¯
è€æ°ã®ã¢ãžã¥ãŒã«ããµãŒãã¹ã«ãŸãããCOBOLã¢ããªã±ãŒã·ã§ã³ã§ã¯ãããžãã¯ãåå¥ã®ããã°ã©ã ã«åå²ããå®è¡æã« CALL 声æããããã® CALLãããããã°ã©ã ãã§ãŒã³ ã¢ãžã¥ãŒã«æ§é ãæ§ç¯ããã³ãŒãã®åå©çšãä¿é²ããŸããããããæ¬¡ã®ãããªåé¡ãçããŸãã åœå®¶è
æããã°ã©ã éã®é·ç§»äžã«ãå
±æå€æ°ããªã³ã±ãŒãž ã»ã¯ã·ã§ã³ ããŒã¿ããŸãã¯äœæ¥é åãæå³ãã倿ŽãããããäžæŽåãªç¶æ
ã®ãŸãŸã«ãªã£ããããããšããããŸãã
å žåçãªãªã¹ã¯ã·ããªãªã¯æ¬¡ã®ããã«ãªããŸãã
CALL 'VERIFY-INPUT' USING CUSTOMER-DATA
CALL 'CALCULATE-BALANCE' USING CUSTOMER-DATA
If VERIFY-INPUT ä¿®æ£ CUSTOMER-DATA äŸãã°ããã£ãŒã«ãã®ãã©ãŒãããã倿Žããããæ®é«ããŒãã«ããããããã©ã«ãå€ãé©çšãããããŠããããã®å€æŽãææžåãŸãã¯åé¢ããªãå Žåã CALCULATE-BALANCE ç ŽæããããŒã¿ãäºæããªãããŒã¿ã«å¯ŸããŠåäœããŸãããã®ãã¿ãŒã³ãè€æ°ã®ãã¹ããããããŒã¿ã§ç¹°ãè¿ãããå Žåã CALL蚺æãé£ããè«çãšã©ãŒãçºçããå¯èœæ§ãæ¥æ¿ã«é«ãŸããŸãã
åœå®¶æ±è·ãªã¹ã¯ãæãé¡èã«ãªãã®ã¯ã次ã®ãããªå Žåã§ãã
- CALLãããããã°ã©ã ã¯åã
LINKAGE SECTIONæ§é ã¯åãã ãæäœæ¹æ³ã¯ç°ãªã - è€æ°ã®ããã°ã©ã ãå
±éã®ã¡ã¢ãªé åãžã®åç
§ãå
±æããã
COMMAREAorWORKING-STORAGEã³ããæ°åãŠã£ã«ã¹(COVID-XNUMX)ãã¡ã³ã¿ã«ãã«ã¹ã®åŽ©å£ãé¿ããçºã® - 倿°ã®ç¶æ
ã«ã€ããŠã¯æé»ã®ä»®å®ãããã
CALLå®äºãã
éçè§£æããŒã«ã¯ã以äžã®æ¹æ³ã§ããã軜æžããŸãã ããã·ãŒãžã£éããŒã¿ãããŒè§£æ ããã°ã©ã å¢çãè¶ããŠãããŒã¿æ§é ãã©ã®ããã«æž¡ããããã远跡ããŸãã USING åããã°ã©ã ã«ãããŠãç¯ã¯èªã¿åããã倿ŽããããŸãã¯ä¿æãããŸãããã®åæã¯ãåŒã³åºãããããã°ã©ã ã倿°ããåŸç¶ã®ã¢ãžã¥ãŒã«ã§ã®äœ¿çšãšç«¶åãããããªæ¹æ³ã§å€æŽããŠãããã©ãããæããã«ããŸãã
ãã©ã°ãä»ããããäžè¬çãªãã¿ãŒã³ã¯æ¬¡ã®ãšããã§ãã
- 倿°ã¯å€æŽãããã埩å ãããŠããªã åŠååŸ
- ããŒã«ããã¯æ©æ§ã®ãªããã¹ããããããã°ã©ã ã§åãæ¿ããããç¶æ ãã©ã°
- éšåçãªåæååŒã³åºãããããã°ã©ã ã¯å ±æããŒã¿æ§é å ã®ããã€ãã®ãã£ãŒã«ãã®ã¿ãèšå®ãã
- 埪ç°äŸåé¢ä¿ããã°ã©ã ã亀äºã«äºãã®å¯äœçšã«äŸåãã
åœå®¶ã®è æãæžããããã«:
- ããã°ã©ã ã¯å ¥åãã©ã¡ãŒã¿ã«å¯Ÿããå¯äœçšãæç¢ºã«ææžåããå¿ èŠããã
- å ±ææ§é ã¯ãããã°ã©ã ã«ãã£ãŠæç€ºçã«ææãããŠããªãéããèªã¿åãå°çšãšããŠæ±ãå¿ èŠããããŸãã
- æ€èšŒã«ãŒãã³ã¯ãåºåãåé¢ããããå ¥åã倿Žããã«ã¹ããŒã¿ã¹ã€ã³ãžã±ãŒã¿ãè¿ãå¿ èŠããããŸãã
CALLãã§ãŒã³å šäœã§ç¶æ ã®æŽåæ§ãç¶æãããããšã¯ãä¿¡é Œæ§ã®é«ãã¢ãžã¥ãŒã«åCOBOLã·ã¹ãã ãæ§ç¯ããäžã§éåžžã«éèŠã§ãããããã®åŸ®åŠãªãšã©ãŒãç¡èŠãããšãæ°ã¥ããªããã¡ã«äŒæããå®çšŒåæãã¹ãã¬ã¹ãã¹ãæãªã©ãçšãªç¶æ³ã§ãã衚é¢åããªãå¯èœæ§ããããŸãã
CICS ãã©ã³ã¶ã¯ã·ã§ã³ ãããŒã®äžæ (RETURN ããªã)
CICSïŒé¡§å®¢æ
å ±ç®¡çã·ã¹ãã ïŒç°å¢ã§åäœããCOBOLããã°ã©ã ã§ã¯ãå¶åŸ¡ãããŒã®ç®¡çã¯æç¶ãã®æ£ç¢ºãã ãã§ãªããCICSã³ãã³ãã«ãã£ãŠå®çŸ©ããã峿 Œãªãã©ã³ã¶ã¯ã·ã§ã³å¢çã®éµå®ãå¿
èŠãšããŸããæãéèŠãªèŠä»¶ã®äžã€ã¯ã RETURN ãã©ã³ã¶ã¯ã·ã§ã³ããã°ã©ã ã®æåŸã«ã³ãã³ããå®è¡ããŸãã RETURN æ¬ èœããŠãããäžé©åã«é
眮ãããŠããå Žåããã©ã³ã¶ã¯ã·ã§ã³ ãããŒãäžæãããäºæããªãåäœããªãœãŒã¹ ãªãŒã¯ããŸãã¯ã·ã¹ãã ã¬ãã«ã®ç°åžžçµäºãçºçããŸãã
å žåç㪠CICS ããã°ã©ã ã¯æ¬¡ã®ããã«çµäºããããšãäºæ³ãããŸãã
EXEC CICS RETURN
TRANSID('TRN1')
COMMAREA(COM-AREA)
END-EXEC.
ãã®ã³ãã³ãã¯ãããã°ã©ã ãåŠçãå®äºããå¶åŸ¡ãæŸæ£ããæºåãã§ããããšãCICSã«éç¥ãããªãã·ã§ã³ã§COMMAREAãšæ°ãããã©ã³ã¶ã¯ã·ã§ã³IDãè¿ããŸãã RETURN ã¹ããŒãã¡ã³ããæ¬ èœããŠããå Žåããã©ã³ã¶ã¯ã·ã§ã³ããã³ã°ãããªãœãŒã¹ïŒç«¯æ«ã»ãã·ã§ã³ããã¡ã€ã«ããã¯ãªã©ïŒãå æããããŸãŸã«ãªããCICSã¯æçµçã«æ¬¡ã®ãããªç°åžžçµäºã§ã»ãã·ã§ã³ã匷å¶çµäºããå¯èœæ§ããããŸãã AEY9 or AEI0.
éçåæããŒã«ã¯ãæ¬¡ã®æ¹æ³ã§ãã©ã³ã¶ã¯ã·ã§ã³ ãããŒã®äžæãæ€åºããŸãã
- ã¹ãã£ã³äž
EXEC CICS RETURNCICSããã°ã©ã ã®ãã¹ãŠã®å®è¡ãã¹å ã®ã¹ããŒãã¡ã³ã - æ€èšŒãã
RETURNå°éå¯èœã§ãããæ¡ä»¶æã«ãã£ãŠãã€ãã¹ãããªããGOTOããŸãã¯ãšã©ãŒåŠçããžã㯠- ã§çµããããã°ã©ã ãæ€åºãã
GOBACK,STOP RUNããŸãã¯å¿ èŠãªä»£ããã«ãã©ãŒã«ã¹ã«ãŒRETURN
è€éãªã¢ããªã±ãŒã·ã§ã³ã§ã¯ããããã®ãããŒã®åé¡ã¯åå²ããžãã¯ã«ãã£ãŠæªåããŸãã RETURN 1ã€ã®ãã¹ã«ã®ã¿ååšããä»ã®ãã¹ã«ã¯ååšããŸãããäŸ:
IF VALIDATION-OK
PERFORM PROCESS-REQUEST
ELSE
DISPLAY 'Invalid input'
* Missing RETURN here
Status ELSE ãã¹ã RETURNãã©ã³ã¶ã¯ã·ã§ã³ã¯ CICS ã«ãã³ããªããããã«ãªãŒãã³ã®ãŸãŸãšãªãããããŒãäžæãããŸãã
ãããã®ç°åžžãåé¿ããããã®ãã¹ã ãã©ã¯ãã£ã¹ã¯æ¬¡ã®ãšããã§ãã
- CICSããã°ã©ã ããã®ãã¹ãŠã®åºå£ãã¹ãæå¹ãª
RETURN - 䜿çšãé¿ãã
GOBACKorSTOP RUNãã©ã³ã¶ã¯ã·ã§ã³ããŠã³ãããã°ã©ã - éè€ãèŠèœãšããé¿ããããã«ããã°ã©ã çµäºããžãã¯ãäžå çã«æ§é åãã
èŠå¶ãããã·ã§ã³ã¯ãªãã£ã«ã«ãªç°å¢ã§ã¯ãæ¬ èœãŸãã¯äžæŽåãçºçãã RETURN äœ¿çšæ¹æ³ã¯ç£æ»ã®å€±æããµãŒãã¹ã®ããŠã³ã¿ã€ã ã«ã€ãªããå¯èœæ§ããããŸããéçè§£æã¯ãããããæ¬ é¥ãç©æ¥µçã«æ€åºããéçºè
ãæ£ããä¿å®å¯èœãªãã©ã³ã¶ã¯ã·ã§ã³èšèšãè¡ããããå°ãäžã§éèŠãªåœ¹å²ãæãããŸãã
èªå®æ¡ä»¶ SMART TS XL ããã°ã©ã éã®å¶åŸ¡ãããŒãããããã
å€§èŠæš¡ãªãšã³ã¿ãŒãã©ã€ãº ã·ã¹ãã ã§ã¯ãç¹ã«ã¢ãžã¥ã©ãŒ ã¢ãŒããã¯ãã£ãCICS ãã©ã³ã¶ã¯ã·ã§ã³ããŸã㯠JCL ã«ãããããé§ååå®è¡ãæ±ãå Žåãè€æ°ã® COBOL ããã°ã©ã éã§å¶åŸ¡ãã©ã®ããã«æµããããçè§£ããããšãéèŠã§ãã SMART TS XL ããã°ã©ã éã®å¶åŸ¡ãããŒãèŠèŠåããã³æ€èšŒããããã®é«åºŠãªãœãªã¥ãŒã·ã§ã³ãæäŸããåŸæ¥ã®ããŒã«ãæåã®ãã¬ãŒã¹ã§ã¯äžååãªæç¢ºããå®çŸããŸãã
äžå¿ã« SMART TS XLã®ã¢ãããŒãã¯ã ãã«ãããã°ã©ã å¶åŸ¡ãããŒã°ã©ãåäžã®ã³ã³ãã€ã«åäœã«åæãå¶éããã®ã§ã¯ãªãã SMART TS XL ç©å CALL é¢ä¿ã CHAIN, LINKCICS管çã®é·ç§»ãçµ±åãããŒã¢ãã«ã«çµ±åããŸããããã«ãããããã°ã©ã å¢çãè¶ããå®è¡ãã¹ããã¬ãŒã¹ããã¢ããªã±ãŒã·ã§ã³å
ã§ã®å¶åŸ¡ãšããŒã¿ã®æµãããšã³ãããŒãšã³ãã§ææ¡ã§ããããã«ãªããŸãã
äž»ãªæ©èœã¯æ¬¡ã®ãšããã§ãã
1. ãã€ãããã¯ã³ãŒã«è§£æ±º
SMART TS XL éçãšåçã®äž¡æ¹ã解決ãã CALL ããã°ã©ã åã倿°çµç±ã§æž¡ãããå Žåã§ããæã¯å®è¡ãããŸããéå»ã®åŒã³åºããã¿ãŒã³ãJCLåç
§ãã·ã¹ãã æ§æãã¡ã€ã«ã䜿çšããŠå¯èœãªã¿ãŒã²ãããæšæž¬ããããããå¶åŸ¡ãããŒã°ã©ãã«ãããã³ã°ããŸãã
2. å
¥å£ãšåºå£ã®ãã¹ã®ãããã³ã°
åããã°ã©ã ã¯ããã®ãšã³ããªãã€ã³ãã®å¯èœæ§ã«ã€ããŠåæãããŸãïŒäŸïŒ ENTRY ã¹ããŒãã¡ã³ããCICSãã©ã³ã¶ã¯ã·ã§ã³IDïŒããã³çµäºã¢ãŒãïŒRETURN, GOBACK, STOP RUN). SMART TS XL ãã¹ãŠã® CALL å°éå¯èœãª RETURN ãŸããçµäºã®æ¬ èœãäºæããªããã©ãŒã«ã¹ã«ãŒãªã©ã®äžæŽåããã©ã°ä»ãããŸãã
3. ããã°ã©ã ã®èŠèŠçãªãªã³ã¯
éçºè
ã¯ãããã¢ãžã¥ãŒã«ããå¥ã®ã¢ãžã¥ãŒã«ãžã®å¶åŸ¡ã®é·ç§»ã瀺ãã€ã³ã¿ã©ã¯ãã£ããªãã€ã¢ã°ã©ã ãéããŠãåŒã³åºãé¢ä¿ãæ¢çŽ¢ã§ããŸããããã¯ããªãã¡ã¯ã¿ãªã³ã°ããããã°ãç£æ»ã®æºåã«ãããŠéåžžã«åœ¹ç«ã¡ãŸãããŸãã倱æãã€ã³ãããã®ããã¯ãã©ããã³ã°ããµããŒãããŠãããå®è¡ãã©ã®ããã«ããã«å°éãããã確èªã§ããŸãã
4. ã¢ãžã¥ãŒã«éã®ããŒã¿ãããŒçµ±å
å¶åŸ¡ãããŒã¯ããŒã¿ã®ç¶æ
ã«å¯æ¥ã«çµã³ã€ããŠããŸãã SMART TS XL 倿°ã®è¿œè·¡ããªãŒããŒã¬ã€ãã LINKAGE SECTION, USING ãã©ã¡ãŒã¿ãããã³ COMMAREA 䜿çšç¶æ³ãããã°ã©ã å¢çãè¶ããŠããŒã¿ã倿Žãããå Žæãšããã®å€æŽãäžæµã®å¶åŸ¡æ±ºå®ã«åœ±é¿ãäžãããã©ãããæ€åºããŸãã
5. ãããããã³CICSã³ã³ããã¹ããšã®çµ±å
ããããžã§ãã®å ŽåãããŒã«ã¯JCLã¹ãããã®é¢ä¿ãçµã¿èŸŒãã§ããªãŒã±ã¹ãã¬ãŒã·ã§ã³ã決å®ããŸãã CALL ãã§ãŒã³ãCICS ã¢ããªã±ãŒã·ã§ã³ã®å Žåããã©ã³ã¶ã¯ã·ã§ã³ ID ãšã³ãã³ã ãããã³ã°ã䜿çšããŠã端æ«ã«ãã£ãŠããªã¬ãŒããããããŒããã¬ãŒã¹ããŸãã
ãã®ã¬ãã«ã®ç²ŸåºŠã§ããã°ã©ã éã®å¶åŸ¡ãããŒããããã³ã°ããããšã«ããã SMART TS XL çµç¹ã¯ãå°éäžå¯èœãªã¢ãžã¥ãŒã«ãèå¥ããå®å šãªãªã¿ãŒã³ãã¹ã確ä¿ãããã©ã³ã¶ã¯ã·ã§ã³ ãããã³ã«ãžã®æºæ ãæ€èšŒããå€§èŠæš¡ãªæåå®è¡ãäžå¯èœãªæœåšçãªå¶åŸ¡ç°åžžã®ã¿ã¹ã¯ãæ€åºã§ããããã«ãªããŸãã
äŸå€åŠçãšå¶åŸ¡äžèœãªçµäº
COBOLã¢ããªã±ãŒã·ã§ã³ãç¹ã«éèãæ¿åºãå»çãªã©ã®çç£ã«äžå¯æ¬ ãªç°å¢ã«ãã㊠å ç¢ãªäŸå€åŠç ã¯äžå¯æ¬ ã§ããããããå€ãã®åŸæ¥ã®COBOLã·ã¹ãã ã¯ãäžè²«æ§ã®ãªãããããã¯æå°éã®ãšã©ãŒç®¡çæŠç¥ã«äŸåããŠããã å¶åŸ¡ãããŠããªãåºå£äºæããªãç¶æ³ãçºçããå Žåããµã€ã¬ã³ãé害ãããŒã¿ç Žæãçºçããå¯èœæ§ããããŸãã
æ§é åãããäŸå€åŠçã¡ã«ããºã ãæäŸããçŸä»£ã®èšèªïŒ try-catch ãããã¯)ãCOBOL ã§ã¯éåžžãæ¬¡ã®æ¹æ³ã§äŸå€ãåŠçããŸãã
- I/Oæäœã«ãã£ãŠè¿ãããã¹ããŒã¿ã¹ã³ãŒã
- ããŒã¿æ§é å ã®ãšã©ãŒãã©ã°
- ããã¥ã¢ã«
IFå€éšåŒã³åºããŸãã¯ãã¡ã€ã«ã¢ã¯ã»ã¹åŸã®ãã§ã㯠- CICSåºæã®ãšã©ãŒåŠçã³ãã³ãïŒäŸïŒ
EXEC CICS HANDLE ABEND)
æ£åŒãªãšã©ãŒåŠçæ§é ãååšããªããšãéçºè ã¯ç¹ã«ã¡ã³ããã³ã¹ãæ¥éãªæ©èœæ¡åŒµã®éã«ãé害çºçç®æãèŠèœãšãããããªããŸãããã®çµæãããã°ã©ã ããã°ã«èšé²ãããã«å€±æããããšããéèŠãªããžãã¯ãã¹ãããããããšããããã¯ã·ã¹ãã ç°åžžçµäºã§çµäºããããšãªã©ãèããããŸãã
äž»ãªäŸå€é¢é£ã®ç°åžžã¯æ¬¡ã®ãšããã§ã:
- ãã¡ã€ã«æäœåŸã®ãã§ãã¯ãæ¬ èœããŠããŸãããã§ã
READorWRITEéãã«å€±æããå¯èœæ§ããã - ãã£ãããããªãSQLCODEå€ç¹ã«DB2ç°å¢ã§ã¯ãäžå®å šãªãã©ã³ã¶ã¯ã·ã§ã³ã«ã€ãªãã
- åŠçãããªãCICSäŸå€ã¿ã€ã ã¢ãŠãã端æ«ã®åæãªã©ãäºæãã¬çµäºãåŒãèµ·ããå¯èœæ§ããã
- ã·ã¹ãã ã¬ãã«ã®ã³ãã³ã
STOP RUNorGOBACKæ§é åãããå埩ãã¹ã®ä»£ããã«äœ¿çšããã
äŸå€åŠçã®éçåæã¯ãå¶åŸ¡ãããŒå ã®æ¬¡ã®ãã€ã³ããç¹å®ããããšã«éç¹ã眮ããŠããŸãã
- å€éšã·ã¹ãã ãŸãã¯I/Oã«ã¢ã¯ã»ã¹ãã
- ã¹ããŒã¿ã¹ãŸãã¯æ»ãã³ãŒãã¯æåŸ ããããæ€èšŒãããªã
- ãšã©ãŒãã°ãã¯ãªãŒã³ã¢ãããè¡ããã«ããã°ã©ã ãçªç¶çµäºãã
- å¶åŸ¡ã®äžæã«ãããå埩ã«ãŒãã³ïŒååšããå ŽåïŒã«å°éã§ããªã
å ç¢ãªäŸå€ãã¹æ€èšŒã«ããããã¡ã€ã«ã®èªã¿åã倱æãããŒã¿ããŒã¹ã®ãããããã¯ã端æ«ã®ã¿ã€ã ã¢ãŠããªã©ãããããéçšãªã¹ã¯ãäºæž¬ããã§ãã¯ã管çã§ããŸããé©åãªäŸå€åŠçã¯ããœãããŠã§ã¢ã®å質åäžã ãã§ãªããç¹ã«èŠå¶ã®å³ããæ¥çã«ãããç£æ»ãžã®å¯Ÿå¿ã«ãè²¢ç®ããŸãã
次ã®ã»ã¯ã·ã§ã³ã§ã¯ãéçè§£æã«ãã£ãŠCOBOLã§æªåŠçã®äŸå€ãçºèŠããæ¹æ³ãããŒã¿èªèã䜿çšããŠãšã©ãŒãã¹ãã¢ãã«åããæ¹æ³ãããã³æ¬¡ã®ãããªããŒã«ãã©ã®ããã«æ©èœãããã«ã€ããŠèª¬æããŸãã SMART TS XL 修埩ãšã³ã³ãã©ã€ã¢ã³ã¹ã®ç®çã§ãããã®ãã¹ãèŠèŠåããã³æ€èšŒããã®ã«åœ¹ç«ã¡ãŸãã
I/OæäœåŸã®ãã¡ã€ã«ã¹ããŒã¿ã¹ãã§ãã¯ããªã
COBOLã®äŸå€åŠçã«ãããŠæãéèŠã§ãããªããèŠèœãšãããã¡ãªåŽé¢ã®äžã€ã¯ã ãã¡ã€ã«ã¹ããŒã¿ã¹ã³ãŒãã®æ€èšŒ æ¬¡ã®ãããªãã¡ã€ã«æäœã®åŸ READ, WRITE, REWRITE, DELETEãããã®ã³ãŒãã¯ãæäœã®æåãŸãã¯å€±æã瀺ãããã«èšèšãããŠããããã¡ã€ã«ã®çµãããéè€ã¬ã³ãŒããããã¯ããããã¡ã€ã«ãç©ç I/O ãšã©ãŒãªã©ã®éèŠãªæ
å ±ãæäŸããŸãã
確èªãæ ããš FILE STATUS ãããã®æäœã®åŸã«ã¯ããµã€ã¬ã³ããªé害ç¹ãäœæãããŸããããã°ã©ã ã¯æäœãæåãããã®ããã«åŠçãç¶è¡ããŸãããç¡å¹ãŸãã¯äžå®å
šãªããŒã¿ãåŠçãããããšã©ãŒãå詊è¡ãåŠçããããã®ããžãã¯ããã€ãã¹ãããããå¯èœæ§ããããŸãã
次ã®ã³ãŒã ã¹ãããããæ€èšããŠãã ããã
READ CUSTOMER-FILE INTO CUST-REC.
äžèšã®å Žå READ ãã¡ã€ã«ã®çµãããŸãã¯I/Oã®åé¡ã«ãã倱æããããã°ã©ã 㯠FILE STATUSãããã¯ã CUST-RECããŒã¿ãå€ããªã£ããåæåãããŠããªãå Žåã§ãåæ§ã§ãã
ãã¹ããã©ã¯ãã£ã¹ã§ã¯ããã¹ãŠã®ãã¡ã€ã«æäœã®åŸã«æ¬¡ã®ãããªãã§ãã¯ãå®è¡ããããšãæšå¥šãããŠããŸãã
IF FILE-STATUS NOT = '00'
DISPLAY 'File read error: ' FILE-STATUS
GO TO ERROR-HANDLER
END-IF.
éçè§£æããŒã«ã¯æ¬ èœããŠãããã®ãç¹å®ããŸã FILE STATUS ãã§ãã¯æ
åœè
ïŒ
- ãã¹ãŠã®I/Oæãã¹ãã£ã³ãã
READ,WRITE, etc. - ãããã®æã®åŸã«æ¡ä»¶ä»ãæ€èšŒãç¶ããã©ããããã§ãã¯ãã
FILE STATUS倿° - ãã¡ã€ã«ãé¢é£ä»ããããŠããã確èªãã
SELECTå®çŸ©ããæ¡éFILE STATUSå²ãåœãŠ - ãããªã圢åŒã®æ€èšŒãè¡ããã«å®è¡ãç¶ç¶ããããã¹ã«ãã©ã°ãä»ãã
ãã®åæã§ã¯ã åé·ãªãã§ã㯠or åžžã«çãšãªãæ¡ä»¶ãã®ãããªïŒ
IF FILE-STATUS = '00'
CONTINUE
END-IF.
ãšã©ãŒãçºçããå Žåã«å¶åŸ¡ã匷å¶ããŸããã
ããã«ãè€æ°ã®ãã¡ã€ã«ãåŠçãããããã ã·ã¹ãã ã§ã¯ãI/O ã®æ€èšŒã«å€±æãããšãè€æ°ã®ãžã§ã ã¹ãããã«é£éçã«åœ±é¿ãåã³ãéšåçãªãã¡ã€ã«æžã蟌ã¿ãã¬ããŒãã®äžæŽåãããŒã¿ã»ããã®åæãåããªããªã©ã®åé¡ãçºçããå¯èœæ§ããããŸãã
ããã«å¯ŸåŠããã«ã¯ãCOBOL éçºè ã¯æ¬¡ã®ããšãè¡ãå¿ èŠããããŸãã
- ãå²ãåœãŠãŸã
FILE STATUSãã¡ã€ã«ããšã«å€æ°SELECTå¥ - éèŠãªI/Oæäœããšã«ãã®ã¹ããŒã¿ã¹ãæ€èšŒãã
- é害ãé©åã«èšé²ãå ±åãã«ãŒãã£ã³ã°ãããšã©ãŒåŠçã«ãŒãã³ãå®è£ ãã
ãã¹ãŠã®ãã¡ã€ã«çžäºäœçšãã¹ããŒã¿ã¹ ãã§ãã¯ã«ãã£ãŠä¿è·ãããããã«ããããšã§ãããŒã ã¯ãµã€ã¬ã³ã ããŒã¿é害ã®ãªã¹ã¯ãå€§å¹ ã«åæžãããããããã³ãã©ã³ã¶ã¯ã·ã§ã³åŠçã·ã¹ãã ã®äºæž¬å¯èœæ§ãšå®å®æ§ãé«ããããšãã§ããŸãã
DB2ã€ã³ã¿ã©ã¯ã·ã§ã³ã«ãããææãããªãSQLCODEäŸå€
DB2ããŒã¿ããŒã¹ãšã€ã³ã¿ãŒãã§ãŒã¹ããCOBOLããã°ã©ã ã§ã¯ãSQLã®ããåãã¯åã蟌ã¿SQLæã䜿çšããŠå®è¡ãããŸããåSQLæäœã¯ã SELECT, INSERT, UPDATE, DELETEããŸãã¯ã«ãŒãœã«æäœã«ããã SQLã³ãŒã æ»ãå€ããã®å€ã¯ãæäœã®æåã倱æããŸãã¯èŠåç¶æ
ã瀺ããŸãããããã®ã³ãŒããé©åã«åŠçã§ããªãããšã¯ãã¡ã€ã³ãã¬ãŒã ããŒã¿ããŒã¹ç°å¢ã«ãããŠæãäžè¬çãã€å±éºãªå¶åŸ¡ãããŒç°åžžã®1ã€ã§ãã
å ·äœçãªäŸãæããŸããšã以äžã®éãã§ãã
EXEC SQL
SELECT NAME INTO :CUST-NAME
FROM CUSTOMERS
WHERE ID = :CUST-ID
END-EXEC.
äžèšã®ã¯ãšãªã§äžèŽãããã®ãèŠã€ãããªãå ŽåãSQLCODEã¯+100ã«èšå®ãããŸããå¶çŽéåããããããã¯ãªã©ã®äºæããªãããŒã¿ããŒã¹ãšã©ãŒãçºçããå ŽåãSQLCODEã¯è² ã®å€ã«ãªããã·ã¹ãã ã¬ãã«ã®ãšã©ãŒã®å Žåã¯-900æªæºã«ãªãããšããããããŸãã察å¿ãããã§ãã¯ãè¡ãããªãå ŽåãCOBOLããã°ã©ã ã¯æªå®çŸ©ãŸãã¯ç©ºã®ããŒã¿ã䜿çšããŠå®è¡ãç¶ç¶ãã誀ã£ãåºåãè«ççãªç Žæã«ã€ãªããå¯èœæ§ããããŸãã
ãã¹ããã©ã¯ãã£ã¹ã§ã¯ããã¹ãŠã® SQL ã¹ããŒãã¡ã³ãã®çŽåŸã« SQLCODE ãåŠçããããšãæç€ºãããŠããŸãã
IF SQLCODE NOT = 0
DISPLAY 'SQL Error: ' SQLCODE
GO TO SQL-ERROR-HANDLER
END-IF.
éçåæã§ã¯ãæ¬¡ã®æ¹æ³ã§ãã£ãããããŠããªã SQLCODE æ¡ä»¶ãèå¥ããŸãã
- åã蟌ã¿äœçœ®ã®ç¹å®
EXEC SQLããã°ã©ã å šäœã®ããã㯠- å¶åŸ¡ãããŒæ¡ä»¶ã®åç
§ããã§ãã¯ãã
SQLCODE,SQLSTATEããŸãã¯é¢é£ãããã©ã° - SQLãšã©ãŒãçºçããå¯èœæ§ããããæ€èšŒãè¡ãããªãå®è¡ãã¹ãæ€åºãã
- éšåçãªã³ãŒãïŒäŸïŒ+100ïŒã®ã¿ãåŠçãããä»ã®ã³ãŒãã¯ç¡èŠããããã¿ãŒã³ãèå¥ãã
ããé«åºŠãªããŒã«ã¯ã ãšã©ãŒåºæã®åäœæ¬¡ã®ãããªåé¡ãå ±åããŠããŸã:
- åæ±æ¹æ³
+100(è¡ãèŠã€ãããŸãã) ãã ããè² ã® SQLCODE (é倧ãªé害) ã¯ç¡èŠãããŸã - ããã©ã«ã
CONTINUEãšã©ãŒæã«ãã°èšé²ãåå²ãè¡ããªã - ç¹°ãè¿ããšã©ãŒãçºçããå Žåã®çµäºæ¡ä»¶ãªãã§ã«ãŒãå ã§ SQL æäœãç¹°ãè¿ã
æªãã§ãã¯ã®SQLCODEã¯æ·±å»ãªãªã¹ã¯ããããããŸãããã©ã³ã¶ã¯ã·ã§ã³åŠçç°å¢ã§ã¯ãåŠçãåã³ãããç¶æ ã®ãŸãŸã«ãªãå¯èœæ§ããããŸããã¬ããŒãäœæãETLãžã§ãã§ã¯ãè¡ãæé»çã«ã¹ããããããå¯èœæ§ããããŸãããŸããèŠå¶ã·ã¹ãã ã§ã¯ã远跡ãããªãããŒã¿ã®äžäžèŽãçããå¯èœæ§ããããå€ãã®å Žåãç£æ»æã«ã®ã¿æ€åºãããŸãã
ãããé²ãã«ã¯ãCOBOL éçºè ã¯æ¬¡ã®ããšãè¡ãå¿ èŠããããŸãã
- ãã¹ãŠã®åã蟌ã¿SQLæã®åŸã«SQLCODEããã§ãã¯ãã
- ãã¹ãŠã®éãŒãã³ãŒããéäžãšã©ãŒåŠçã«ãŒãã³ã«ã«ãŒãã£ã³ã°ããŸã
- åŠçããäºæ³ãããçµæïŒäŸïŒè¡ãèŠã€ãããªãïŒãšå€±æã®ã·ããªãªïŒäŸïŒå¶çŽãšã©ãŒãã¿ã€ã ã¢ãŠãïŒã®äž¡æ¹ãã«ããŒããŠããããšã確èªããŸãã
æ§é å SQL ãšã©ãŒåŠçãå®è£ ãããšãããŒã¿ã®æŽåæ§ãä¿è·ããã蚺æã®æç¢ºããåäžããDB2 çµ±å COBOL ã·ã¹ãã ã®å ç¢æ§ãšç£æ»å¯èœæ§ãåäžããŸãã
å埩ã«ãŒãã³ãªãã® CICS ABEND
CICSïŒé¡§å®¢æ å ±ç®¡çã·ã¹ãã ïŒã¢ããªã±ãŒã·ã§ã³ã¯ãé«ãå¯çšæ§ãšãã©ãŒã«ããã¬ã©ã³ã¹ãåããŠåäœããããšãæåŸ ãããŠããŸããããããCOBOLããŒã¹ã®CICSããã°ã©ã ã§é »ç¹ã«çºçããèœãšã穎ã®äžã€ã¯ãCICSãããŠã³ãããšãã«æ§é åããããªã«ããªã«ãŒãã³ãååšããªãããšã§ãã ç°åžžçµäº ïŒç°åžžçµäºïŒãçºçããŸãããããã®ABENDã¯ãæªåŠçã®äŸå€ãè«çãšã©ãŒã端æ«I/Oé害ããªãœãŒã¹ç®¡çã®äžåãªã©ãããŸããŸãªå®è¡æé害ã«ãã£ãŠåŒãèµ·ããããŸããã€ã³ã¿ãŒã»ãããããªãå Žåããã©ã³ã¶ã¯ã·ã§ã³ãçªç¶çµäºãããã¡ã€ã«ãã¬ã³ãŒãããŸãã¯ãŠãŒã¶ãŒã»ãã·ã§ã³ãæªå®çŸ©ã®ç¶æ ã«ãªãããšããããããŸãã
äžè¬ç㪠CICS æäœã«ã¯æ¬¡ã®ãããªãã®ãå«ãŸããŸãã
EXEC CICS RECEIVE MAP('CUSTMAP') MAPSET('CUSTSET') INTO(CUST-DATA)
END-EXEC.
端æ«ãåæãããå ŽåããŸãã¯ããããå©çšã§ããªãå ŽåãCICSã¯æ¬¡ã®ãããªABENDãçºçãããããšããããŸãã AEIP ïŒå°å³ãèŠã€ãããŸããïŒãŸã㯠AEY9 ïŒããã°ã©ã ãèŠã€ãããŸããïŒã HANDLE ABEND ãã£ã¬ã¯ãã£ãã䜿çšããªãå Žåããã® ABEND ã¯å¶åŸ¡äžèœã«äŒæããããåºç¯ãªã¢ããªã±ãŒã·ã§ã³é害ãåŒãèµ·ãããããã·ã¹ãã ãªãœãŒã¹ãããã¯ããããããå¯èœæ§ããããŸãã
é©åãªãšã©ãŒåŠçæ§é ã«ã¯ä»¥äžãå«ãŸããŸãã
EXEC CICS HANDLE ABEND
PROGRAM('ABEND-ROUTINE')
END-EXEC.
å®çŸ©ããã ABEND-ROUTINE ãšã©ãŒãèšé²ãããªãœãŒã¹ãã¯ãªãŒã³ã¢ããããé©å㪠RETURN ãŸãã¯ãŠãŒã¶ãŒéç¥ã
éçåæããŒã«ã¯ãæ¬¡ã®æ¹æ³ã§ CICS ABEND ã®è匱æ§ãæ€åºããŸãã
- CICSã³ãã³ããããã¯ã®èå¥ïŒ
EXEC CICSïŒç«¯æ«ããã¡ã€ã«ãäžæããŒã¿ãšãããšããã - åãããã¯ãä¿è·ãããŠãããã©ããã確èªãã
HANDLE ABEND,HANDLE CONDITIONããŸãã¯åçã®å埩ã¡ã«ããºã - ããã°ã©ã ãããŒããã¬ãŒã¹ããŠãã·ã¹ãã ãšã©ãŒãŸãã¯ãŠãŒã¶ãŒãšã©ãŒãçºçããå Žåã«ããã¹ãŠã® CICS åŒã³åºãæäœã«ãã©ãŒã«ããã¯ãã¹ãããããšã確èªããŸãã
- æ¬ èœãŸãã¯å°éäžèœãªãšã©ãŒåŠç段èœã®æ€åº
å埩äžèœãª ABEND ã«ã€ãªããäžè¬çãªåé¡ã¯æ¬¡ã®ãšããã§ãã
- é害åŠçã«CICSã®ããã©ã«ãã®åäœã«äŸåããããã°ã©ã
- CICSå¶åŸ¡æäœã«å ¥ãã宣èšããããã³ãã©ãŒããã€ãã¹ããããžãã¯ãã¹
- 宣èšãããŠããããå®éã®ãšã©ãŒç¶æ³ã§ã¯æ±ºããŠåŒã³åºãããªãéäžåãšã©ãŒã«ãŒãã³
å¶åŸ¡ãããŠããªã ABEND ã¯åãªãæè¡çãªæ¬ é¥ã§ã¯ãªããSLA ä¿èšŒã«åœ±é¿ãäžãããã©ã³ã¶ã¯ã·ã§ã³ã®äžæŽåãåŒãèµ·ãããå¶åŸ¡ãããäŸå€ãããŒãèŠæ±ããã³ã³ãã©ã€ã¢ã³ã¹æšæºã«éåããå¯èœæ§ããããŸãã
åŠçãããªã ABEND ãåé¿ããããã®ãã¹ã ãã©ã¯ãã£ã¹ã¯æ¬¡ã®ãšããã§ãã
- 宣èš
HANDLE ABENDorHANDLE CONDITIONãã¹ãŠã®CICSããã°ã©ã ã®éå§æã« - ãšã©ãŒãã³ãã©ã«ã¯ãªãŒã³ã¢ããããžãã¯ãšãŠãŒã¶ãŒãã£ãŒãããã¯ã¡ã«ããºã ãå«ãŸããŠããããšã確èªãã
- 䜿çšãé¿ãã
GOBACKorSTOP RUNãšã©ãŒã·ããªãªã§çµäºãã
æ§é åããã ABEND åŠçã宿œããããšã§ãçµç¹ã¯ CICS ããŒã¹ã® COBOL ã¢ããªã±ãŒã·ã§ã³ã®å埩åãšäºæž¬å¯èœæ§ãå€§å¹ ã«åäžãããããšãã§ããŸãã
ããŒã¿ãããŒãèæ ®ãããšã©ãŒãã¹è§£æ
COBOLã«ãããåŸæ¥ã®å¶åŸ¡ãããŒè§£æã¯ãããã°ã©ã ãæ®µèœãã»ã¯ã·ã§ã³ãå€éšåŒã³åºãã®éãã©ã®ããã«ç§»åããããç¹å®ããããšã«éç¹ã眮ããŠããŸãããããããšã©ãŒåŠçãè§£æããå Žåãå¶åŸ¡ãããŒã ãã§ã¯äžååã§ããç¹ã«å€§èŠæš¡ã·ã¹ãã ããã©ã³ã¶ã¯ã·ã§ã³ã·ã¹ãã ã«ãããŠããšã©ãŒç®¡çããžãã¯ãå®å šã«æ€èšŒããã«ã¯ãéçè§£æã«ä»¥äžã®èŠçŽ ãçµã¿èŸŒãå¿ èŠããããŸãã ããŒã¿ãããŒèªè倿°ãäŸå€ãã¹ã«ã©ã®ããã«åœ±é¿ããã©ã®ããã«çžäºäœçšãããã远跡ããŸãããã®ãã€ããªããã¢ãããŒãã«ãããè«çã®ã£ãããå°éäžå¯èœãŸãã¯å¹æã®ãªããšã©ãŒåŠçã«ãŒãã³ãããæ£ç¢ºã«ç¹å®ã§ããŸãã
äžè¬ç㪠COBOL ããã°ã©ã ã§ã¯ããšã©ãŒæ€åºã¯äœæ¥ã¹ãã¬ãŒãžå€æ°ã«æ ŒçŽãããŠãããã©ã°ãã¹ããŒã¿ã¹ ã³ãŒãããŸãã¯æ»ãå€ã«å€§ããäŸåããŸãã
IF DB2-STATUS NOT = '00000'
PERFORM DB2-ERROR-HANDLER
END-IF.
ãã®ã³ãŒãã¯å€±ææã«å¶åŸ¡ãæ£ããã«ãŒãã£ã³ã°ããããã«èŠããŸãããçåãæ®ããŸãã DB2-STATUS å
è¡ããããžãã¯ã«ãã£ãŠå®éã«æŽæ°ãããã®ãïŒãã§ãã¯ãè¡ãããåã«äžæžããããã®ãããããšãnullã«ãªã£ãŠããã®ãïŒçŽç²ãªæ§é åæã§ã¯çããããªãã ããŒã¿ãããŒãèæ
®ããåæ ã«å
¥ã£ãŠããŸãã
ããŒã¿ã®åæåã倿Žãè©äŸ¡æ¹æ³ãåæããããšã§ãããŒã«ã¯æ¬¡ã®ããšãæ€åºã§ããŸãã
- åæåãããŠããªããšã©ãŒå€æ° èšå®åã«ãã¹ãããã
- åžžã«åãæ¹æ³ã§è©äŸ¡ãããæ¡ä»¶æãéå¹ççãªåå²ã«ã€ãªãã
- äžæžããããã¹ããŒã¿ã¹ãã©ã° 以åã®äŸå€æ€åºãç¡å¹ã«ãã
- äžèŠãªãšã©ãŒåŠçã³ãŒãããŒã¿ã®ããžãã¯ã«æ¬ é¥ãããããã«ããªã¬ãŒæ¡ä»¶ãæºããããªã
å ·äœçãªäŸãæããŸããšã以äžã®éãã§ãã
MOVE '00000' TO DB2-STATUS.
EXEC SQL
SELECT ...
END-EXEC.
MOVE '00000' TO DB2-STATUS. *> Overwrites actual SQL result
ããã§æå¹ãªSQLCODEã眮ãæãããããã®åŸã®ãã§ãã¯ã¯æå³ããªããªããªããŸããããŒã¿ãããŒã¢ãã©ã€ã¶ã¯ãå€ã®åãã远跡ããŸãã DB2-STATUS ãã®äžæžãã ããŒã¿é§åã«ãããšã©ãŒåŠçã®ãã€ãã¹.
ãã®ã¢ãããŒãã¯ã次ã®ãããªå Žåç¹ã«éèŠã§ãã
- çžäºäŸåãã©ã°ïŒäŸïŒ
FILE-STATUSããã³äºæ¬¡ãšã©ãŒã¹ã€ããïŒ - 以åã®I/OãŸãã¯èšç®çµæã«åºã¥ãæ¡ä»¶åå²
- è€æ°ã®ã«ãŒãã³ã§å€æ°ãåå©çšãããŠããã¬ã¬ã·ãŒã³ãŒã
ããŒã¿ãããŒãèæ ®ãããšã©ãŒãã¹è§£æã¯ã åœéœæ§ éçãã§ãã¯äžãäŸãã°ã倿°ã1ã€ã®åå²ã§ã®ã¿æ¡ä»¶ä»ãã§å²ãåœãŠããããã®å€ã®ãã§ãã¯ãå¥ã®åå²ã§è¡ãããå ŽåãåçŽãªã¢ãã©ã€ã¶ãŒã¯ãã³ãã©ãŒãäžè¶³ããŠãããšå ±åããå¯èœæ§ããããŸãããããŒã¿èªèããŒã«ã¯è«çã²ãŒããèªèããŸãã
ããŒã¿ãããŒãå¶åŸ¡ãããŒè§£æã«çµã¿èŸŒãããšã§ãéçæ€èšŒã¯åçŽãªæ§é ãã§ãã¯ãã æå³ã®æ£ç¢ºãç¡é¢ä¿ãªã¢ã©ãŒããæå°éã«æããªãããããŒã ãå®éã®ãã°ãæ€åºã§ããããã«æ¯æŽããŸãã
ã¬ã¬ã·ãŒãšã©ãŒåŠçã«ããã誀æ€ç¥ã®ãã©ã³ã¹
ã¬ã¬ã·ãŒCOBOLã·ã¹ãã ã§ã¯ããšã©ãŒåŠçã¯å€ãã®å Žåãéå ¬åŒãªãã¿ãŒã³ãæåãã©ã°èšå®ã鿥çãªã¹ããŒã¿ã¹ãã§ãã¯ããããã¯ç¶æ¿ãããå¶åŸ¡æ§é ãžã®äŸåã«ãã£ãŠå®è£ ãããŠããŸãããã®çµæãéçè§£æããŒã«ã¯ãé©åã«èª¿æŽãããŠããªãå Žåã倧éã®ãšã©ãŒãçæããåŸåããããŸãã åœéœæ§è¯æ§ãŸãã¯æå³çãªæ§æãåé¡ã®ãããã®ãšããŠãã©ã°ä»ãããŸããããã«ããåæã®ä¿¡é Œæ§ãäœäžããéçºããŒã ã®ã¬ãã¥ãŒç²ããçããŸãã
ãšã©ãŒåŠçã«ããã誀æ€ç¥ã¯ãéåžžãæ¬¡ã®ãããªåå ã§çºçããŸãã
- åé·ãã©ã°æ¡ä»¶ ãã©ãŒã«ããã¯ãŸãã¯ãã¬ãŒã¹ãã«ããŒãšããŠäœ¿çšããã
- 代æ¿å¶åŸ¡ã¡ã«ããºã ãäŸãã°ã
FILE STATUSorSQLCODEææžåãããŠããªãããã¢ããªã±ãŒã·ã§ã³åºæã®ãã®ã§ããå¯èœæ§ããããŸã - ã€ã³ã©ã€ã³ãªãŒããŒã©ã€ã倿°ããã§ãã¯åã«åå²ãåœãŠãããå Žåãå€ãã®å Žåãèšèšäžã®æ¬ é¥ã§ã¯ãªããåŸæ¥ã®åäœãåå ã§ãã
- å°éäžå¯èœã ãæå³çãªã³ãŒããã¹ãããã°ãå°æ¥ã®æ¡åŒµã®ããã«æ®ããŠãã
äŸãã°ïŒ
MOVE '00' TO FILE-STATUS.
READ CUSTOMER-FILE INTO REC-BUF.
IF FILE-STATUS NOT = '00'
PERFORM ERROR-LOGIC.
If READ æ¡ä»¶ä»ãããŸãã¯éåžžã®åŠçã®äžç°ãšããŠææå€±æãããšäºæ³ãããå ŽåïŒäŸïŒãã¡ã€ã«ã®çµç«¯ãªã©ïŒãããã¯æ¬ é¥ã§ã¯ãªãå¯èœæ§ããããŸãããã ããåæããŒã«ãã³ã³ããã¹ããæ¬ ããŠããå Žåããã³ãã©ã®äžè¶³ãŸãã¯äžèŠãªåå²ãšããŠãã©ã°ä»ããããå¯èœæ§ããããŸãã
æ€åºãšé¢é£æ§ã®ãã©ã³ã¹ããšãããã«ãé«åºŠãªããŒã«ãé©çšããã ãã¥ãŒãªã¹ãã£ãã¯ãšã¬ã¬ã·ãŒãèæ ®ããã«ãŒã«ãã®ãããªïŒ
- å€ããããããã°ã©ã ã§ãã䜿ããããã©ãŒã«ããã¯ãã¿ãŒã³ãèªèãã
- å®è¡äžã«é害ãçããªããé »ç¹ã«ç¹°ãè¿ãããæ§é ãæ€åºãã
- é倧ãªãšã©ãŒãšäºæ³ãããèŠåïŒSQLãªã©ïŒãåºå¥ãã
+100) - ä»ã®ååã«ãã¹ããããããžãã¯ã«ãã£ãŠã²ãŒããããŠãããã©ã°ä»ãåå²ãç¡èŠãã
ããæŽç·Žãããåæç°å¢ã«ããããŠãŒã¶ãŒã¯ æåºŠã¬ãã«ã調æŽãã æ¢ç¥ã®é倧ã§ãªãåé¡ãæå¶ããããæçšã§ãã€ãºã®å°ãªãã¬ããŒããäœæããŸããããã«ã 泚éãµããŒã éçºè ãç¹å®ã®ãã§ãã¯ãæå³çãªãã®ãšããŠããŒã¯ããå°æ¥ã®ã¹ãã£ã³ã§èª€ã£ãŠå ±åãããªãããã«ããããšãã§ããŸãã
COBOLã·ã¹ãã ãè¿ä»£åããçµç¹ã¯ããã®ãã©ã³ã¹ãæ éã«èŠæ¥µããå¿ èŠããããŸããéå°ãªå ±åã¯ãªãã¡ã¯ã¿ãªã³ã°ã®åãçµã¿ãåæ»ãããéçè§£æãžã®ä¿¡é Œãæãªãå¯èœæ§ããããŸããéã«ãå ±åãäžè¶³ãããšãçã®ãã°ãéæºæ ã®åäœãé ããŠããŸãå¯èœæ§ããããŸãã
誀æ€ç¥ã管çããããã®ãã¹ããã©ã¯ãã£ã¹ã¯æ¬¡ã®ãšããã§ãã
- ã³ãŒãã¬ãã¥ãŒãç£æ»ã§ãã©ã°ãä»ããããåé¡ã宿çã«ç¢ºèªãã
- 蚱容å¯èœãªã¬ã¬ã·ãŒãã¿ãŒã³ã®ãã¯ã€ããªã¹ããææžåããŠç¶æãã
- éçè§£æããŒã«ã§æ§æãããã¡ã€ã«ã䜿çšããŠã³ãŒãããŒã¹ã®å¹Žéœ¢ãšã¹ã¿ã€ã«ãäžèŽããã
æçµçãªç®æšã¯ éå°ãªæåºããããªã粟床 åŸæ¥ã® COBOL ç°å¢ã®ã¢ãŒããã¯ãã£æšæºãå°éããªãããå®éã®ãªã¹ã¯ãæ£ç¢ºã«æ€åºããŸãã
SMART TS XLã®äŸå€ãããŒå¯èŠå
è€é㪠COBOL ã·ã¹ãã ãåæããå Žåããšã©ãŒãã³ãŒãããŒã¹ãéããŠã©ã®ããã«äŒæããããçè§£ããããšãéèŠã§ãã SMART TS XL ãã®èª²é¡ã«å¯ŸåŠããããã«ãé«åºŠãª äŸå€ãããŒã®å¯èŠå ãããã®æ©èœã«ãããéçºè ãã¢ããªã¹ãã¯ãããã°ã©ã ã®å®è¡ãã¹å šäœãéããŠãšã©ãŒç¶æ ãã©ã®ããã«æ€åºãåŠçããŸãã¯ç¡èŠããããã調æ»ã§ããŸãããã®æ©èœã¯ãç¹ã«æ·±ããã¹ããããããžãã¯ãéæšæºçãªãšã©ãŒåŠçæŠç¥ãæã€ã¬ã¬ã·ãŒç°å¢ã«ãããŠãçã®éçè§£æçµæãšå®çšçãªæŽå¯ã®éã®ã®ã£ãããåããã®ã«åœ¹ç«ã¡ãŸãã
ãã®æ©èœã®æ žãšãªãã®ã¯ SMART TS XLã®èœå äŸå€äŒæãã°ã©ãã£ã«ã«ã«ã¢ãã«åãããã®ããŒã«ã¯ãæœåšçãªãšã©ãŒãã€ã³ããå¶åŸ¡ãããŒã®ç°åžžãåã«ãªã¹ãããã®ã§ã¯ãªããæ¬¡ã®æ å ±ã衚瀺ããã€ã³ã¿ã©ã¯ãã£ã ããããçæããŸãã
- äŸå€ãçºçãããå¯èœæ§ã®ãããã¹ãŠã®I/Oããã³SQLæäœ
- ãããã®äŸå€ã«é¢é£ä»ãããã倿°ãŸãã¯ã¹ããŒã¿ã¹ãã©ã°
- ãããã®äŸå€ãææãããããç¡èŠãããããäžé©åã«åŠçãããæ®µèœãŸãã¯ã»ã¯ã·ã§ã³
- å¶åŸ¡ãç¶ç¶ããåã«éèŠãªæ¡ä»¶ããã§ãã¯ãããªããããŒã®ã®ã£ãã
ããšãã°ã READ ãã¡ã€ã«äžã®ã¹ããŒãã¡ã³ãã«å¯Ÿå¿ãã FILE STATUS æ€èšŒã SMART TS XL çç¥ç®æã匷調衚瀺ããæ¬¡ã®æ¡ä»¶ãè©äŸ¡ãããå Žæããã¬ãŒã¹ããŸããããã°ã©ã ã倱æã«å¯Ÿå¿ããåå²ããžãã¯ãå®è¡ããã«å®è¡ãç¶ç¶ããå Žåããã®ãã¹ã¯èŠèŠçã«ã æªåŠçã®äŸå€ãã¹.
èŠèŠçãªãããã³ã°ä»¥å€ã«ãããã®ããŒã«ã¯ ã¯ãã¹ã¢ãžã¥ãŒã«ãã¬ãŒã¹ããã°ã©ã ããµãããã°ã©ã ãŸãã¯å€éšã¢ãžã¥ãŒã«ã«å¶åŸ¡ãæž¡ãå Žåã SMART TS XL äŸå€é¢é£ã®å€æ°ãã©ã®ããã« SQLCODE, ABEND-CODEããŸãã¯ã«ã¹ã¿ã ãã©ã°ã¯åŒã³åºãåŸã«åŠçãããŸããããã¯ããšã©ãŒä¿¡å·ãããã°ã©ã å¢çãè¶ããããšãå€ãCICSãã©ã³ã¶ã¯ã·ã§ã³ãã§ãŒã³ãDB2çµ±åCOBOLã·ã¹ãã ã§ç¹ã«åœ¹ç«ã¡ãŸãã
ãã®ä»ã®æ©èœã¯æ¬¡ã®ãšããã§ãã
- é »åºŠãŸãã¯é倧床ã«åºã¥ããŠäŸå€ãããã¹ãããã匷調衚瀺
- ãšã©ãŒãã©ã°ã®ã©ã€ããµã€ã¯ã«ã远跡ããããã«ãå¶åŸ¡ãããŒå³ã«ããŒã¿ãããŒãéãåããã
- I/OäŸå€ãããŒã¿ããŒã¹ã®åé¡ãCICSç°åžžçµäºãªã©ã®ãšã©ãŒã¿ã€ãã«ãããã£ã«ã¿ãªã³ã°
- ç£æ»èšŒè·¡ãšã³ã³ãã©ã€ã¢ã³ã¹ææžçšã®ãšã¯ã¹ããŒãå¯èœãªå³
ãã®ã¬ãã«ã®å¯èŠåã¯éçºè ã«ãšã£ãŠæçãªã ãã§ãªããç£æ»äººãQAããŒã ãã³ã³ãã©ã€ã¢ã³ã¹æ åœè ããã·ã¹ãã ãå®è¡æé害ãã©ã®ããã«åŠçããŠããããéæã«ææ¡ã§ããããã«ãªããŸããå®å šæ§ã極ããŠéèŠãªãã©ã³ããã«ããŒãããŠãããããããã¯æ¬çªç°å¢ã®ã¯ãŒã¯ããŒãäžã«ãµã€ã¬ã³ãé害ãçºçããå¯èœæ§ããªããã確èªããããšããã¯ããã«å®¹æã«ãªããŸãã
äŸå€ãããã°ã©ã å ã§ã©ã®ããã«ç§»åããããã©ãã§çºçããã©ãã§åŠçãããã¹ãããã©ãã§éããå¯èœæ§ããããããå æ¬çã«ææ¡ã§ããããã«ããããšã§ã SMART TS XL éçåæãååçãªãã§ãã¯ãªã¹ãããã¢ã¯ãã£ãã§ããã²ãŒãå¯èœãªèšºæããŒã«ã«å€æããŸãã
COBOLç¹æã®ã¢ã³ããã¿ãŒã³
COBOLã¯ã³ã³ãã¥ãŒã¿ã®é»ææã«ãã®èµ·æºãæã¡ãã³ãŒãã£ã³ã°ã¹ã¿ã€ã«ãšå¶åŸ¡æ§é ã«ãããŠéåžžã«æè»æ§ã«å¯ãã§ããŸãããã®æè»æ§ã¯ãã€ãŠæ¥éãªçºå±ãå¯èœã«ããŸããããåæã«ãåé¡ã®ããã³ãŒãã£ã³ã°ãã¿ãŒã³ãçã¿åºããŸããã ã¢ã³ããã¿ãŒã³ å€ãã®ã¬ã¬ã·ãŒã·ã¹ãã ã«äŸç¶ãšããŠååšããã¢ã³ããã¿ãŒã³ã§ãããããã®ã¢ã³ããã¿ãŒã³ã¯å¿ ãããæ§æãšã©ãŒã§ã¯ãããŸããããææ§ããæããä¿å®æ§ãäœäžãããå¶åŸ¡ãããŒã®ç°åžžãªã¹ã¯ãé«ããŸãã
COBOLã®éçè§£æã¯ããããã®ã¢ã³ããã¿ãŒã³ã«å¯ŸåŠããªããã°å®äºããŸããããããã®ã¢ã³ããã¿ãŒã³ã¯ãã³ã³ãã€ã©ãå®è¡æãã¹ãã§ãããèŠéããŠããŸãããšããããããŸãããããã®ã¢ã³ããã¿ãŒã³ã¯ãä¿å®ããã°ã©ãã«ãšã£ãŠã®èœãšã穎ãšãªããã¢ããã€ãŒãŒã·ã§ã³ã®åãçµã¿ãè€éåããå¶åŸ¡ãããŒã®æŽåæ§ãšäºæž¬å¯èœæ§ã«é¢ããæšæºã«éåããŸãã
äžè¬ç㪠COBOL åºæã®ã¢ã³ããã¿ãŒã³ã«ã¯æ¬¡ã®ãããªãã®ããããŸãã
- ALTERã¹ããŒãã¡ã³ããåçã«ã¿ãŒã²ããã倿Žãã
GO TOå¶åŸ¡ãããŒãäžéæã«ãªã - æ·±ããã¹ããããIFæ§é ããã«ãããæææ±ºå®ã®ããžãã¯ããããã«ãããªãããšã©ãŒãçºçãããããªããŸãã
- çç¥
WHEN OTHERå¥ inEVALUATEã¹ããŒãã¡ã³ãããšããžã±ãŒã¹ãé»ã£ãŠæªåŠçã®ãŸãŸã«ãã - 掻çš
GO TOæ§é åãããä»£æ¿æ¡ã®ä»£ããã«PERFORM - ã»ã¯ã·ã§ã³ã𿮵èœéã®æ§é åãããŠããªãåå²ãã©ãŒã«ã¹ã«ãŒããžãã¯ãšãããã³ãŒãã«ã€ãªãã
ãããã®ãã¿ãŒã³ã¯ãããããåŸæ¹äºææ§ãšæ§é çãªå¥å šæ§ãšã®éã®ãã¬ãŒããªãã衚ããŠããŸããææ°ã®åæããŒã«ã¯ããããã®ãã¿ãŒã³ã®äœ¿çšãèªèãããã®åœ±é¿ãè©äŸ¡ããå¯èœãªå Žåã¯æ§é åãããä»£æ¿æ¡ãæšå¥šããå¿ èŠããããŸãã
以äžã®ãµãã»ã¯ã·ã§ã³ã§ã¯ããããã®ã¢ã³ããã¿ãŒã³ãäžã€ãã€è©³ãã説æããŸããããããã«ã€ããŠãã©ã®ããã«çºçããå¶åŸ¡ãããŒã«ã©ã®ãããªåœ±é¿ãäžãããããããŠç¹ã«ã¬ã¬ã·ãŒCOBOLç°å¢åãã«æé©åãããéçè§£æããŒã«ãã©ã®ããã«ããããæ€åºããæ¹åãå°ãããšãã§ããããæ¢ããŸãããããã®ç¥èŠã¯ãå®å®æ§ãç¶æããã ãã§ãªãããããã®ã·ã¹ãã ãææ°ã®æšæºã«æºæ ããä¿å®æ§ã®é«ãã¢ãžã¥ãŒã«åã³ãŒãããŒã¹ãžãšå€æããããã«ãäžå¯æ¬ ã§ãã
ALTERæã®å±éºæ§
ãã® ALTER COBOLã®ã¹ããŒãã¡ã³ãã¯ãäž»ã«åçãªãªãã€ã¬ã¯ããå¯èœã«ãããããèšèªã®äžã§æãæªåé«ãã¢ã³ããã¿ãŒã³ã®1ã€ã§ãã GO TO å®è¡æã«ã¿ãŒã²ãããå®ããŸããæ§é åããã°ã©ãã³ã°ãåºãæ¡çšãããåã«æ¡ä»¶åå²ãæš¡å£ããããã«å°å
¥ãããŸãããã ALTER äºæž¬ã§ããªãå¶åŸ¡ãããŒãäœæãããå¯èªæ§ãä¿å®æ§ãããã³éçåæã®æå¹æ§ãæãªãããŸãã
ç°¡åãªäœ¿çšäŸã¯æ¬¡ã®ããã«ãªããŸãã
PROCEDURE DIVISION.
ALTER PARAGRAPH-A TO PROCEED TO PARAGRAPH-B.
GO TO PARAGRAPH-A.
PARAGRAPH-A.
DISPLAY 'This will never run'.
PARAGRAPH-B.
DISPLAY 'Execution redirected here'.
äžèšã®äŸã§ã¯ã ALTER åé
ç· PARAGRAPH-A å¶åŸ¡ãããã«ãªãã€ã¬ã¯ããã PARAGRAPH-Béçè§£æããŒã«ã¯ãéçè§£æãšã¯æ ¹æ¬çã«ç°ãªããå¶åŸ¡ãããŒã®ãã®æœåšçãªå€åãèæ
®ããå¿
èŠããããŸãã GO TO or PERFORM ç®çå°ãåºå®ããããŸãŸã®ã¹ããŒãã¡ã³ãã
ã®å±éºæ§ ALTER 次ã®ãšããã§ãã
- äžæçãªå¶åŸ¡ããžãã¯: ç®çå°ã¯
GO TOã¯äžå®ã§ã¯ãªããããããã°ã©ã ãå®éã«äœãè¡ãããçè§£ããã«ã¯å®è¡æã®ã³ã³ããã¹ããå¿ èŠã§ãã - ãªãã¡ã¯ã¿ãªã³ã°äžã®ç Žæ: ãã¹ãŠããã¬ãŒã¹ããã«æ®µèœãåæ§æãã
ALTERã¹ããŒãã¡ã³ãã¯ãå¶åŸ¡ã®èª€ã£ãã«ãŒãã£ã³ã°ãå°éäžèœãªã³ãŒãã«ã€ãªããå¯èœæ§ããããŸãã - æ§é åããã°ã©ãã³ã°ãšã®éäºææ§:
ALTERã¢ãžã¥ãŒã«åŒãç·åœ¢åŒããŸãã¯æ©èœçã«åè§£ãããèšèšååãæãªããŸãã - ããŒã«ã®å¶éå€ãã®ã³ã³ãã€ã©ãã³ãŒãã¢ãã©ã€ã¶ã¯ãåçã³ãŒãã®è¿œè·¡ãéå®çã«ãããµããŒãããŠããªããããŸã£ãããµããŒãããŠããŸããã
GO TOã«ãã£ãŠå°å ¥ãããç®æšALTERCFG ã¢ããªã³ã°ã®ä¿¡é Œæ§ãäœäžããŸãã
éçè§£æã®èгç¹ããã¯ã ALTER 䜿çšã¯æ¯èŒçç°¡åã§ãããããããã®åœ±é¿ãå®å
šã«çè§£ããã«ã¯ããã¹ãŠã®åçã¿ãŒã²ããã远跡ãããããã³ã°ããå¿
èŠããããŸãã GO TO 圱é¿ãåããã¹ããŒãã¡ã³ããç¹å®ãã代ããã«æ§é åããã代æ¿å¶åŸ¡æ§é ã䜿çšã§ãããã©ãããè©äŸ¡ããŸãã
修埩æŠç¥ã«ã¯æ¬¡ã®ãã®ãå«ãŸããŸãã
- 亀æ
ALTER圱é¿ãåããGO TOãšã®ã¹ããŒãã¡ã³ãPERFORM(NAIST) ãšIF/EVALUATEããžãã¯ã - ããã°ã©ã ããåè«çåå²ãã«ãã»ã«åããå°ããªã¢ãžã¥ãŒã« ã»ã¯ã·ã§ã³ã«ãªãã¡ã¯ã¿ãªã³ã°ããŸãã
- ã©ã³ã¿ã€ã ãªãã€ã¬ã¯ãã®ä»£ããã«ãã©ã°ãšæ±ºå®ããŒãã«ãå®è£ ããŸãã
è¿ä»£åãã³ã³ãã©ã€ã¢ã³ã¹æ€èšŒãJavaãC#ãªã©ã®ææ°èšèªãžã®èªåå€æãæºåããŠããçµç¹ã¯ã ALTER ã³ãŒãããŒã¹ãããã»ãšãã©ã®ã¿ãŒã²ãããã©ãããã©ãŒã ãšå€æããŒã«ã¯åçãªå¶åŸ¡ã®åã«ãŒãã£ã³ã°ããµããŒãããŠããªããããããã¯å¿
é ã®ãªãã¡ã¯ã¿ãªã³ã°ã¿ã¹ã¯ãšãªããŸãã
ãã¹ãŠã®ã€ã³ã¹ã¿ã³ã¹ã«ãã©ã°ãä»ããããšã§ ALTER éçè§£æããŒã«ã¯ãäžæµãžã®åœ±é¿ãè©äŸ¡ããããšã§ãããå®å
šã§æç¢ºããã€ä¿å®ãããã COBOL ããã°ã©ã ã®äœæã«è²¢ç®ããŸãã
äºæž¬äžå¯èœãªGOTOãªãã€ã¬ã¯ãã®ãªã¹ã¯
äžæ¹ã GO TO COBOLã§ã¯åæ³ãã€åºã䜿çšãããŠããæ§é ã§ããããã®èª€çšã¯èªã¿ã«ãããšã©ãŒãçºçããããã³ãŒãã®äž»ãªåå ã®äžã€ã§ãã PERFORMäºæž¬å¯èœãªãšã³ããªãŒãšãšã°ãžããã®è¡åãæäŸãã GO TO 玹ä»ãã äºæž¬äžå¯èœãªãžã£ã³ã éèŠãªããžãã¯ãåæåã«ãŒãã³ããŸãã¯çµäºããã·ãŒãžã£ããã€ãã¹ããããšããããããŸãããã®äºæž¬äžå¯èœæ§ã¯ãæ·±ããã¹ããããå¶åŸ¡ãããã¯ãæ¡ä»¶åå²ããžãã¯ãå«ãå€§èŠæš¡ãªããã°ã©ã ã§ã¯ç¹ã«åé¡ã«ãªããŸãã
ãã®äŸãèããŠã¿ãŸãããïŒ
IF ERROR-FOUND
GO TO ERROR-HANDLER
...
DISPLAY 'Transaction Complete'
Status GO TO ERROR-HANDLER å®è¡æã«ããã©ã³ã¶ã¯ã·ã§ã³å®äºã¡ãã»ãŒãžãã¹ããããããŸããããã¯æå³çãªãã®ãããããŸããããå¶åŸ¡ãã¹ã¯æç¢ºã«ææžåãŸãã¯åŒ·å¶ãããŠãããããžã£ã³ãã®ã¹ã³ãŒãã¯æªå®çŸ©ã§ãã
å¶éã®ãªãããšã§çãããªã¹ã¯ GO TO 䜿çšäŸ:
- ããŒããžãã¯ã®ãã€ãã¹ïŒ
GO TOããã©ã«ãå€ã®èšå®ããã°ãã¡ã€ã«ã®æŽæ°ãªã©ã®éèŠãªæäœãã¹ãããã§ããŸãã - ããžãã¯ãããã¯ã®éäžãžã®ãšã³ããª: é©åãªãšã³ããªæ¡ä»¶ããªããšãåæåãããŠããªãããŒã¿ãŸãã¯éšåçãªç¶æ ã«äŸåããŠã段èœãã³ã³ããã¹ãå€ã§å®è¡ãããå¯èœæ§ããããŸãã
- ã¡ã³ããã³ã¹ã®å±éºæ§ã³ãŒããæŽæ°ããããšããã€ãŠã¯
GO TOsafe ãç¡å¹ã«ãªãã远跡ãå°é£ãªãã°ãçºçããå¯èœæ§ããããŸãã - æ§é åããã°ã©ãã³ã°ååã®éå:
GO TOç¹ã«è€æ°ã®å®å ãæ¡ä»¶ä»ãã§éžæãããå Žåãç·åœ¢ã ãè€éãªå¶åŸ¡ãããŒãä¿é²ãããŸãã
éçè§£æã®èгç¹ãããåé¡ã®ãã GO TO äœ¿çšæ³ã¯ãããããã®åºçŸããªã¹ãåããã ãã§ã¯ãããŸãããããŒã«ã¯ã åãžã£ã³ãã®æèããå«ã¿ãŸãïŒ
- å¯Ÿè±¡ã®æ®µèœã«å®å šã«å°éã§ããç¬ç«ããŠå ¥åã§ããããã«èšèšãããŠãããã©ãã
- ãžã£ã³ãã«ãã£ãŠããã°ã©ã ãéäžã§çµäºããããå¿ èŠãªæ€èšŒãã¹ããããããã©ãã
- ã³ã³ãããŒã«ãå ã®å Žæã«æ»ããã©ããããŸãã¯ãžã£ã³ããäºå®äžçµæ«çãªãã®ã«ãªããã©ãã
- è€æ°ã®
GO TOè€éãªæ¡ä»¶ã§çžäºäœçšããã¹ããŒãã¡ã³ã
修埩æŠç¥ã«ã¯æ¬¡ã®ãã®ãå«ãŸããŸãã
- 亀æ
GO TOãPERFORMããžãã¯ãåå©çšããå¿ èŠãããå Žåã«ãããã¯ãã - æ¡ä»¶ãžã£ã³ãã
EVALUATEorIF-ELSEæçæ§ã®ããã®æ§é - æé ãã¢ãžã¥ãŒã«åããŠãããããã«åäžã®å ¥å£ãšåºå£ãããããã«ãã
ãã¹ãŠã§ã¯ãããŸããã GO TO äœ¿çšæ³ã¯æ¬è³ªçã«æ¬ é¥ãããã äºæž¬äžå¯èœãªããŸãã¯èšé²ãããŠããªããžã£ã³ã å¶åŸ¡ãããŒç£æ»ã«ãããŠããããã¯å±éºä¿¡å·ãšãªããŸããéçè§£æã®ä¿¡é Œæ§ãäœäžãããèªåãã¹ãã劚ããææ°ã®ç°å¢ãžã®ç§»è¡ãè€éåãããŸãã
å±éºãªèŠçŽ ãç¹å®ããªãã¡ã¯ã¿ãªã³ã°ããããšã§ãããã®ãªã¹ã¯ã«å¯ŸåŠãã GO TO ãã¿ãŒã³ã«ããä¿å®æ§ãåäžããåŸæ¥ã® COBOL ã·ã¹ãã ãææ°ã®ãœãããŠã§ã¢ ãšã³ãžãã¢ãªã³ã° ãã©ã¯ãã£ã¹ã«é©åããŸãã
æ§é åæ§é ãžã®ALTERã®ãªãã¡ã¯ã¿ãªã³ã°
ãã® ALTER æã¯ãæã®ã¿ãŒã²ãããåçã«å€æŽããèœåããããããCOBOLã§æãåé¡ã®ããæ§é ã®1ã€ãšããŠåºãèªèãããŠããŸãã GO TO å®è¡æã«ãåæã®ããã°ã©ãã³ã°ã¢ãã«ã§ã¯åŒ·åã ã£ããã®åäœã¯ãå¶åŸ¡ãããŒã®æç¢ºããšäºæž¬å¯èœæ§ãšããçŸä»£ã®ååã«åããŠããŸãããã®çµæããªãã¡ã¯ã¿ãªã³ã°ã¯ ALTER ã¹ããŒãã¡ã³ãã æ§é åãããä»£æ¿æ¡ ããã°ã©ã ã®ä¿å®æ§ãåäžãããè¿ä»£åãä¿é²ããä¿¡é Œæ§ã®é«ãéçåæã確ä¿ããããã«äžå¯æ¬ ã§ãã
ãšã®ææŠ ALTER å®è¡æã®åœ±é¿ã«ãããŸããæ®µèœã倿Žããããšããã®åŸã® GO TO ãããåç
§ãããšãå¶åŸ¡ãæ°ããå®å
ã«æž¡ãããŸããããã®å®å
ã¯å
ã®ã©ãã«ãšæ§æçãŸãã¯æå³çã«äœã®é¢ä¿ããªãå¯èœæ§ããããŸãããã®ãªãã€ã¬ã¯ãã¯åçŽãªã³ãŒãæ€æ»ã§ã¯ç¢ºèªã§ããªããããçµæãšããŠçãããããŒã®è¿œè·¡ã¯å°é£ã«ãªããå®å
šãªå®è¡ãã¬ãŒã¹ãªãã§ã¯æ€èšŒã¯ã»ãŒäžå¯èœã«ãªããŸãã
åŸæ¥ã®äŸã¯æ¬¡ã®ããã«ãªããŸãã
ALTER STEP-ROUTER TO PROCEED TO STEP-A.
GO TO STEP-ROUTER.
ãªãã¡ã¯ã¿ãªã³ã°ã¯ ãã€ãããã¯ã®çœ®ãæã GO TO ããžã㯠éçã§æ§é åãããå¶åŸ¡ãã¹ã䜿çšãããäžè¬çãªãã¿ãŒã³ãšããŠã¯ã å¶åŸ¡å€æ°ãšçµã¿åããã EVALUATE or IF æ§ç¯ãã以äžã«ç€ºãããã«ã
MOVE 'STEP-A' TO NEXT-STEP.
IF NEXT-STEP = 'STEP-A'
PERFORM STEP-A
ELSE
IF NEXT-STEP = 'STEP-B'
PERFORM STEP-B
END-IF.
ãããã¯ã ALTER è«çã¯å°æ°ã®åå¥ã®ã±ãŒã¹ãå«ã¿ã EVALUATE ããæç¢ºã§ã¹ã±ãŒã©ãã«ãªæ§é ãæäŸããŸãã
EVALUATE TRUE
WHEN NEXT-STEP = 'STEP-A'
PERFORM STEP-A
WHEN NEXT-STEP = 'STEP-B'
PERFORM STEP-B
WHEN OTHER
DISPLAY 'Invalid routing step'
END-EVALUATE.
ãªãã¡ã¯ã¿ãªã³ã° ããã»ã¹äžã®äž»ãªèæ ®äºé ã¯æ¬¡ã®ãšããã§ãã
- å ã®ã«ãŒãã£ã³ã°ããžãã¯ãç¶æãã åäœãæ©èœçã«åçã§ããããšãä¿èšŒãããã
- è€æ°ã®
ALTERã¿ãŒã²ãã ãã¹ãŠã®é·ç§»ãæç€ºçã«ããçµ±äžããããã£ã¹ãããã«ãŒãã³ - çµäºãã¹ãæç¢ºã«å®çŸ©ãããŠããããšã確èªãããããŸã§äŸåããŠããç¡éã«ãŒããããžãã¯ãã©ãããåé¿ããããã«ã
ALTER
éçè§£æããŒã«ã¯ãæ¬¡ã®æ¹æ³ã§ãã®ããã»ã¹ãæ¯æŽããŸãã
- ãããã
ALTERãããŠãã®äžæµãžã®åœ±é¿ - ãã¹ãŠããããã³ã°
GO TO圱é¿ãåããã¿ãŒã²ããALTER - 䜿çšãã¿ãŒã³ã«åºã¥ããŠå¶åŸ¡å€æ°åãšãã£ã¹ãããæ§é ãææ¡ãã
ãªãã¡ã¯ã¿ãªã³ã°ã«ãã£ãŠ ALTER æ§é åãããæ§é ã«ããããšã§ãéçºè
ã¯åçå¶åŸ¡ã®ææ§ããæé€ããã³ãŒãã®äºæž¬å¯èœæ§ãšè§£ææ§ãé«ããŸããããã«ãããæ¢åã®ã·ã¹ãã ã®ä¿¡é Œæ§ãåäžããã ãã§ãªããèªåã³ãŒã倿ãå¯èœã«ãªããææ°ã®ã³ãŒãã£ã³ã°æšæºãžã®æºæ ãä¿é²ãããŸãã
èªå®æ¡ä»¶ SMART TS XL ALTERã®äœ¿çšãæ€åº
ã®ååšãšåœ±é¿ãç¹å®ãã ALTER COBOL ã³ãŒãããŒã¹ã§ã®ã¹ããŒãã¡ã³ãã®äœæã¯ãå¶åŸ¡ãããŒåæãšææ°åèšç»ã®éèŠãªã¹ãããã§ãã SMART TS XL æ€åºãšåæã®ããã®å
ç¢ãªèªåãµããŒããæäŸããŸã ALTER 䜿çšããããšã§ãå質ä¿èšŒããªãã¡ã¯ã¿ãªã³ã°ãã³ã³ãã©ã€ã¢ã³ã¹ã®åãçµã¿ã®æ©ã段éã§ããããã®åçãªãªãã€ã¬ã¯ã ã¡ã«ããºã ãæããã«ãªãããšãä¿èšŒãããŸãã
SMART TS XL COBOLãœãŒã¹ã³ãŒããæ§æã¬ãã«ãšæå³ã¬ãã«ã®äž¡æ¹ã§ã¹ãã£ã³ããŸãããã®ããŒã«ã¯åã« ALTER ããŒã¯ãŒããšããŠãããã¯ã©ã®ããã« ALTER 段èœãã»ã¯ã·ã§ã³ãããã«ã¯ããã°ã©ã ã¢ãžã¥ãŒã«å
šäœã«ãããå®è¡ã«åœ±é¿ãäžããŸãããã®é«åºŠãªæ©èœã¯ã GO TO äžåºŠåŒã³åºããæç¹ã§ã¯æããã§ã¯ãªããããããªã ALTER ãããä¿®æ£ããŸããã
äž»ãªæ€åºæ©èœã¯æ¬¡ã®ãšããã§ãã
1. çžäºåç
§ALTERãããã³ã°
ãã®ããŒã«ã¯ããã¹ãŠã®åæ¹åããããçæããŸã ALTER ã¹ããŒãã¡ã³ããšãã®ã¿ãŒã²ããã®å€æŽãããã«ãããéçºè
ã¯ã©ã®æ®µèœãåå²ãåœãŠãããããå
ã®ã¿ãŒã²ããã¯äœã ã£ããããããŠã©ãã ãã® GO TO 倿Žã®åœ±é¿ãåããã¹ããŒãã¡ã³ããèŠã€ãããŸããããã®èŠèŠçãªãããã³ã°ã«ããã远跡å¯èœæ§ãšæ£ç¢ºãªåœ±é¿è©äŸ¡ãå¯èœã«ãªããŸãã
2. åçå¶åŸ¡ãããŒæ³šé
In SMART TS XLã®å¶åŸ¡ãããŒã°ã©ãã§ã¯ã倿Žããããã¹ã¯éçãªå¶åŸ¡é·ç§»ãšã¯ç°ãªã泚éãä»ããããŸããéçºè
ã¯çŽæ¥çãªãã¹ãšå€æŽããããã¹ãç°¡åã«åºå¥ã§ããŸãã GO TO ããã«ãããäžå®å®ãªå¶åŸ¡é åãåé¢ãããªãã¡ã¯ã¿ãªã³ã°ãæãç·æ¥ãªå Žæãããé©åã«ææ¡ã§ããããã«ãªããŸãã
3. CFGæŽåæ§ã«ãŒã«ãšã®çžäºäœçš
ALTERæ€åºã¯ã SMART TS XLã®å¶åŸ¡ãããŒæŽåæ§ã«ãŒã«ã倿Žãããã¿ãŒã²ãããå°éäžèœãŸãã¯çµäºããªã段èœã«ã€ãªããå ŽåããŸãã¯ãªãã€ã¬ã¯ãã«ãã£ãŠæ§é çã«è§£æ±ºã§ããªãã«ãŒãåäœãçºçããå ŽåãããŒã«ã¯é倧床ã«å¿ããŠèŠåãçºããŸããããã«ããã ALTER æé»çã«è«ççæ¬ é¥ãå°å
¥ããããšã¯ãããŸããã
4. ãªãã¡ã¯ã¿ãªã³ã°ã®æšå¥šäºé
SMART TS XL æé€ãæ¯æŽããå®çšçãªæŽå¯ãæäŸããŸã ALTER圱é¿ãåããéšåã®äº€æãæšå¥šããŸã GO TO æ§é åãããã¹ããŒãã¡ã³ã PERFORM ãããã¯ãŸãã¯å¶åŸ¡ããã EVALUATE ããžãã¯ããããã®æšå¥šäºé
ã¯åšå²ã®ã³ãŒããšé¢é£ä»ãããããããããŒã ã¯æ©èœãæãªããã«æ®µéçã«è¿ä»£åãé²ããããšãã§ããŸãã
5. ããããã£ã«ã¿ãªã³ã°ãšã€ã³ã¿ã©ã¯ãã£ããã£ã«ã¿ãªã³ã°
å€§èŠæš¡ãªã³ãŒãããŒã¹ã§ã¯ããŠãŒã¶ãŒã¯ãã£ã«ã¿ãŒãé©çšããŠã次ã®ã³ãŒããå«ãããã°ã©ã ãŸãã¯ã³ã³ããŒãã³ãã®ã¿ãåé¢ããããšãã§ããŸãã ALTERããŸãã¯èŠæš¡ãæ§é çãªåœ±é¿åºŠã«åºã¥ããŠã©ã³ã¯ä»ãããããšãã§ããŸããããã«ãããæ®µéçãªä¿®åŸ©æŠç¥ãšãªã¹ã¯ã«åºã¥ãåªå
é äœä»ããå¯èœã«ãªããŸãã
æ£ç¢ºã«å Žæãç¹å®ããããšã§ ALTER ã©ã®ããã«äœ¿çšãããå®è¡ãã¹ãã©ã®ããã«å€æŽããäžæµã«ã©ã®ãããªåœ±é¿ããããããã SMART TS XL ããŒã ã¯ãæ··æ²ãšããããããã¯ã¬ã¬ã·ãŒã³ãŒãã§èšè¿°ãããCOBOLã·ã¹ãã ã®å¶åŸ¡ãåãæ»ãããšãã§ããŸãããã®ã¬ãã«ã®æŽå¯ã¯ãäºæž¬å¯èœæ§ãšå¶åŸ¡ãããŒã®éææ§ãæãéèŠãšãªãç£æ»ãã¢ããã€ãŒãŒã·ã§ã³ãã·ã¹ãã ç§»è¡ã«ãããŠéåžžã«è²Žéã§ãã
EVALUATE ãšãã¹ãããã IF ã®èœãšã穎
ãã® EVALUATE COBOLã®ã¹ããŒãã¡ã³ãã¯ã次ã®ãããªãã«ããã©ã³ãæ§é ãæäŸããããšã§è€éãªæ¡ä»¶ä»ãããžãã¯ãç°¡çŽ åããããã«èšèšãããŠããŸãã switch ä»ã®èšèªã§ã®è¡šçŸãæ£ãã䜿çšããã°ã EVALUATE å¯èªæ§ãåäžããã€ã³ãã³ããæžããåå²ãšã©ãŒã®ãªã¹ã¯ãæå°éã«æããããŸããããããå€ãã®ã¬ã¬ã·ãŒã·ã¹ãã ã§ã¯ã EVALUATE éçºè
ã¯æ·±ããã¹ãããã IF çè§£ãã«ããããžãã¯ãã¹ãäœæããã¹ããŒãã¡ã³ããã©ã¡ãã®ãã¿ãŒã³ãã誀ã£ãŠé©çšãããšå¶åŸ¡ãããŒã®ç°åžžãçºçããä¿å®æ§ãäœäžããå¯èœæ§ããããŸãã
åé¡ã®ãããã¹ãã®äŸã以äžã«ç€ºããŸãã IF è«çïŒ
cobolã³ããŒç·šéIF A = 1
IF B = 2
IF C = 3
PERFORM ACTION-1
END-IF
END-IF
END-IF.
ãã®ã¿ã€ãã®ãã¹ãã¯è¿œè·¡ãé£ãããã¡ã³ããã³ã¹äžã«ãšã©ãŒãçºçãããããæ¡ä»¶ã®èŠèœãšããçºçããããã§ããæ¡ä»¶ã®1ã€ã®ã¬ãã«ã倿Žããããšãããžãã¯ãã¹å
šäœãçªç¶å£ããå¯èœæ§ããããŸããããã«ãæ·±ããã¹ãããã IF æ§é ã«ãããç¹ã«éè€ãŸãã¯ççŸããæ¡ä»¶ãšçµã¿åãããå Žåããã©ãŒã«ã¹ã«ãŒ ãšã©ãŒã®å¯èœæ§ãé«ãŸããŸãã
察ç
§çã«ã EVALUATE ããæ§é åãããä»£æ¿ææ®µãæäŸããŸã:
EVALUATE TRUE
WHEN A = 1 AND B = 2 AND C = 3
PERFORM ACTION-1
WHEN OTHER
PERFORM DEFAULT-ACTION
END-EVALUATE.
ãã®æ§é ã«ãããããžã㯠ãã¹ãæç¢ºã«ãªããç£æ»ã容æã«ãªããŸãã
äœ¿çšæãŸãã¯åé¿æã®ããããèœãšã穎 EVALUATE 次ã®ãšããã§ãã
- éè€ããæ¡ä»¶ ææ§ãªæµãã«ã€ãªãã
- èŠã€ããŠäžãã
WHEN OTHERå¥äºæããªãå ¥åãåŠçãããªã - ã®äœ¿ãéã
IF以åEVALUATEè€éããåå°å ¥ãã - å¶åŸ¡æ±ºå®ãæ··åãã
EVALUATE(NAIST) ãšIFãããã¯ãããã¯æ£æŒ«ãªè«çã«ã€ãªãã
éçè§£æããŒã«ã¯ãæ¡ä»¶ä»ããã¹ãã®æ·±ãã調ã¹ãåé·ãŸãã¯å°éäžå¯èœãªåå²ãæ€åºãããã¹ãŠã® EVALUATE ãããã¯ã«ã¯çµäºãã¹ãå«ãŸããŠããŸãããŸããåçã®ããžãã¯ãããæç¢ºã«è¡šçŸã§ããã€ã³ã¹ã¿ã³ã¹ããã©ã°ä»ããããŸãã EVALUATE æ§é ã
ãã£ãŒãã©ãŒãã³ã°ã®äº€æã«ããäž»ãªã¡ãªãã IF ãã§ãŒã³ä»ã EVALUATE 次ã®ãšããã§ãã
- ã³ãŒãã¬ãã¥ãŒæ åœè ãšã¡ã³ããã³ã¹ããŒã ã®å¯èªæ§ã®åäž
- ç°¡çŽ åãããããžãã¯ç£æ»ãšãã¹ãã«ãã¬ããž
- ãšããžæ¡ä»¶ã®èŠéãã«ãããšã©ãŒäŒæã®å¯èœæ§ã®äœæž
ã¢ããã€ãŒãŒã·ã§ã³ãŸãã¯å¶åŸ¡ãããŒã®æ€èšŒäžã«ããã¹ãããã IF ãããã¯ãæ§é å EVALUATE ããžãã¯ã¯æå³ãæç¢ºã«ããã ãã§ãªããã«ãã¬ããžåæããããã°ãèªåãã¹ãã®ããã®ããåªããããŒã« ãµããŒããå¯èœã«ããŸãã
EVALUATEæã«ãããæ¡ä»¶ã®éè€
äžæ¹ã EVALUATE COBOLã®æã¯æ§é åãããåå²ãšå¯èªæ§ã®åäžãä¿é²ããŸããããã®ä¿¡é Œæ§ã¯æ¡ä»¶ã®ç²ŸåºŠã«å·Šå³ãããŸããéçºè
ãå®çŸ©ããéã«ãå¶åŸ¡ãããŒã®ç°åžžãçºçããããšããããããŸãã éè€ããæ¡ä»¶ äžã« EVALUATE ãããã¯ããããã®éè€ã¯ææ§ããçã¿åºããç¹ã«è€æ°ã® WHEN åãå
¥åã«å¯ŸããŠãå¥ã¯ true ãšè©äŸ¡ãããå¯èœæ§ããããŸãã
ãã®äŸãèããŠã¿ãŸãããïŒ
EVALUATE RATE
WHEN 1 THRU 5
PERFORM LOW-RATE-PROC
WHEN 5 THRU 10
PERFORM MID-RATE-PROC
WHEN OTHER
PERFORM DEFAULT-PROC
END-EVALUATE.
ãã®å Žåã RATE = 5 1çªç®ãš2çªç®ã®äž¡æ¹ãæºãã WHEN COBOLã®å®è¡èŠåã«ããã°ãæåã«äžèŽããæ¡ä»¶ã®ã¿ãå®è¡ãããããã LOW-RATE-PROC å®è¡ããã MID-RATE-PROC ã¹ããããããŸããæå³çã§ããã°èš±å®¹ããããããããŸããããå€ãã®å Žåã äºæããªãåäœ éçºè
ãæä»çã§ãªãç¯å²ãæ³å®ããããäžéãšäžéã®èª¿æŽãå¿ãããããå Žåã
éè€ããç¶æ ã¯ãéåžžãæ¬¡ã®åå ã§çºçããŸãã
- å¥ãã¿ãŒã³ãåå©çšããéã®ã³ããŒïŒããŒã¹ããšã©ãŒ
- å
å«ç¯å²ã®æå³è«ã®èª€è§£ïŒ
THRUäž¡æ¹ã®ãšã³ããã€ã³ããå«ãïŒ - 以åã®æ¡ä»¶ãå調æŽããã«æ¡ä»¶ã倿Žããé²åããããžãã¹ããžãã¯
éçåæããŒã«ã¯ãæ¬¡ã®æ¹æ³ã§ãããã®ç°åžžãæ€åºããŸãã
- ããããã®å€ã®ç¯å²ãåæãã
WHENå¥ - æ°å€ééãæååãã¿ãŒã³ããŸãã¯ã¹ããŒã¿ã¹ã³ãŒãã®äº€å·®ããã§ãã¯ãã
- åžžã«å è¡æ¡é ã«åªå ããæ¡ä»¶ã®ãã©ã°ä»ã
- æ¡é ã®é åºãææžåãããããŸãã¯æåŸ ãããåªå é äœãšäžèŽããŠããããšã確èªãã
ããäžã€ã®åŸ®åŠãªåé¡ã¯ã éè€ããããŒã«åŒ:
EVALUATE TRUE
WHEN STATUS-CODE = 100 OR STATUS-CODE = 101
PERFORM ACTION-1
WHEN STATUS-CODE = 101 OR STATUS-CODE = 102
PERFORM ACTION-2
ããã§ã¯ã STATUS-CODE = 101 äž¡æ¹ã®æ¡é
ãæºãããŠãããã ACTION-1 å®è¡ãããŸããäž¡æ¹ã®ã¢ã¯ã·ã§ã³ãå¿
èŠãªå ŽåããŸãã¯åŸã§é åºãé転ããå Žåãããžãã¯ã¯æé»çã«äžæãããŸãã
ãããã®å¶åŸ¡ãããŒã®ç°åžžãé²ãã«ã¯:
- ããããéè€ããªããæç¢ºã«åºåãããæ¡ä»¶ã䜿çšãã
WHENå¥ - æå¹ã«ãã
EVALUATEããžãã¹ã«ãŒã«ãšãã¹ãã±ãŒã¹ã«å¯Ÿããã·ãŒã±ã³ã¹ - éçºè ã以äžã®ãã¬ãŒãã³ã°ãåããŠããããšã確èªãã ãã¡ãŒã¹ããããå®è¡ã¢ãã« COBOLã§
- å«ãã
WHEN OTHERäºæãã¬äŸ¡å€ãæããå®å šç¶²ãšããŠ
æ£ç¢ºãªç¶æ
管ç EVALUATE ãããã¯ã¯åãªããã¹ã ãã©ã¯ãã£ã¹ã§ã¯ãªããç¹ã«éèãã³ã³ãã©ã€ã¢ã³ã¹ãéèŠããããŸãã¯ãŠãŒã¶ãŒåãã®ã·ã¹ãã ã«ãããŠãå¶åŸ¡ãã¹ã«ããã確å®çãªåäœãä¿èšŒããããã«äžå¯æ¬ ã§ãã
WHEN OTHER ç¯ã®æ¬ èœïŒãµã€ã¬ã³ããšã©ãŒïŒ
COBOLã§ã¯ EVALUATE ã¹ããŒãã¡ã³ãã WHEN OTHER å¥ã¯ãããã°ã©ã ãåŠçããããšãä¿èšŒããããã©ã«ãã®ãã£ãããªãŒã«ãšããŠæ©èœããŸãã äºæããªãããŸãã¯èª¬æã§ããªãå€ãã®ç¯ãçç¥ãããå Žåã WHEN æ¡ä»¶ã«ãããããã°ã©ã ã¯å
šäœãã¹ãããããŸã EVALUATE äœãã¢ã¯ã·ã§ã³ããšã©ãŒãèµ·ãããã«ãããã¯ããŸãããã®ãµã€ã¬ã³ããã€ãã¹ã¯ãæãåä»ãªå¶åŸ¡ãããŒç°åžžã®äžã€ãåŒãèµ·ãããŸãã éããªå€±æ.
ãã®äŸãèããŠã¿ãŸãããïŒ
EVALUATE TRANSACTION-CODE
WHEN 'D'
PERFORM DEPOSIT
WHEN 'W'
PERFORM WITHDRAW
WHEN 'T'
PERFORM TRANSFER
END-EVALUATE.
If TRANSACTION-CODE is 'X' ãŠãŒã¶ãŒãšã©ãŒãŸãã¯ããŒã¿ç Žæã«ãããåå²ã¯å®è¡ãããŸãããã¡ãã»ãŒãžã¯è¡šç€ºãããŸããããšã©ãŒãçºçããŸãããããã°ã©ã ã¯åã«ç¶è¡ãããŸãããå€ãã®å Žåãäžå®å
šãªç¶æ
ãŸãã¯ççŸããç¶æ
ã«ãªããŸãã
ãµã€ã¬ã³ãé害ãå±éºãªçç±:
- 圌ã㯠ãã¹ãäžã«æ€åºããã®ãé£ããç¹ã«ãšããžã±ãŒã¹ããã¹ãã¹ã€ãŒãã®äžéšã§ã¯ãªãå Žåã«åœãŠã¯ãŸããŸãã
- 圌ã ã·ã¹ãã ãéšåçã«å®è¡ãããç¶æ ã®ãŸãŸã«ããéèŠãªæŽæ°ãæ€èšŒãã¹ãããããŸãã
- 圌ãã¯ããããšãã§ããŸã æ»ãå®å šã«å®è¡ããã以åã®ã«ãŒãã³ã«äŸåããåŸç¶ã®ããžãã¯ãããªã¬ãŒããŸãã
éçè§£æããŒã«ã¯ããã®åé¡ãèŠã€ããã®ã«ç¹ã«é©ããŠããŸãããã¹ãŠã®ã³ãŒããã¹ãã£ã³ããŸãã EVALUATE ãããã¯ããŠæ€èšŒãã:
- ãã©ãã
WHEN OTHERç¯ãååšãã - æå®ããã
WHENæ¡ä»¶ã¯ãã¹ãŠã®å¯èœãªå ¥åå€ãèæ ®ãã - è©äŸ¡ããããã£ãŒã«ãã®ããŒã¿åãåçç¯å²ãŸãã¯ç¡å¶éã®ç¯å²ïŒäŸïŒãŠãŒã¶ãŒå ¥åãŸãã¯å€éšããŒã¿ïŒã瀺åãããã©ãã
ãã®åé¡ãåé¿ããããã®ãã¹ããã©ã¯ãã£ã¹ã¯æ¬¡ã®ãšããã§ãã
- åžžã«
WHEN OTHERå¥ãããšããã©ãŒã«ããã¯ããžãã¯ãæå°éã§ãã£ãŠã: cobolCopyEditWHEN OTHER DISPLAY 'Invalid transaction code' PERFORM LOG-ERROR - ãã¬ãŒãµããªãã£ã®ããã«äºæããªãå€ãèšé²ãã
- äœ¿ãæ¹
PERFORM ABORTãŸãã¯ãæªå®çŸ©ã®å ¥åãçºçããå Žåã®éèŠãªã·ã¹ãã ã«ããããã®ä»ã®çµäºã«ãŒãã³
ç£æ»èŠä»¶ãå®å
šæ§ãéèŠãªããªã·ãŒã«ãã£ãŠç®¡çãããŠããã·ã¹ãã ã®å Žåã WHEN OTHER æ¡é
ã¯ã ã³ã³ãã©ã€ã¢ã³ã¹éåããã¯ãæ€èšŒãããŠããªãåäœãèš±å¯ããã³ãŒããã¹ã衚ããŠããããã§ãã
èŠçŽãããšãçç¥ãããš WHEN OTHER in EVALUATE ã¹ããŒãã¡ã³ãã¯ããã°ã©ã ã®ã»ãŒããã£ããããç Žå£ããŸããéçè§£æã¯ãããã®èŠèœãšããèªåçã«æ€åºããããŒã ãäºæããªããŸãã¯æªæã®ããå
¥åã«å¯ŸããŠå¶åŸ¡ããžãã¯ã匷åãããã¹ãŠã®å®è¡ãã¹ãèæ
®ãããããã«ããã®ã«åœ¹ç«ã¡ãŸãã
æ§é åãããŠããªããã©ã³ãã®ããã©ãŒãã³ã¹ãžã®åœ±é¿
COBOLã«ãããå¶åŸ¡ãããŒã®èšèšã¯ãæ£ç¢ºæ§ãšä¿å®æ§ã ãã§ãªããããã°ã©ã ã®ããã©ãŒãã³ã¹ã«çŽæ¥åœ±é¿ãåãŒããŸããæ·±ããã¹ãã«ããåå²ããžãã¯ã®æ§é åãäžååãªå Žåã IF ã¹ããŒãã¡ã³ããéå¹çç EVALUATE æ§é ãæé©åãããŠããªãæ¡ä»¶ãã§ãã¯ã«ãã£ãŠãç¹ã«å€§éã®ããã ããã°ã©ã ããã©ã³ã¶ã¯ã·ã§ã³ãéäžãã CICS ã¢ããªã±ãŒã·ã§ã³ã§ã¯ããã©ãŒãã³ã¹ãäœäžããå¯èœæ§ããããŸãã
éå¹ççãªåå²ã®äŸ:
IF CUSTOMER-TYPE = 'PREMIUM'
PERFORM PROCESS-PREMIUM
ELSE
IF CUSTOMER-TYPE = 'STANDARD'
PERFORM PROCESS-STANDARD
ELSE
IF CUSTOMER-TYPE = 'BASIC'
PERFORM PROCESS-BASIC
ELSE
PERFORM DEFAULT-PROCESS
ãã¹ããããå IF ç¹ã«ãã®æ§é ãæ°åãæ°çŸäžã®ã¬ã³ãŒãã«ããã£ãŠç¹°ãè¿ãããå Žåãäœåãªæ¯èŒãçºçããå®è¡æéãé·ããªããŸãããã®éå¹çæ§ã¯ãæ¯èŒãè€éã§ãã£ãããããŒãã«åç
§ã䌎ã£ãããåãããŒã¿ãç¹°ãè¿ãè©äŸ¡ããå¿
èŠãããå Žåã«é¡èã«ãªããŸãã
ãã® EVALUATE é©åã«æ§é åãããŠããã°ãããæç¢ºã§é«éãªä»£æ¿ææ®µãšããŠã次ã®ãããªæ§æãæšå¥šãããããšãå€ã:
EVALUATE CUSTOMER-TYPE
WHEN 'PREMIUM'
PERFORM PROCESS-PREMIUM
WHEN 'STANDARD'
PERFORM PROCESS-STANDARD
WHEN 'BASIC'
PERFORM PROCESS-BASIC
WHEN OTHER
PERFORM DEFAULT-PROCESS
END-EVALUATE.
æ§æä»¥å€ã«ããããã©ãŒãã³ã¹ãžã®åœ±é¿ã¯ããã€ãã®ããæ·±å»ãªåé¡ããçããŸãã
- åé·ãªç¶æ ãã§ã㯠åãå€ãç°ãªããã©ã³ãã§è€æ°åæ¯èŒãããå Žå
- é åºãªãè©äŸ¡ ããé »ç¹ã«çºçããã±ãŒã¹ãæåŸã«é 眮ãããäžèŠãªãã§ãã¯ã匷å¶ãã
- ã³ãŒãã®éè€ åæ§ã®ããžãã¯ãçµ±åãããã«è€æ°ã®ãã©ã³ãã«çŸããå Žå
- åºå£ç®¡çã®æ¬ åŠ å°éäžå¯èœãªã«ãŒãã³ãã»ãšãã©äœ¿çšãããªãã«ãŒãã³ãžã®äžèŠãªåå²ãåŒãèµ·ãã
éçè§£æããŒã«ã¯åå²ã®æ·±ããæž¬å®ããç¹°ãè¿ããäžèŠãªæ¡ä»¶è©äŸ¡ãèå¥ããèšç®ããŸãã 埪ç°çè€é床ã¯ãããã©ãŒãã³ã¹ãªã¹ã¯ã®ææšãšããŠæ©èœããŸãããããã®ããŒã«ã¯ãå®è¡ãããŒãã·ãã¥ã¬ãŒãããæ¬çªç°å¢ã®ããŒã¿ãã¿ãŒã³ã«åºã¥ããŠåãã©ã³ãã®äœ¿çšé »åºŠãæšå®ããããšãã§ããŸãã
å¶åŸ¡ãããŒã®ããã©ãŒãã³ã¹ãåäžãããããã®æé©åæŠç¥ã«ã¯æ¬¡ã®ãã®ããããŸãã
- æãäžè¬çãªã±ãŒã¹ãæåã«åŠçããããã«æ¡ä»¶ããªãã¡ã¯ã¿ãªã³ã°ãã
- å
±æããžãã¯ããµãã«ãŒãã³ã«çµ±åãããã
PERFORMedæ®µèœ - ãã¹ãããã眮æ
IFé©åãªå Žåã¯ã«ãã¯ã¢ããããŒãã«ãŸãã¯ã€ã³ããã¯ã¹ä»ãé åãæã€ããã㯠- æç¢ºããšããã©ãŒãã³ã¹ãåäžããå Žåã¯ãé·ãè©äŸ¡ãã§ãŒã³ãè€æ°ã®æ®µéçãªæ±ºå®ã«åå²ãã
å®éã®ã·ã¹ãã ã§ã¯ãç¹ã«æ¯æ¥äœçŸäžãã®ãã©ã³ã¶ã¯ã·ã§ã³ãåŠçããéè¡ãä¿éºãå°å£²æ¥ã®ã¡ã€ã³ãã¬ãŒã ã§ã¯ãæ¯åºæ§é ã®ããããªæ¹åã§ã CPU æéãšãããæéãå€§å¹ ã«ççž®ãããå¯èœæ§ããããŸãã
ããã©ãŒãã³ã¹ãèæ ®ããŠå¶åŸ¡ãã¹ãåæããã³åæ§ç¯ããããšã§ãçµç¹ã¯ããã°ã©ã ã®æç¢ºããåäžãããã ãã§ãªããæž¬å®å¯èœãªå¹çæ§ã®åäžãå®çŸã§ããŸãã
ã¡ã€ã³ãã¬ãŒã å®è¡ã³ã³ããã¹ãã®ãªã¹ã¯
ã¡ã€ã³ãã¬ãŒã äžã§å®è¡ãããCOBOLã·ã¹ãã ã§ã¯ãå®è¡ã³ã³ããã¹ãã¯åäžã®ããã°ã©ã ãŸãã¯ã¢ãžã¥ãŒã«ã«éå®ãããŸããããããã®ã¢ããªã±ãŒã·ã§ã³ã¯ã以äžãå«ãããåºç¯ãªç°å¢ã§åäœããŸãã CICSã®ãããªãã©ã³ã¶ã¯ã·ã§ã³ã¢ãã¿ãŒ, JCLã«ããããããªãŒã±ã¹ãã¬ãŒã·ã§ã³, ããŒã¿ããŒã¹ãµãŒããŒ, ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã¬ãã«ã®ãµãŒãã¹ãããã®å®è¡ã³ã³ããã¹ãã誀解ãããã誀ã£ãŠç®¡çããããããšãåŸæ¥ã®ããã°ã©ã ã¬ãã«ã®ã¬ãã¥ãŒã§ã¯æ°ä»ãããªãããšãå€ãé倧ãªå¶åŸ¡ãããŒã®ãªã¹ã¯ãçºçããŸãã
ãããã®ãªã¹ã¯ã¯æ¬¡ã®ãããªåœ±é¿ãåãŒãå¯èœæ§ããããŸãã
- ããã°ã©ã ã®èœå æå³ããå®è¡ãã¹ãå®äºãã
- ãã® å ±æãªãœãŒã¹ã®äžè²«æ§ãã¡ã€ã«ãããŒã¿ããŒã¹ãã¡ã¢ãªãªã©
- ãã® ãã©ã³ã¶ã¯ã·ã§ã³ã®æŽåæ§ å€æ®µéã®ããã»ã¹
- ã·ã¹ãã 㮠倱æããå埩ããèœåãåèµ·åããŸãã¯ç°åžžçµäº
å®è¡ã³ã³ããã¹ãã®åé¡ã®äžè¬çãªçç¶ãšããŠã¯ãããã°ã©ã ãå¶åŸ¡ãæ©æã«è¿ããä»ã®ã³ã³ããŒãã³ããšã®åæã«å€±æãããåšå²ã®ãžã§ã ã¹ãããããã®æé»çãªåäœã«äŸåããããªã©ãæããããŸãã
ãã®é åã«ãããéçè§£æã¯ããœãŒã¹ã³ãŒãã ãã«ãšã©ãŸãããã¢ãã«åããå¿ èŠãããã COBOLããã°ã©ã ãšå€éšå¶åŸ¡ã¡ã«ããºã éã®çžäºäœçšJCLã¹ãããã®äŸåé¢ä¿ãCICSã³ãã³ããããŒããã§ãã¯ãã€ã³ã/ãªã¹ã¿ãŒãããžãã¯ãªã©ããããã®ã³ã³ããã¹ããçè§£ããããšã«ãã£ãŠã®ã¿ãçã®ãšã³ãããŒãšã³ãã®å¶åŸ¡ãããŒä¿èšŒãå®çŸã§ããŸãã
次ã®ãµãã»ã¯ã·ã§ã³ã§ã¯ãå®è¡ã³ã³ããã¹ã ãªã¹ã¯ã® 2 ã€ã®äž»èŠãªã«ããŽãªã«ã€ããŠèª¬æããŸãã
- CICSåºæã®å¶åŸ¡ãããŒã®å±éºæ§ãã©ã³ã¶ã¯ã·ã§ã³ã®æŽåæ§ãšç«¯æ«ã»ãã·ã§ã³ã®åäœãæ éã«ç®¡çããå¿ èŠããã
- ããããžã§ãã®ã·ãŒã±ã³ã¹ã®æ¬ é¥äžé©åã«æ§é åããã JCL ãããªã«ã㪠ãã€ã³ãã®æ¬ èœã«ããããžã§ã ã¹ããªãŒã å šäœã«é£éçãªé害ãçºçããå¯èœæ§ããããŸãã
åã¿ã€ãã®ãªã¹ã¯ã¯è©³çŽ°ãªæè¡ç課é¡ã«åé¡ãããCOBOL ã®äŸã§èª¬æãããããŒã ãæœåšçãªé害ãã€ã³ããæ€åºããŠä¿®æ£ããã®ã«åœ¹ç«ã€åæææ³ãæäŸãããŸãã
CICSåºæã®å¶åŸ¡ãããŒã®å±éºæ§
COBOLã¢ããªã±ãŒã·ã§ã³ã¯ã CICSïŒé¡§å®¢æ å ±ç®¡çã·ã¹ãã ïŒ ç°å¢ã¯ããã©ã³ã¶ã¯ã·ã§ã³ã®ä¿¡é Œæ§ããªãœãŒã¹ã®æŽåæ§ã端æ«ãããã¯ãšã³ããµãŒãã¹ãšã®æ£ç¢ºãªéä¿¡ã確ä¿ããããã«ãç¹å®ã®å¶åŸ¡ãããŒãããã³ã«ã«æºæ ããå¿ èŠããããŸããCICSã¯ãåæã»ãã·ã§ã³éã§ãã©ã³ã¶ã¯ã·ã§ã³ã³ã³ããã¹ããå ¥åºåæäœãå ±æãªãœãŒã¹ã管çããããã äºæ³ãããæµãã®æåããã®éžè± æäœãäžå®å šã«ãªã£ããããŠãŒã¶ãŒ ã»ãã·ã§ã³ãç Žæããããã·ã¹ãã ã¬ãã«ã® ABEND ãçºçããå¯èœæ§ããããŸãã
以äžã¯ãCOBOL ããã°ã©ã ã«ãããäžè¬ç㪠CICS é¢é£ã®å¶åŸ¡ãããŒã®å±éºæ§ã瀺ããŠããŸãã
ãã©ã³ã¶ã¯ã·ã§ã³ããã°ã©ã å ã®è¿åŽãããªãCONTROLé ç®
ãã¹ãŠã®CICSããã°ã©ã ã¯ã å¶åŸ¡ãè¿ã ã¿ã¹ã¯ãå®äºããåŸã RETURN ã³ãã³ãïŒ
EXEC CICS RETURN
TRANSID('TRNX')
COMMAREA(DATA-AREA)
END-EXEC.
ãã RETURN ãæ¬ èœããŠããããæ£ããã³ãŒãã£ã³ã°ãããŠããªãå Žåãå¶åŸ¡ã¯CICSã«æ£ããæ»ãããŸããããã®çµæããã©ã³ã¶ã¯ã·ã§ã³ããã³ã°ããããçªç¶çµäºãããã端æ«ã»ãã·ã§ã³ãäžæŽåãªç¶æ
ã«ãªã£ããããå¯èœæ§ããããŸããéçè§£æã§ã¯ããã¹ãŠã®åºå£ãã¹ãç¹å®ãã以äžã®ããšãæ€èšŒããããšã§ããã®ãããªã±ãŒã¹ããã©ã°ä»ãããŸãã RETURN ãŸãã¯åçã®ç«¯æ«å¶åŸ¡ã³ãã³ããããããååšããŸãã
è€æ°æäœãããŒã«ãããSYNCPOINTã®æ¬ èœ
DB2ããŒãã«ã®æŽæ°ãVSAMãã¡ã€ã«ã®æžã蟌ã¿ãã¡ãã»ãŒãžã®éä¿¡ãªã©ããã©ã³ã¶ã¯ã·ã§ã³ãè€æ°ã®ãªãœãŒã¹ã倿Žããå ŽåãCICS㯠åæãã€ã³ã ãã¹ãŠã®å€æŽãã¢ãããã¯ã«ã³ãããããã«ã¯:
cobolã³ããŒç·šéEXEC CICS SYNCPOINT END-EXEC.
ãããçç¥ãããšãäžéšã®ã·ã¹ãã ã«ã¯å€æŽãé©çšãããä»ã®ã·ã¹ãã ã«ã¯é©çšãããªãå¯èœæ§ããããACIDååã«éåããã¢ããªã±ãŒã·ã§ã³ã®ç¶æ
ãäžæŽåã«ãªããŸããéçè§£æããŒã«ã¯ããªãœãŒã¹ã倿Žããã³ãã³ãã®ã·ãŒã±ã³ã¹ã远跡ãã SYNCPOINT çµäºåã«è€æ°ã®ãªãœãŒã¹æäœãå®è¡ããŸãã
æå³ããªãããã°ã©ã çµäºïŒCICS RETURNã®èª€çšïŒ
äžéšã®éçºè
ã¯èª€ã£ãŠ STOP RUN or GOBACK CICSããã°ã©ã ã§ã¯ããããã®æã¯çªç¶ã®çµäºãåŒãèµ·ããã CICSã®ãã©ã³ã¶ã¯ã·ã§ã³ç®¡çããã€ãã¹ãã端æ«ãããã¯ããããããªãœãŒã¹ãå€ç«ããããã·ã¹ãã ã¬ãã«ã® ABEND ãåŒãèµ·ããããå¯èœæ§ããããŸãã
GOBACK. *> Should not be used in CICS
æ£ããå®è·µã§ã¯ããã¹ãŠã®CICSããã°ã©ã ã®äœ¿çšãçµäºããå¿
èŠããããŸãã EXEC CICS RETURNããŒã«ã¯ã以äžã®ããšãæ€èšŒããããšã§äžæ£äœ¿çšãæ€åºããŸãã STOP RUN (NAIST) ãš GOBACK CICSãã©ã°ä»ãããã°ã©ã ãŸãã¯ã³ããŒããã¯ã«ã¯ååšããŸãããèŠã€ãã£ãå Žåã¯ãé倧ãªå¶åŸ¡ãããŒéåãšããŠãã©ã°ãä»ããããŸãã
ãããã®å±éºã«å¯ŸåŠããããã«ãéçºè ã¯æ¬¡ã®ããšãè¡ãå¿ èŠããããŸãã
- åã³ãŒããã¹ãæå¹ãª
EXEC CICS RETURN - ã€ã³ãµãŒã
SYNCPOINTè€æ°ãªãœãŒã¹ã®æŽæ°åŸã®ã³ãã³ã - ããããŸãã¯éCICSã³ã³ããã¹ãã§ãªãéããçŽæ¥çµäºã³ãã³ãã¯äœ¿çšããªãã§ãã ããã
- ã
HANDLE ABEND(NAIST) ãšHANDLE CONDITIONäŸå€ãé©åã«ç®¡çãã
æ§é åãããçµäºããã³ãã©ã³ã¶ã¯ã·ã§ã³å®äºããžãã¯ãé©çšããããšã«ãããCICS å ã® COBOL ã¢ããªã±ãŒã·ã§ã³ã¯ç¶æ ã®ç Žæãåé¿ããé©åãªå埩ããµããŒããããã«ããŠãŒã¶ãŒ ãã©ã³ã¶ã¯ã·ã§ã³ç°å¢ã®éçšæšæºã«æºæ ããããšãã§ããŸãã
ãã©ã³ã¶ã¯ã·ã§ã³ããã°ã©ã å ã®è¿åŽãããªãCONTROLé ç®
CICSé§ååCOBOLã¢ããªã±ãŒã·ã§ã³ã®æèã«ãããŠãå¶åŸ¡ã®è¿åŽãšããæŠå¿µã¯åãªã圢åŒçãªãã®ã§ã¯ãªãããã©ã³ã¶ã¯ã·ã§ã³ã®æŽåæ§ãšã»ãã·ã§ã³ã®ç¶ç¶æ§ã確ä¿ããããã®èŠä»¶ã§ããå
¥ååŠçããªãœãŒã¹ã®æŽæ°ããããã¯äœããã®çžäºäœçšãè¡ããã¹ãŠã®CICSããã°ã©ã ã¯ãæç€ºçãªçµäºåŠçã§çµäºããå¿
èŠããããŸãã EXEC CICS RETURN ã³ãã³ãããã®æ»ãå€ã¯äœæ¥è«çåäœã®çµäºã瀺ããCICSã¢ãã¿ãŒãç°å¢ãã¯ãªãŒã³ã¢ãããã端æ«å¶åŸ¡ãè§£æŸããæ¬¡ã®ã¿ã¹ã¯ãã¹ã±ãžã¥ãŒã«ã§ããããã«ããŸãã
æ£ããäŸã¯æ¬¡ã®ããã«ãªããŸãã
EXEC CICS RETURN
TRANSID('TRNX')
COMMAREA(COMM-AREA)
END-EXEC.
ããã«ãããå¶åŸ¡ãããŒãç§©åºæ£ããçµäºãã COMMAREA 次ã®åŠçãã§ãŒãºã«åŒãæž¡ãããŸãã
ã®æ¬ åŠãŸãã¯èª€çš RETURN CICS ã«éç¥ããã«ããã°ã©ã ãçµäºããå®è¡ç°åžžã®é£éãçºçããŸãã
- ã¿ãŒããã«ã»ãã·ã§ã³ã¯ã¢ã¯ãã£ããŸãã¯ããã¯ããããŸãŸã§ã決ããŠå±ããªãä¿¡å·ãåŸ ã£ãŠãã
- ãªãœãŒã¹ (ãã¡ã€ã«ãDB2 æ¥ç¶ãäžæã¹ãã¬ãŒãž) å²ãåœãŠããããŸãŸã«ãªããã¡ã¢ãªãªãŒã¯ãããŒã¿ã»ããã®ããã¯ã«ã€ãªããå¯èœæ§ããããŸãã
- ãã©ã³ã¶ã¯ã·ã§ã³ãã§ãŒã³å ã®åŸç¶ããã°ã©ã ãããªã¬ãŒãããªãã¯ãŒã¯ãããŒãªãŒã±ã¹ãã¬ãŒã·ã§ã³ã®ç Žå£
- æ¬çªç°å¢ã§ã¯ããã³ã°ãããã©ã³ã¶ã¯ã·ã§ã³ããµã€ã¯ã«ãç¡æéã«æ¶è²»ããå¯èœæ§ããããããã©ãŒãã³ã¹ãäœäžãããããªãã¬ãŒã¿ã®ä»å ¥ãå¿ èŠã«ãªã
ãããã®å€±æã¯ãããã°ã©ããæ¬¡ã®ãããªäžè¬çãªCOBOLçµäºã³ãã³ãã䜿çšããå Žåã«ç¹ã«ããçºçããŸãã STOP RUN or GOBACKãããã¯ããã ã³ã³ããã¹ãã§ã¯æå¹ã§ãããCICS ã¢ããªã±ãŒã·ã§ã³ã§ã¯äžé©åã§ãã
éçè§£æããŒã«ã¯ã次ã®ãã®ãã¹ãã£ã³ããŠãã®å¶åŸ¡ãããŒã®ç°åžžãèå¥ããŸãã
- CICS ã³ãã³ã (
EXEC CICSïŒããã°ã©ã å - ãããªãäžåš
EXEC CICS RETURNæ - 誀ã£ã䜿çš
STOP RUN,GOBACKããŸãã¯ãã©ã°ãä»ããããããã°ã©ã å ã®ãã©ãŒã«ã¹ã«ãŒçµäºCICSå - é©åãªæ»ãããžãã¯ãåŒã³åºããã«çµäºããå®è¡ãã¹
æ€åºã«ã¯è¿œè·¡ãå«ãŸãã ãã¹ãŠã®åºå£ãã©ã³ãã¡ã€ã³ãã¹ã ãã§ãªãã ã§çµãããšã©ãŒãã³ãã©ãååšããŸããäŸãã°ã GOBACK RETURN å®è¡æã«æ€åºããã®ãé£ããããã·ã¹ãã å
šäœã®å®å®æ§ã«ãšã£ãŠéèŠãªéšåçãªçµäºç¶æ
ãäœæããããšãã§ããŸãã
ãã¹ããã©ã¯ãã£ã¹ã¯æ¬¡ã®ãšããã§ãã
- CICSåãã®ãã¹ãŠã®COBOLããã°ã©ã ãæç€ºçã«äœ¿çšããããšã確èªãã
EXEC CICS RETURN - å®è¡ãçµäºããå¯èœæ§ã®ãããã¹ãŠã®æ®µèœãŸãã¯åå²ãæå¹ãªCICSæ»ãå€ã§çµäºããããšã確èªãã
- äœ¿ãæ¹
PERFORMorGOTOãã¹ãŠã®åºå£ãå ±éã®RETURN-HANDLER段èœ
é©åãªå¶åŸ¡ã®æ»ãã«ããããã©ã³ã¶ã¯ã·ã§ã³å¢çãå°éãããã¡ã¢ãªãã¯ãªãŒã³ã¢ãããããCICS ãã¿ã¹ã¯ã®é åºä»ããšç«¯æ«ç®¡çã®å¶åŸ¡ãç¶æããããšãä¿èšŒãããŸãã
è€æ°æäœãããŒã«ãããSYNCPOINTã®æ¬ èœ
CICSç°å¢ã§å®è¡ãããCOBOLããã°ã©ã ã§ã¯ã ããŒã¿ã®æŽåæ§ è€æ°ã®ãªãœãŒã¹æŽæ°ã«ãŸããããã©ã³ã¶ã¯ã·ã§ã³ã®æŽåæ§ã¯éèŠã§ããVSAMãã¡ã€ã«ãžã®æžã蟌ã¿ãDB2ããŒãã«ã®æŽæ°ãäžæèšæ¶åã®å€æŽãªã©ããã©ã³ã¶ã¯ã·ã§ã³ã«è€æ°ã®æŽæ°ãå«ãŸããå Žåããããã®æäœã¯åäžã®ã¢ãããã¯åäœãšããŠæ±ãå¿
èŠããããŸããæäœã®äžéšã倱æããå Žåãã·ã¹ãã ã¯å€æŽãããŒã«ããã¯ããŠæŽåæ§ãç¶æããå¿
èŠããããŸãããã®ãã©ã³ã¶ã¯ã·ã§ã³ã®æŽåæ§ã¯ãCICSã§ã¯æç€ºçã« SYNCPOINT
å žåçãªäŸã¯æ¬¡ã®ããã«ãªããŸãã
EXEC CICS SYNCPOINT END-EXEC.
ãã®æã¯ããã©ã³ã¶ã¯ã·ã§ã³éå§ä»¥éã®ãã¹ãŠã®æŽæ°ãã³ãããããŸããçç¥ãããšãããã°ã©ã ã¯èªç¶çµäºãŸã㯠CICS RETURN倿Žãéšåçã«ã³ãããããã ççŸããããŒã¿ç¶æ
(NAIST) ãš äžæµåŠçã®äžå
·å.
éçåæã§ã¯ãæ¬¡ã®æ¹æ³ã§ãã®ã¯ã©ã¹ã®ç°åžžãæ€åºããŸãã
- è€æ°ã®ãªãœãŒã¹ã«åœ±é¿ãäžããã³ãã³ããæã€ããã°ã©ã ãèå¥ããã
WRITE FILE,EXEC SQL,DELETE,SEND MAP - ååšã®ç¢ºèª
EXEC CICS SYNCPOINTãŸãã¯ãã®æé»ã®ä»£æ¿ - ãã¹ãŠã®ãã©ã³ã¶ã¯ã·ã§ã³ãããŒã«ã³ããããã€ã³ããå«ãŸããŠãããã©ããã確èªããããã®å®è¡ãã¹ã®ãããã³ã°
- éäžã§çµäºãããã©ã³ãã匷調衚瀺ãã
GOBACKorSTOP RUNã³ãããããã«
ã®äžåš SYNCPOINT ãšã©ãŒåŠçã³ãŒãã§ã¯ç¹ã«å±éºã§ããäŸãã°ïŒ
IF SQLCODE < 0
PERFORM ERROR-HANDLER
GOBACK.
ãã®ã·ããªãªã§ã¯ãããã°ã©ã ãSQLæäœã®åã«ä»ã®ãªãœãŒã¹ãæŽæ°ããå Žåããããã®å€æŽã¯ã³ãããããããã·ã¹ãã ã¯äžæŽåãªç¶æ
ã®ãŸãŸã«ãªããŸãã SYNCPOINT ããæ©ãçºçããŸãã
CICSã¯ç¹å®ã®ç¶æ³ïŒäŸãã°ã¿ã¹ã¯çµäºæïŒã§èªåçã«åæç¹ãçºè¡ããããšããããŸãããæé»çãªåäœã«é Œãã®ã¯å¥œãŸãããããŸãããããã°ã©ãã¯åžžã«æç€ºçã«å®£èšããå¿
èŠããããŸãã SYNCPOINT ãã©ã³ã¶ã¯ã·ã§ã³ã®äœæ¥åäœã確å®ã«çµäºããããã«ããããã§ãã
åæãã€ã³ãã®æ¬ èœã«é¢é£ãããªã¹ã¯ã軜æžããã«ã¯:
- ã
EXEC CICS SYNCPOINTéèŠãªæŽæ°ã®ã·ãŒã±ã³ã¹ã®åŸãç¹ã«è€æ°ã®ãªãœãŒã¹ã¿ã€ãã«ãŸãããå Žå - éšåçãªã³ãããã蚱容ãããããŒã«ããã¯ãå®è¡ã§ããªãå Žåã¯ããšã©ãŒåŠçã«ãŒãã³å ã«åæãã€ã³ããæ¿å ¥ããŸãã
- 確å®ã«
SYNCPOINTãŸãã¯ãã·ã¹ãã ã倿Žãããç¶æ ã®ãŸãŸã«ããå¯èœæ§ã®ãããã¹ãŠã®ã³ãŒããã¹ã«ããŒã«ããã¯çžåœã®ãã®ãåºçŸãã
åæç¹å¶åŸ¡ãç¡èŠãããšã次ã®çµæãçããå¯èœæ§ããããŸãã
- ããŒã¿ã®ç°åžž éè€ããã¬ã³ãŒããæ¬ èœããã¬ã³ãŒããªã©
- ãã©ã³ã¶ã¯ã·ã§ã³å埩ã®å€±æ
- ç£æ»ã³ã³ãã©ã€ã¢ã³ã¹éåç¹ã«éèã·ã¹ãã ãèŠå¶ã·ã¹ãã ã«ãããŠ
éçåæããŒã«ã¯ããã¹ãŠã®æœåšçãªåæãã€ã³ãã®çç¥ã«ãã©ã°ãä»ãããšã³ãããŒãšã³ãã®ãããŒæ€èšŒã®ããã«ãªãœãŒã¹æŽæ°ã·ãŒã±ã³ã¹ãã¢ãã«åããããšã«ãããå ç¢ãªãã©ã³ã¶ã¯ã·ã§ã³å¢çãç¶æããã®ã«åœ¹ç«ã¡ãŸãã
æå³ããªãããã°ã©ã çµäºïŒCICS RETURNã®èª€çšïŒ
CICSç°å¢ã§ã¯ãCOBOLããã°ã©ã ã®çµäºã¯ããã©ã³ã¶ã¯ã·ã§ã³ç¶æ
ããŠãŒã¶ãŒã»ãã·ã§ã³ãããã³ãªãœãŒã¹ããã¯ãé©åã«è§£æŸãããããã«ãæç¢ºã«å®çŸ©ãããããã»ã¹ã«åŸãå¿
èŠããããŸããæ£ããæ¹æ³ã¯ã EXEC CICS RETURNããã¯CICSãã©ã³ã¶ã¯ã·ã§ã³ããã»ããµã«ã¿ã¹ã¯ãçµäºããã端æ«å¶åŸ¡ãè§£æŸããæ¬¡ã®æäœã®æºåãããããã«æç€ºããŸãããã ãããããããã°ã©ãã³ã°ã«æ
£ããéçºè
ã¯ã次ã®ãããªäžè¬çãªCOBOLçµäºæã䜿çšããããšããããŸãã STOP RUN or GOBACKãåŒãèµ·ããå¯èœæ§ããããŸã äºæãã¬çµäº CICS ã³ã³ããã¹ãã§ã
CICS ããã°ã©ã ã®èª€ã£ãçµäºã¯æ¬¡ã®ããã«ãªããŸãã
IF FATAL-ERROR
DISPLAY 'Unrecoverable error'
GOBACK. *> Unsafe in CICS
ãŸãã¯ïŒ
STOP RUN. *> Abruptly ends the task
ãããã®ã¹ããŒãã¡ã³ãã¯CICSãã©ã³ã¶ã¯ã·ã§ã³ã®ã©ã€ããµã€ã¯ã«ããã€ãã¹ããŸãããã®çµæã次ã®ãããªåœ±é¿ããããŸãã
- åãäžã端åã»ãã·ã§ã³ãé©åã«çµäºããããããã¯ããããŸãŸã«ãªã
- ãªãœãŒã¹æŒæŽ©äžæèšæ¶åããã¡ã€ã«ããŸãã¯ããŒã¿ããŒã¹ã«ãŒãœã«ãéãããŸãŸã«ãªã£ãŠãããã
- ABENDæ¡ä»¶ã·ã¹ãã ãäºæããªãæ»ãåäœã®ããã«ã¿ã¹ã¯ãçµäºããå Žå
- ã³ããããŸãã¯ããŒã«ããã¯ã®å€±æããŒã¿ãäžå®å šãŸãã¯äžæŽåãªç¶æ ã®ãŸãŸã«ãªã
éçè§£æããŒã«ã¯ãCICSå®è¡ãšèå¥ãããããã°ã©ã å ã®çµäºã³ãã³ãã®ååšãšå Žæãè§£æããããšã§ãäžæ£äœ¿çšãç¹å®ããŸããããã«ã¯ä»¥äžã®åŠçãå«ãŸããŸãã
- 䜿çšã®æ€åº
STOP RUN,GOBACKãŸãã¯EXIT PROGRAM - ã¡ã€ã³ããã·ãŒãžã£ãšãµãã«ãŒãã³ããã®ãã¹ãŠã®åºå£ãã¹ããã¬ãŒã¹ãã
- ãããã®ãã¹ã«æå¹ãª
EXEC CICS RETURN - 鿥çã«åŒã³åºãããå¯èœæ§ã®ããçµäºããžãã¯ã®ã³ããŒããã¯ãŸãã¯ã€ã³ã¯ã«ãŒãã¢ãžã¥ãŒã«ããã§ãã¯ãã
ç¹ã«æ³šæãã¹ãç¹ã¯ ãšã©ãŒåŠçãã¹éçºè
ã¯ãé害ãå¥ã®ã«ãŒãã³ã«ã«ãŒãã£ã³ã°ããCICSãå«ããããšãå¿ããããšããããããŸãã RETURNã¡ã€ã³ãã¹ãæ¢ã«é©åã«çµäºããŠããããšãåæãšããŠããŸãããã ããäŸå€ã«ããããã°ã©ã ãæ©æã«åå²ããCICS以å€ã®æ»ãå€ã䜿çšããå Žåããã©ã³ã¶ã¯ã·ã§ã³å¢çã«éåããå¯èœæ§ããããŸãã
æå³ããªãçµäºãé²ãããã®ãã¹ã ãã©ã¯ãã£ã¹ã¯æ¬¡ã®ãšããã§ãã
- çµäºãäžå
åãã
RETURN-HANDLERãã¹ãŠã®çµäºãã©ã³ãããæç€ºçã«åŒã³åºãããæ®µèœ - äœ¿ãæ¹
EXEC CICS RETURNCICSããã°ã©ã ã®å¯äžã®åºå£ç¹ãšã㊠- æé€ãã
STOP RUN(NAIST) ãšGOBACKãã¹ãŠã®ãã©ã³ã¶ã¯ã·ã§ã³ç®¡çã¢ãžã¥ãŒã«ãã - é©çš
HANDLE ABENDorHANDLE CONDITIONäºæãã¬åºæ¥äºãããŸãã³ã³ãããŒã«ãã
äžè²«æ§ã®ããé©åãªçµäºæ¹æ³ã宿œããããšã§ãCICS COBOL ã¢ããªã±ãŒã·ã§ã³ã¯ãã·ã¹ãã ãäžå®å®ã«ãããŠãŒã¶ãŒã«æ··ä¹±ãããããå¯èœæ§ã®ãããäºæž¬ã§ããªãå¶åŸ¡ãããŒã®ç°åžžãåºç¯å²ã«åé¿ããŸãã
ããããžã§ãã®ã·ãŒã±ã³ã¹ã®æ¬ é¥
ã¡ã€ã³ãã¬ãŒã ã®COBOLç°å¢ã§ã¯ãããããžã§ãã®å®è¡ã¯æ¬¡ã®ããã«èª¿æŽãããŸãã ãžã§ãå¶åŸ¡èšèªïŒJCLïŒã¯ãããã°ã©ã ã®é åºãäŸåé¢ä¿ãå®è¡æ¡ä»¶ãå®çŸ©ããŸããJCLã¯ã·ã¹ãã ã¬ãã«ã§æ§é ãæäŸããŸãããJCLã§å®è¡ãããCOBOLããã°ã©ã ã¯ãæ£ãããããŒãšãªã«ããªã確ä¿ããããã«ããã®é åºä»ãã«åŸããªããã°ãªããŸããããã®ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ïŒCOBOLã³ãŒããJCLããŸãã¯ãããã®éã®é£æºïŒã«æ¬ é¥ããããšãé£éçãªé害ãäºæãã¬ç°åžžçµäºãããŒã¿æŽåæ§ã®åé¡ãçºçããå¯èœæ§ããããŸãã
äžè¬çãªãããã·ãŒã±ã³ã¹ã®æ¬ é¥ã¯æ¬¡ã®ãšããã§ãã
æ€èšŒãªãã§ããŒãã³ãŒããããäŸåé¢ä¿
å€ãã®ãããCOBOLããã°ã©ã ã¯ãç¹å®ã®ãã¡ã€ã«ãããŒã¿ããŒã¹ããŸãã¯ããŒãã«ãå è¡ãžã§ãã«ãã£ãŠæ¢ã«åæåãŸãã¯æŽæ°ãããŠããããšãåæãšããŠããŸãããã®ãããªäŸåé¢ä¿ãããã°ã©ã å ã§æ€èšŒãããŠããªãå Žåããžã§ãã¯ å ¥åãå€ããæ¬ èœããŠãã誀ã£ãçµæãã·ã¹ãã ã¯ã©ãã·ã¥ãçºçããå¯èœæ§ããããŸãã
äŸïŒ
OPEN INPUT CUSTOMER-FILE
READ CUSTOMER-FILE INTO WS-CUSTOMER.
ãã¡ã€ã«ã空ã®å ŽåããŸãã¯ä»¥åã®ãžã§ãã§ããŒã¿ãèªã¿èŸŒãŸããŠããªãå Žåãããã°ã©ã ã¯äºæããªãåäœãããå¯èœæ§ããããŸããéçè§£æã§ã¯ãååšãã§ãã¯ãEOFãã§ãã¯ãæ¬ èœããŠãããªãŒãã³/èªã¿åãã·ãŒã±ã³ã¹ãç¹å®ããããšã§ãä¿è·ãããŠããªããªãœãŒã¹ã®äœ¿çšãèŠåã§ããŸãã
æ»ãã³ãŒãã®æ¬ èœã«ãã£ãŠçºçããç°åžžçµäºã«ã¹ã±ãŒã
JCLã¯æ¡ä»¶ã³ãŒãïŒCOND) ããã³æ»ãã³ãŒã (RETURN-CODEïŒã䜿çšããŠã次ã®ãžã§ãã¹ãããã«é²ããã©ããã倿ããŸããCOBOLããã°ã©ã ãæ»ãã³ãŒããæç€ºçã«èšå®ããªãå Žåãã·ã¹ãã ã¯ãžã§ãã®æåãŸãã¯å€±æã誀ã£ãŠè§£éããå¯èœæ§ããããŸãã
äŸïŒ
MOVE 8 TO RETURN-CODE. *> Required to indicate controlled failure
æ»ãã³ãŒãã®å²ãåœãŠãäžè¶³ããŠãããââãæ£ãããªãå ŽåãåŸç¶ã®ãžã§ããæ¬æ¥å®è¡ãããã¹ãã§ãªããšãã«å®è¡ããã ç°åžžçµäºã«ã¹ã±ãŒã 1 ã€ã®æªåŠçã®åé¡ãåå ã§è€æ°ã®ãžã§ãã倱æããã
æé»çãªãããŒã«ããæ¡ä»¶ä»ãã¹ããããã¹ãããããã
JCLã¯ãµããŒãããŸã IF, THEN, ELSE å®è¡ãããŒãå¶åŸ¡ããããžãã¯ãããããCOBOLããã°ã©ã ãææ§ãªã³ãŒããè¿ãããããšã©ãŒåŠçãçç¥ããããããšãæ¡ä»¶ä»ãã¹ããããäºæãããã€ãã¹ãããå¯èœæ§ããããŸãããããã埮åŠãªã·ãŒã±ã³ã¹ãšã©ãŒã«ãã£ãŠã éããªå€±æ ããŒã¿åºåã®äžäžèŽã«ã®ã¿è¡šç€ºãããŸãã
ãããã®ãªã¹ã¯ã軜æžããããã«ãéçè§£æããŒã«ã¯ COBOL ãœãŒã¹ãšé¢é£ãã JCL ææç©ã®äž¡æ¹ãè©äŸ¡ããæ¬¡ã®ç¹ããã§ãã¯ããŸãã
- å€éšãžã§ãã¹ããããŸãã¯ãã¡ã€ã«ãžã®æªãã§ãã¯ã®äŸåé¢ä¿
- èŠã€ããŠäžãã
RETURN-CODEãŸãã¯äžæŽåãªæ¡ä»¶ã³ãŒã - ãã§ãã¯ãã€ã³ããŸãã¯åéããžãã¯ã®äžè²«æ§ã®ãªã䜿çšïŒä»¥äžã§ããã«èª¬æããŸãïŒ
- ãããçµäºãšãªãœãŒã¹ç¶æ ã®ãã°ãŸãã¯ãã¬ãŒã¹ãã€ã³ãããªã
修埩ã«ã¯ä»¥äžãå«ãŸããŸãã
- ãã¹ãŠã®ããã°ã©ã ãåŠçåã«å ¥åãæ€èšŒããããšãä¿èšŒãã
- å®è¡çµæãåæ ããæå³ã®ããæ»ãã³ãŒããå²ãåœãŠã
- ã³ãŒããš JCL ã®äž¡æ¹ã§ã·ãŒã±ã³ã¹ã®æ³å®ãææžåãã匷å¶ãã
- ããããããŒãã·ãã¥ã¬ãŒãããŠãžã§ãã®çžäºäŸåæ§ãšå®è¡ãã¹ããã¹ããã
ãããã·ãŒã±ã³ã¹ã®æ¬ é¥ã¯ãå€§èŠæš¡ãªããŒã¿æäœãå®äºãããŸã§æ€åºãããªãããšãå€ããããå®çšŒåç°å¢ã«ãããŠæãæ·±å»ãªè¢«å®³ããããããã®ã®äžã€ã§ããéçè§£æã¯ãCOBOLãšJCLã®ã³ã³ããŒãã³ãã調åããŠå®è¡ãããããããéžè±ããããã€åã«æããã«ãªãããšãä¿èšŒããããšã§ãéèŠãªã»ãŒããã£ããããæäŸããŸãã
JCL é§ååããã°ã©ã äŸåé¢ä¿ãšç°åžžçµäºã«ã¹ã±ãŒã
ãžã§ãå¶åŸ¡èšèªïŒJCLïŒã¯ãã¡ã€ã³ãã¬ãŒã ã·ã¹ãã ã«ãããããããžã§ãã®å®è¡ã調æŽããã©ã®COBOLããã°ã©ã ããã©ã®ãããªé åºã§ãã©ã®ãããªæ¡ä»¶ã§ãã©ã®ããŒã¿ã»ããã§å®è¡ãããããæ±ºå®ããŸããJCLèªäœã¯COBOLã®ãããªå®è¡å¯èœã³ãŒãã§ã¯ãããŸããããéèŠãªã¬ã€ã€ãŒãå®çŸ©ããŸãã å¶åŸ¡ãã㌠ã·ã¹ãã ã¬ãã«ã§ããã®ãªãŒã±ã¹ãã¬ãŒã·ã§ã³å±€ãCOBOLããã°ã©ã ã®åäœãšæŽåããŠããªããšãå¶åŸ¡ãããŒã®ç°åžžãçºçãã ç°åžžçµäºã«ã¹ã±ãŒã åäžã®é害ãŸãã¯äŸåé¢ä¿ã®äžè¶³ã«ãã£ãŠåŒãèµ·ãããããžã§ãã®å€±æã®é£éã
JCLã«ãããããã°ã©ã äŸåé¢ä¿ã®çè§£
ãããããã»ã¹ã¯ãå€ãã®å Žåãå ±æãã¡ã€ã«ã®èªã¿æžããå ±æãªãœãŒã¹ã®æŽæ°ãè¡ãäžé£ã®COBOLããã°ã©ã ã«äŸåããŸããJCLã¯ãã¹ãããã®é åºä»ããæ¡ä»¶ã³ãŒããããŒã¿ã»ãã宣èšãéããŠãããã®äŸåé¢ä¿ã匷å¶ããŸããäŸãã°ã
//STEP01 EXEC PGM=LOADDATA
//STEP02 EXEC PGM=PROCESS,COND=(0,NE)
ãã®èšå®ã§ã¯ã PROCESS ã®ã¿å®è¡ãããŸã LOADDATA æ»ãã³ãŒã0ã§çµäºããŸãããã ãã LOADDATA èšå®ãããŸãã RETURN-CODE æç€ºçã«ããŸãã¯äžéããŒã¿ã»ãããã¯ãªãŒã³ã¢ããããã«ããã°ã©ã ãã¯ã©ãã·ã¥ããå Žåã PROCESS åŒãç¶ãå®è¡ãããå Žåãããã°ãç Žæããå
¥åã§å®è¡ãããŠå€±æããå
ã®åé¡ãé ãããå ŽåããããŸãã
ç°åžžçµäºã«ã¹ã±ãŒãã®çºçæ¹æ³
ç°åžžçµäºã«ã¹ã±ãŒãã¯ã次ã®å Žåã«çºçããŸãã
- éèŠãªCOBOLããã°ã©ã ããµã€ã¬ã³ãã«å€±æãããããããŸããªã¹ããŒã¿ã¹ãè¿ãããããŸã
- JCLãåŸç¶ã®ã¹ããããé©åã«æ¡ä»¶ä»ããŸãã¯é åºä»ãããªã
- äžæµã®ãžã§ãã¯ãçºçããªãã£ãå¯äœçšïŒããŒã¿ã»ããã®äœæããã¡ã€ã«ã®æå ¥ãªã©ïŒã«äŸåããŸãã
JCLãããŒã¯ç·åœ¢ã§ãå€ãã®å Žåé·ããªãããã1ã€ã®ãžã§ãã¹ãããã®èšå®ãã¹ãæ°åã®ããã°ã©ã ã«æ³¢åããå¯èœæ§ããããŸãããããã®é害ã¯ã次ã®ãããªåé¡ãåŒãèµ·ããå¯èœæ§ããããŸãã
- å詊è¡ãŸãã¯åå®è¡äžã«ã·ã¹ãã ãªãœãŒã¹ã浪費ãã
- éšåçãªæžã蟌ã¿ã«ããåºåããŒã¿ã»ããã®ç Žæ
- éè¡æ¥åãè«æ±æžåŠçãªã©ã®æéã«ææãªã¢ããªã±ãŒã·ã§ã³ã§çµæ¥åŠçãé ããã
ç°åžžçµäºã«ã¹ã±ãŒãã®é²æ¢ã«ãããéçè§£æã®åœ¹å²
é«åºŠãªéçè§£æããŒã«ã¯ãæ¬¡ã®æ¹æ³ã§ COBOL ããžãã¯ãš JCL å®è¡éã®ã®ã£ãããåããŸãã
- COBOLåºåãã¡ã€ã«ãJCLããŒã¿ã»ããã«ãããã³ã°ããé©åãªäœæããã³äœ¿çšã·ãŒã±ã³ã¹ããã§ãã¯ããŸãã
- ãã¹ãŠã®COBOLããã°ã©ã ã
RETURN-CODEããžãã¹ã«ãŒã«ãšãžã§ãå¶åŸ¡æ¡ä»¶ã«åŸã£ãŠ - ãããå®è¡ããªãŒãã·ãã¥ã¬ãŒãããçµäºãŸãã¯å埩ããžãã¯ããªããã©ã³ããèå¥ãã
- åç §ãããŠããªãããŒã¿ã»ããã誀ã£ãŠåå©çšãããããŒã¿ã»ããåãæ€åºãã
ãã®ã¿ã€ãã®åæã§ã¯ã ãžã§ãã®åéããã°ã©ã ãåå®è¡ã»ãŒã ããžãã¯ããµããŒãããŠãããã©ããããŸãã¯ããŒã«ããã¯ä¿è·ãªãã§å¯äœçšãç¹°ãè¿ããã©ãããèå¥ããŸãã
修埩ãšãã¹ããã©ã¯ãã£ã¹
ãžã§ãã·ãŒã±ã³ã¹ã®å€±æãåé¿ããã«ã¯:
- ãã¹ãŠã®COBOLããã°ã©ã ã¯æå³ã®ãã
RETURN-CODEæåããå®è¡ã§ãå€ - JCLã¯æç€ºçã«äœ¿çšããå¿
èŠããããŸã
COND,IFãŸãã¯WHENæ»ãã³ãŒããŸãã¯ããŒã¿ã»ããã®å¯çšæ§ã«ãã£ãŠãžã§ãã¹ããããã²ãŒãããå¥ - ããã°ã©ã ã¯ãåŠçåã«ãã¡ã€ã«ã®ååšãã¬ã³ãŒãæ°ããã§ãã¯ãã€ã³ãããŒã«ãŒãªã©ã®åææ¡ä»¶ãæ€èšŒããå¿ èŠããããŸãã
- äºåŸABENDãã°ãåæããŠæ ¹æ¬åå ãç¹å®ããå šé¢çãªåå®è¡ãåé¿ããå¿ èŠãããã
ãããã®å®å šå¯ŸçãèŠèœãšããããšãåææ®µéã§ã®è»œåŸ®ãªé害ã§ãããåºç¯å²ã«ãããé害ãã€ãŸãç°åžžçµäºã®é£éãåŒãèµ·ããå¯èœæ§ããããŸããJCLèªèæ©èœãåããéçè§£æããŒã«ã¯ãå®å®ããäºæž¬å¯èœãªãããå®è¡ãã€ãã©ã€ã³ãç¶æããããã«äžå¯æ¬ ã§ãã
é·æéå®è¡ãžã§ãã«ããããã§ãã¯ãã€ã³ã/åéããžãã¯ã®æ¬ èœ
ã¡ã€ã³ãã¬ãŒã ç°å¢ã§ã¯ãå€ãã®COBOLãããããã°ã©ã ã¯ãè€æ°ã®ãã¡ã€ã«ãããŒã¿ããŒã¹ã«ãŸãããæ°çŸäžä»¶ãã®ã¬ã³ãŒããšãã£ãèšå€§ãªéã®ããŒã¿ãåŠçããããã«èšèšãããŠããŸãããããã®é·æéå®è¡ããããžã§ãã¯ãå€ãã®å Žåãäœæéãå®è¡ãããè«æ±æžçºè¡ã顧客æ å ±ã®æŽæ°ã財å調æŽãšãã£ãéèŠãªåŠçãå«ãŸããŸãããã®ãããªç¶æ³ã§ã¯ã ãã§ãã¯ãã€ã³ã/åéããžã㯠å¶åŸ¡ãããŒã«é倧ãªãªã¹ã¯ãçããŸãããžã§ããéäžã§å€±æããå Žåãæåããåå®è¡ããã®ã¯éå¹ççã§ãšã©ãŒãçºçãããããå Žåã«ãã£ãŠã¯ããŒã¿ã®éè€ãç Žæã®å¯èœæ§ãããããå±éºã§ãã
ãããCOBOLããã°ã©ã ã«ããããã§ãã¯ãã€ã³ãã®åœ¹å²
A ãã§ãã¯ãã€ã³ã ããã°ã©ã å®è¡äžã®æå®ããããã€ã³ãã§ãã·ã¹ãã ã¯ãã¡ã€ã«ã®äœçœ®ãã«ãŠã³ã¿ã倿°ãªã©ã®çŸåšã®ç¶æ ãèšé²ããŸãããžã§ãã倱æããå Žåã åèµ·å æåããã§ã¯ãªãããã®ãã§ãã¯ãã€ã³ãããåŠçãéå§ããŸãããã®ã¡ã«ããºã ã¯ãå€§èŠæš¡åŠçã«ããããã©ãŒã«ããã¬ã©ã³ã¹ãšå埩æ§ã«ãšã£ãŠäžå¯æ¬ ã§ãã
äžè¬çãªãã§ãã¯ãã€ã³ãã®å®è£ ã«ã¯æ¬¡ã®ãã®ãå«ãŸããŸãã
IF RECORD-COUNT MOD 1000 = 0
PERFORM WRITE-CHECKPOINT.
ãã® WRITE-CHECKPOINT ã«ãŒãã³ã¯å¶åŸ¡ãã¡ã€ã«ã«æ
å ±ãä¿åããããDB2ã®ã¹ããŒã¿ã¹ããŒãã«ãæŽæ°ãããããããšããããŸããåèµ·åãããšãããã°ã©ã ã¯æåŸã®ãã§ãã¯ãã€ã³ããèªã¿åãããã®æç¹ããåŠçãåéããŸãã
ãã§ãã¯ãã€ã³ã/åéããžãã¯ã®æ¬ èœã«ãããªã¹ã¯
ãã®ã¡ã«ããºã ããªããšã次ã®ããããã®åé¡ã«ãã£ãŠæ·±å»ãªæ··ä¹±ãçããå¯èœæ§ããããŸãã
- ããŒã¿ã®ååŠç: ãžã§ããåå®è¡ãããšãã¬ã³ãŒããè€æ°åæŽæ°ãããéè€ãäžæŽåãçºçããå¯èœæ§ããããŸãã
- ãžã§ãã®åéä¿¡ã®é å»¶: åå®è¡ãé·ããªããšãSLA ãæºããããªãã£ãããäŸåãããžã§ã ãã§ãŒã³ãäžæããããããå¯èœæ§ããããŸãã
- æåä»å ¥: å埩ããã«ã¯ããªãã¬ãŒã¿ãŒãé害ãçºçããå Žæãæšå®ããå ¥åãã¡ã€ã«ãæåã§å€æŽããå¿ èŠããããŸãã
- ççŸããç¶æ : ãã¡ã€ã«ãŸãã¯ããŒã¿ããŒã¹ ããŒãã«ãéšåçã«æžã蟌ãŸãããšãã·ã¹ãã ãäžå®å®ãªç¶æ ãŸãã¯äžæãªç¶æ ã«ãªãå¯èœæ§ããããŸãã
ãã§ãã¯ãã€ã³ãæ€åºã®ããã®éçè§£æææ³
éçè§£æããŒã«ã¯ãCOBOL ããã ããã°ã©ã ãæ¬¡ã®ç¹ã«ã€ããŠè©äŸ¡ããŸãã
- 宿çãªç¶æ ä¿åã«ãŒãã³ã®ååšïŒäŸïŒNã¬ã³ãŒãããšïŒ
- ãã¡ã€ã«ã®æŽæ°ãå¶åŸ¡ãããããã©ã¡ãŒã¿ã®èªã¿èŸŒã¿ãåéããããã®åŒã³åºã
- åèµ·åãã©ã¡ãŒã¿ã®äœ¿çšäžè¶³ïŒäŸïŒãžã§ãã¯åžžã«æåããåæåãããïŒ
- éèŠãªã«ãŒãæ§é ïŒäŸïŒ
READorPERFORMãã¬ãŒã¯ãã€ã³ããç¶æ ä¿åãªãã§ä¿è·ãªãã§å®è¡ããã
ãŸããJCL åæãšçµ±åããŠãåèµ·åæ©èœããžã§ã ã¬ãã«ã§æ§æãããŠãããã³ãŒãã«å®è£ ãããŠããªããã©ããã倿ããããšãã§ããŸãã
åèµ·åå®å šããžãã¯ã«ããã¢ããã€ãŒãŒã·ã§ã³
å ç¢ãªåèµ·åã¡ã«ããºã ãçµã¿èŸŒãã«ã¯:
- æåã«åéãã©ã¡ãŒã¿ïŒäŸïŒæåŸã«åŠçãããã¬ã³ãŒãããŒïŒãèªã¿åãããã«ããã°ã©ã ãèšèšãã
- ãã®ãã©ã¡ãŒã¿ã«åºã¥ããŠæ¡ä»¶ä»ãã¬ã³ãŒãåŠçãå®è£ ãã
- ä¿¡é Œæ§ãé«ãåéå¯èœãªåœ¢åŒïŒãã¡ã€ã«ãDB2 è¡ãVSAMïŒã§å®æçã«ç¶æ ãä¿åããŸãã
å ·äœçãªäŸãæããŸããšã以äžã®éãã§ãã
IF RECORD-KEY > RESTART-KEY
PERFORM PROCESS-RECORD.
ããã«ãããåå®è¡æã«ä»¥åã«åŠçãããã¬ã³ãŒããã¹ããããããããã«ãªããŸãã
ãã§ãã¯ãã€ã³ã/ãªã¹ã¿ãŒãããžãã¯ã¯ãã¹ããã©ã¯ãã£ã¹ã§ããã ãã§ãªããéèãµãŒãã¹ãéä¿¡ãå»çãšãã£ãé«ä¿¡é Œæ§ç°å¢ã«ã¯äžå¯æ¬ ã§ããéçåæã«ããããããã®ã¡ã«ããºã ãåã«ååšããŠããã ãã§ãªããæ©èœçã«å®å šã§ããããšãä¿èšŒãããè¿ éãªåŸ©æ§ãç£æ»å¯èœæ§ãéçšãªãŒããŒãããã®åæžãå¯èœã«ãªããŸãã
SMART TS XLããããããŒã·ãã¥ã¬ãŒã·ã§ã³ã¢ãŒã
è€éãªã¡ã€ã³ãã¬ãŒã ç°å¢ã§ã¯ãããã ãžã§ããã©ã®ããã«çžäºäœçšããé·ç§»ããçžäºã«åœ±é¿ãäžããããçè§£ããããšããå¶åŸ¡ãããŒã®æŽåæ§ãç¶æããããã«äžå¯æ¬ ã§ãã SMART TS XL ãšåŒã°ãã匷åãªæ©èœãæäŸããŸã ããããããŒã·ãã¥ã¬ãŒã·ã§ã³ã¢ãŒãããã«ãããçµç¹ã¯ãžã§ãå¶åŸ¡èšèª (JCL) ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ã®ã³ã³ããã¹ãã§ããã COBOL ããã°ã©ã ã®å®è¡ãåæãèŠèŠåãããã³æé©åã§ããããã«ãªããŸãã
ãã®ã¢ãŒãã¯ãJCLãšCOBOLãåã«åå¥ã«è§£æããã ãã§ãªããããããçµ±åã·ãã¥ã¬ãŒã·ã§ã³ãšã³ãžã³ã«çµ±åãããžã§ãã¹ããããããŒã¿ã»ãããæ¡ä»¶ä»ãããžãã¯ãããã°ã©ã éã®äŸåé¢ä¿ã«ãããå®è¡ãã¹ãã¢ãã«åããŸãããã®å æ¬çãªèŠç¹ã¯ãåã ã®ããã°ã©ã ã§ã¯ãªãã·ã¹ãã ã¬ãã«ã§ã®ã¿çºçããå®è¡ç°åžžãç¹å®ããããã«äžå¯æ¬ ã§ãã
ããããããŒã·ãã¥ã¬ãŒã·ã§ã³ã®äž»ãªæ©èœ
1. ãžã§ãéã®äŸåé¢ä¿ã®ãããã³ã°
SMART TS XL åç
§ãããŠãããã¹ãŠã®JCLã¹ã¯ãªãããšCOBOLããã°ã©ã ãã¹ãã£ã³ããããŒã¿ã»ãããã¹ãããéã§ã©ã®ããã«æž¡ããããããããã³ã°ããŸãããã¡ã€ã«ã®äœæãšäœ¿çšã«ãããäžäžèŽãDDåã®åç
§ã®èª€ããæªå®£èšã®äŸåé¢ä¿ããã©ã°ä»ãããŸããããã«ãããããããã§ãŒã³å
ã®ãã¹ãŠã®ããã°ã©ã ãæåŸ
ã©ããã®å
¥åãåãåããæ£ç¢ºãªåºåãè¿ãããšãä¿èšŒãããŸãã
2. å®è¡æ¡ä»¶åæ
ã·ãã¥ã¬ãŒã·ã§ã³ãšã³ãžã³ã¯ãJCLã®æ¡ä»¶ã³ãŒããšãžã§ãå¶åŸ¡ããžãã¯ãè§£éããæ§ã
ãªæ»ãã³ãŒãã·ããªãªã«ãããŠã©ã®ã¹ããããå®è¡ãããããäºæž¬ããŸãããŸããCONDãã©ã¡ãŒã¿ã®æ¬ èœãç¡å¹ãªå€ãCOBOLã«ãããæ€èšŒãããŠããªãRETURN-CODEå€ãææ§ãªæ¡ä»¶äžã§å®è¡ããããžã§ãã¹ããããªã©ã®æ¬ é¥ãæ€åºããŸãã
3. ã·ãã¥ã¬ãŒã·ã§ã³ãšæ€èšŒãåéãã
COBOLãšJCLã®äž¡æ¹ã§ãã§ãã¯ãã€ã³ããšåéããžãã¯ãåæããããšã«ããã SMART TS XL åãžã§ãã¹ããããåéå¯èœãã©ããããŸãéšåçã«åå®è¡ããå Žåã«äœãèµ·ããããç¹å®ããŸããããã¯ãé·æéå®è¡ããããžã§ãã«ããããªã«ããªãã©ã³ãšSLAã®éµå®ãæ€èšŒããäžã§éåžžã«éèŠã§ãã
4. ãããŒå¯èŠå
æã广çãªæ©èœã®äžã€ã¯ããããå®è¡ãããŒå³ã®çæã§ãããããã®å³ã¯ãå
¥åãã©ã¡ãŒã¿ãæ¡ä»¶ã³ãŒããããã°ã©ã ããžãã¯ã«åºã¥ããŠããããããã»ã¹ãå®éã«å®è¡ããå®è¡ãã¹ãèŠèŠçã«ç€ºããŸããéçºè
ãšãªãã¬ãŒã¿ãŒã¯ãã·ã¹ãã ã®åçãªåäœãå³åº§ã«çè§£ã§ãããããæ¬ é¥ã®ç¹å®ãåå®è¡èšç»ã®å¹çåã«åœ¹ç«ã¡ãŸãã
5. ç°åžžæ€åºãšé倧床ã¹ã³ã¢ãªã³ã°
SMART TS XL æªåŠçã®æ»ãã³ãŒãããžã§ãã¹ãããã®åŸªç°äŸåé¢ä¿ãåæåãããŠããªãããŒã¿ã»ãããåèµ·åãã©ã¡ãŒã¿ã®æ¬ èœãªã©ãæœåšçãªå¶åŸ¡ãããŒãªã¹ã¯ããã©ã°ä»ãããŸãã忀åºçµæã¯ãé害ãããŒã¿ã®äžæŽåãåŒãèµ·ããå¯èœæ§ã«åºã¥ããŠãé倧床ã¹ã³ã¢ãä»ããããŸãã
å®äžçãžã®åœ±é¿
ããããããŒã·ãã¥ã¬ãŒã·ã§ã³ã¢ãŒããæŽ»çšããŠããçµç¹ã§ã¯ãããããã§ãŒã³ã®å€±æã€ã³ã·ãã³ããå€§å¹ ã«åæžããç°åžžçµäºåŸã®å埩æéãççž®ããããããžã§ãã®å±éã«ãããä¿¡é Œæ§ãåäžãããŠããŸããããããããŒã·ãã¥ã¬ãŒã·ã§ã³ã¢ãŒãã¯ãããããªãŒã±ã¹ãã¬ãŒã·ã§ã³ã®å®è¡åã«ãã®æ£ç¢ºæ§ãæ€èšŒãããéææ§ã®é«ãèªååãããã»ãŒããã£ããããæäŸããŸãã
ãžã§ãã¹ããªãŒã å šäœãšãããã®COBOLããžãã¯ãšã®çžäºäœçšãã·ãã¥ã¬ãŒãããããšã«ããã SMART TS XL ã·ã¹ãã ã¬ãã«ã®ã¹ã±ãžã¥ãŒãªã³ã°ãšããã°ã©ã ã¬ãã«ã®ããžãã¯éã®ã®ã£ãããåãããããå®è¡ãã¹ã«å¯Ÿããæ¯é¡ã®ãªãå¯èŠæ§ãšå¶åŸ¡ãå®çŸããŸãã
é«åºŠãªåææè¡
çŸä»£ã®COBOLã·ã¹ãã ãç¹ã«éèŠã€ã³ãã©ã«çµã¿èŸŒãŸããŠããã·ã¹ãã ã§ã¯ã衚é¢çãªéçè§£æä»¥äžã®ãã®ãæ±ããããŸããå¶åŸ¡ãããŒã®ç°åžžã¯ã段èœãã»ã¯ã·ã§ã³ãããã«ã¯ããã°ã©ã å šäœã«ãŸãããè€éã§çžäºã«é¢é£ãããã¿ãŒã³ãšããŠçŸããããšããããããŸãããããããªã¹ã¯ãç¹å®ãçè§£ããããã«ãéçè§£æããŒã«ã¯ãã·ã³ããªãã¯å®è¡ãããã·ãŒãžã£éå¶åŸ¡ãããŒã¢ããªã³ã°ãããŒã¿ãèæ ®ãããã¹è§£æ±ºãšãã£ãé«åºŠãªææ³ã掻çšããããã«é²åããŠããŸããã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ããããã®é«åºŠãªæ¹æ³ã«ãã£ãŠãããæ£ç¢ºã§å®çšçãªæŽå¯ãã©ã®ããã«å®çŸãããåŸæ¥ã® COBOL ç°å¢ã«ãããæ¬ 饿€åºãšéçºå¹çã®äž¡æ¹ãåäžãããã«ã€ããŠèª¬æããŸãã
以äžã®ãµãã»ã¯ã·ã§ã³ã§ã¯ã以äžã®æè¡çãªè©³çްã«ã€ããŠèª¬æããŸãã
- ãã¹ã«ãã¬ããžã®ã·ã³ããªãã¯å®è¡: éçã¢ãã©ã€ã¶ãŒã倿°å€ãšããžãã¯åå²ãã·ãã¥ã¬ãŒãããŠãã¹ãŠã®å®è¡ãã¹ãæ¢çŽ¢ããæ¹æ³
- ããŒã¿ãããŒãèæ ®ããå¶åŸ¡ãããŒå€æ°ã®ç¶æ ãçè§£ããããšã§å¶åŸ¡ãããŒã®æ±ºå®ãšç°åžžæ€åºãã©ã®ããã«åŒ·åãããã
- èšèªåºæã®æ§æèŠçŽ ã®æ±ãïŒ å«ã
REDEFINES,PERFORM THRUãããŒãã«é§ååããžãã¯ãªã©ãåŸæ¥ã®åæãè€éåãããèŠå ãããã
åææ³ã¯ãå®éã® COBOL ã·ããªãªã®äŸã«åºã¥ããŠèª¬æãããéçåæã«ãã£ãŠãã°ãèŠã€ããã ãã§ãªããã³ãŒãã®æé©åãææ°åãã³ã³ãã©ã€ã¢ã³ã¹ã®ä¿èšŒããµããŒãã§ããããšã説æãããŸãã
ãã¹ã«ãã¬ããžã®ã·ã³ããªãã¯å®è¡
ã·ã³ããªãã¯å®è¡ã¯ãéçã³ãŒãè§£æã«ãããŠæã匷åãªææ³ã®äžã€ã§ããç¹å®ã®å ¥åå€ã§ããã°ã©ã ãå®è¡ããã®ã§ã¯ãªãããã®ã¢ãããŒãã§ã¯ã ã·ã³ããªãã¯å€æ° 倿°ãåãåŸããã¹ãŠã®å€ã衚ãã·ã³ãã«ã§ããCOBOLã®éçè§£æã§ã¯ãã·ã³ããªãã¯å®è¡ã«ãããã¢ãã©ã€ã¶ãŒã¯ããã°ã©ã ãå®è¡ããã«ããããå®è¡ãã¹ã®å¯èœæ§ã調æ»ã§ãããããæ·±ãæ¡ä»¶ä»ãããžãã¯ã®æ¬ é¥ãå°éäžèœã³ãŒããçºèŠããã®ã«æé©ã§ãã
COBOLã«ãããã·ã³ããªãã¯å®è¡ã®ä»çµã¿
COBOLããã°ã©ã ãè§£æããéãã·ã³ããªãã¯å®è¡ã¯ãéåžžãã¡ã€ã«ãããŒã¿ããŒã¹ããŸãã¯CICS COMMAREAã»ã°ã¡ã³ãããå
¥åãããå
¥å倿°ããéå§ãããããããå®éã®ããŒã¿ã§ã¯ãªããã¬ãŒã¹ãã«ããŒãšããŠæ±ããŸããããã°ã©ã ãåå²ããã«ã€ããŠã IF, EVALUATE, PERFORM ã¹ããŒãã¡ã³ãã§ã¯ãã¢ãã©ã€ã¶ãŒã¯ã©ã®ãã¹ãå®è¡ã§ããããæ±ºå®ããè«çå¶çŽã远跡ããŸãã
äŸïŒ
IF ACCOUNT-BALANCE > 0
PERFORM DEBIT-ACCOUNT
ELSE
PERFORM DISPLAY-ERROR
ãã®å Žåã2 ã€ã®ã·ã³ããªã㯠ãã¹ãç¶æãããŸãã
- 1ã€ã¯
ACCOUNT-BALANCE > 0æ¬åœã§ã - åœãã®å Žå
åãã¹ã¯åå¥ã«è©äŸ¡ãããã¢ãã©ã€ã¶ãŒã¯äž¡æ¹ã®ãã¹ã PERFORM åå²ãå°éå¯èœã§ãããã©ããã確èªããéäžã§ããŒã¿é¢é£ã®ä»®å®ã«éåããŠããªããã©ãããæ€åºããŸãã
COBOLã«ãããã·ã³ããªãã¯å®è¡ã®å©ç¹
- ãã«ãã¹ã«ãã¬ããž: åã·ããªãªã®ãã¹ãããŒã¿ãå¿ èŠãšããã«ãã¹ãŠã®ã³ãŒããã©ã³ããåæã§ããŸã
- ãããã³ãŒããŸãã¯å°éäžèœã³ãŒãã®æ€åº: ãããªãå ¥åæ¡ä»¶ã§ãè«ççã«å°éäžå¯èœãªåå²ã¯çŽã¡ã«ãã©ã°ãä»ããããŸã
- ã«ãŒãè©äŸ¡ã®ç²ŸåºŠåäž: ã·ã³ãã«å€ã¯ãã«ãŒããäºæããªãç¶æ³ã§çµäºãããå®è¡ããããã倿ããã®ã«åœ¹ç«ã¡ãŸãã
- ãšããžã±ãŒã¹ã®æ€èšŒ: ãšã©ãŒãã³ãã©ãç°åžžãªå€ã®çµã¿åãããªã©ãå®éã®ã·ã¹ãã ã§ã¯ã»ãšãã©å®è¡ãããªããã¹ãèªåçã«æ€æ»ã§ããŸãã
COBOLç¹æã®èª²é¡
COBOLã§ã¯ãçŸä»£ã®èšèªã«ã¯èŠãããªãåæäžã®è€éããããã€ãå°å ¥ãããŠããŸããå ·äœçã«ã¯ä»¥äžã®ãšããã§ãã
- REDEFINESå¥åãã¡ã¢ãªäœçœ®ãè€æ°ã®æ¹æ³ã§è§£éããã
- 䜿çšç¶æ³æ¯èŒãšäœ¿çšç¶æ³è¡šç€ºã®éãããŒã¿ã®è§£éã«åœ±é¿ãäžãã
- ãã€ãããã¯æ®µèœãžã£ã³ã
PERFORM THRU(NAIST) ãšGO TO段èœã®å ¥å£ãšåºå£ã®èšå·çãªè¿œè·¡ãå¿ èŠãšãã
ãããã«å¯ŸåŠããããã«ãé«åºŠãªéçã¢ãã©ã€ã¶ãŒã¯ããã¹ãŠã®æ±ºå®ããŒãã«èšå·ããžãã¯ãçµ±åããæœè±¡æ§æããªãŒ (AST) ãšå¶åŸ¡ãã㌠ã°ã©ã (CFG) ãæ§ç¯ããŸãã
ä»ã®åæææ³ãšã®çµ±å
ã·ã³ããªãã¯å®è¡ã¯ãå€ãã®å Žåãæ¬¡ã®ãã®ãšé£æºããŠæ©èœããŸãã
- å¶çŽãœã«ããŒè€éãªæ¡ä»¶ãçã«ãªããã©ãããè©äŸ¡ãã
- ç¶æ
ã¢ãã«ãèšå·å€æ°ãã©ã®ããã«å€åãããã远跡ããŸã
MOVE,ADD,EVALUATE管çããŒã« - çµéšååé·ãªåå²ãå®è¡äžå¯èœãªåå²ãåæžããããšã§ãå€§èŠæš¡ãªCOBOLããã°ã©ã ã«ããããã¹ççºã®æå¶ã«åœ¹ç«ã¡ãŸãã
ã·ã³ããªãã¯å®è¡ã¯ãããããå®è¡ãã¹ãã¢ãã«åããããšã§ãCOBOLåæãã«ãŒã«ããŒã¹ã®ã¹ãã£ã³ãã詳现ãªåäœæ€æ»ãžãšé²åãããŸããããã«ããã埮现ãªãã°ãçºèŠãããã¹ãã«ãã¬ããžèšç»ãæ¹åããã¢ããã€ãŒãŒã·ã§ã³ããã³æé©åã¯ãŒã¯ãããŒã«ãããããã€ã³ããªãžã§ã³ããªèªååã®åºç€ãæ§ç¯ããŸãã
å¶çŽè§£æ±ºã®ããã® COBOL 倿°ã®ã¢ããªã³ã°
éçã³ãŒãè§£æã§ã¯ãå¶çŽè§£æ±ºã¯ã倿°ã®å€ã«åºã¥ããŠãããã°ã©ã å ã®ç¹å®ã®æ¡ä»¶ãŸãã¯åå²ãè«ççã«çãåœãã倿ããããã«äœ¿çšãããŸããCOBOLã®å Žåããã®ã¿ã¹ã¯ã«ã¯ãèšèªç¬èªã®å€æ°ã¢ãã«ã«ãããããŒã¿ã®å®£èšããã©ãŒããããæäœæ¹æ³ãæ·±ãçè§£ããå¿ èŠããããŸããCOBOLã®å€æ°åŠçã«ã¯ã倿§ãªåœ¢åŒããã€ããªè¡šçŸãåå®çŸ©å¯èœãªã¡ã¢ãªæ§é ãå«ãŸããŠããããã¹è§£æãã·ã³ããªãã¯å®è¡ã®è€éããå¢ããŸãã
COBOL倿°ã®æ§é
COBOL倿°ã¯éåžžãæ¬¡ã®ããã«å®çŸ©ãããŸãã PIC é·ãã圢åŒãäœ¿çšæ³ãæå®ããå¥ãäŸ:
01 ACCOUNT-BALANCE PIC S9(6)V99 COMP-3.
01 TRANSACTION-CODE PIC X(4).
ããããå¶çŽãœã«ããŒå ã§ã¢ãã«åããã«ã¯ãåæããŒã«ã§æ¬¡ã®æäœãè¡ãå¿ èŠããããŸãã
- æ°å€ãã¯ãã£ãŒå¥ãç¹ã«ãã㯠10 鲿°ãš 2 鲿°åœ¢åŒãè§£éãã
- 笊å·ä»ãå€ãšå°æ°ç¹ä»¥äžã®ã¹ã±ãŒãªã³ã°ãåŠçãã
- éã®åºå¥
DISPLAY,COMP,COMP-3,COMP-5çšé - ãã£ãŒã«ãã¬ãã«ã®åå®çŸ©ãšã°ã«ãŒãé ç®ã远跡ãã
ãããã®ç¹æ§ã¯ãå¶çŽã®çæãšè©äŸ¡æ¹æ³ã«åœ±é¿ãäžããŸããäŸãã°ãCOMP-3ã®å€ã¯ãè«çæŒç®ãã¢ãã«åããåã«ã¢ã³ããã¯ããå¿ èŠããããŸãã
å¶åŸ¡ãããŒæ±ºå®ãžã®å¶çŽã®é©çš
å žåç㪠COBOL ã®æ±ºå®ã«ã¯ã次ã®ãããªè€åæ¡ä»¶ãå«ãŸããå ŽåããããŸãã
IF ACCOUNT-BALANCE > 1000 AND TRANSACTION-CODE = "TRF"
ãã®æ¡ä»¶ã«äŸåãããã¹ãå®è¡å¯èœãã©ãããè©äŸ¡ããã«ã¯ãå¶çŽãœã«ããŒã¯æ°å€æ¯èŒãšæå忝èŒã®äž¡æ¹ãã·ãã¥ã¬ãŒãããå¿ èŠããããŸãããããã®å€æ°ã®å€ãäžæãªå Žåã¯ãã·ã³ããªãã¯ã«æ±ãããŸãããœã«ããŒã¯ãæ¡ä»¶ãæºããå€ã®å²ãåœãŠãæ¢ããŸãã
è€æ°ã®åå²ãååšããå Žåããœã«ããŒã¯åãã¹ã®å¶çŽã远跡ããå®çŸå¯èœæ§ã«åºã¥ããŠããããæ€èšŒãŸãã¯ç Žæ£ããå¿ èŠããããŸãã
COBOLå¶çŽã¢ããªã³ã°ã®èª²é¡
COBOL ç¹æã®èª²é¡ã¯æ¬¡ã®ãšããã§ãã
- REDEFINESå¥: 1ã€ã®èšæ¶åã«è€æ°ã®è§£éãä¿æã§ããŸããã€ãŸãã倿°ã®æå³ã¯ã³ã³ããã¹ãã«å¿ããŠå€åããå¯èœæ§ããããŸãã
- åæå€ãšå®è¡æã®äŸåé¢ä¿: äžéšã®å€æ°ã¯ãã¡ã€ã«å ¥åãŸãã¯ãµãããã°ã©ã ã®çµæã«äŸåããå¯èœæ§ããããèšå·çã«ã¢ãã«åãããªãéãäžç¢ºå®æ§ãçããŸãã
- é
åã®ã€ã³ããã¯ã¹: ããŒãã«é§ååããžãã¯
OCCURSæ¡é ãšINDEXED BYã«ãŒããã¢ã¯ã»ã¹ã®åäœã®èª€è§£ãé²ãããã«ãæ§é ã¯éçã«è§£æ±ºããå¿ èŠããããŸãã
ãããã管çããããã«ãåæãšã³ãžã³ã¯ã¡ã¢ãª ã¬ã€ã¢ãŠããã·ãã¥ã¬ãŒãããããã°ã©ã å šäœã§ã·ã³ããªã㯠ã¡ã¢ãªã®ç¶æ ã远跡ããããšããããããŸãã
æ£ç¢ºãªå€æ°ã¢ããªã³ã°ã®å©ç¹
- å°éäžèœãªã³ãŒããããããã©ã³ããæ£ç¢ºã«æ€åº
- ãŒãé€ç®ãç¡å¹ãªé åã€ã³ããã¯ã¹ãªã©ã®äžæ£ãŸãã¯æªå®çŸ©ã®æäœã®æ€åºãæ¹åããŸãã
- å¢çãšçµäºåºæºãç¹å®ããããšã§ã«ãŒãåæã匷åããŸã
- ãã¹ãŠã®å ¥åå€ã蚱容ãããå¶çŽå ã§åŠçãããããšã確èªããããšã§ã³ã³ãã©ã€ã¢ã³ã¹ç£æ»ããµããŒãããŸãã
æ£ç¢ºãªå¶çŽè§£æ±ºã¯ãæ£ç¢ºãªå€æ°ã¢ããªã³ã°ããå§ãŸããŸããCOBOLã§ã¯ãããŒã¿å®çŸ©ãå¶åŸ¡ãããŒãšããžãã¹ããžãã¯ã®äž¡æ¹ã§äžå¿çãªåœ¹å²ãæããããã倿°ã®æ§é ãšã³ã³ããã¹ãã®è©³çްãå®å šã«çè§£ããããšã¯ããããã詳现ãªéçè§£æãè¡ãäžã§äžå¯æ¬ ã§ãã
ãã¹åæã«ãããREDEFINESå¥ã®æ±ã
ãã® REDEFINES COBOLã®<code>å¥</code>ã¯ãè€æ°ã®ããŒã¿é
ç®ãåãèšæ¶åãå
±æããããšãå¯èœã«ããŸããã¡ã¢ãªã®æé©åãå¯å€ã¬ã³ãŒãã¬ã€ã¢ãŠãã®è¡šçŸã«ã¯äŸ¿å©ã§ãããéçè§£æã«ãããŠã¯å€§ããªèª²é¡ãšãªããŸãããããã£ãŒã«ããå¥ã®ãã£ãŒã«ããåå®çŸ©ãããšããã®èšæ¶åå
ã®å€ã®æå³ã¯ã³ã³ããã¹ãã«äŸåããããã«ãªããŸããããã«ããææ§ããçããå¶åŸ¡ãããŒãšããŒã¿ãããŒã®è§£æãè€éã«ãªããŸãã
REDEFINESã®åœ±é¿ãçè§£ãã
次ã®ããŒã¿æ§é ãèããŠã¿ãŸãããã
01 RECORD-BLOCK.
05 RECORD-TYPE PIC X.
05 CUSTOMER-RECORD REDEFINES RECORD-BLOCK.
10 CUSTOMER-ID PIC 9(5).
10 BALANCE PIC S9(7)V99.
05 VENDOR-RECORD REDEFINES RECORD-BLOCK.
10 VENDOR-ID PIC X(8).
10 STATUS PIC X.
ããã§ã¯ã CUSTOMER-RECORD (NAIST) ãš VENDOR-RECORD å®å
šã«éãªãåããã©ã®æ§é ãæå¹ãã¯ã RECORD-TYPEããã°ã©ã ãäžæ¹ã®åœ¢åŒãæ³å®ããŠããããããŒã¿ãããäžæ¹ã®åœ¢åŒã«å¯Ÿå¿ããŠããå ŽåãçµæãšããŠèšç®ãäžæ£ç¢ºã«ãªã£ãããæ¯èŒãç¡å¹ã«ãªã£ãããå¶åŸ¡ãããŒãééã£ããã¹ã«é²ãå¯èœæ§ããããŸãã
éçè§£æã®èª²é¡
ãã¹åæãå®è¡ããå Žåãéçã¢ãã©ã€ã¶ãŒã¯æ¬¡ã®ããšãè¡ãå¿ èŠããããŸãã
- ãã¹ãŠãç¹å®ãã
REDEFINESé¢ä¿ãšå ±æã¹ãã¬ãŒãžé å - å®è¡æã«ã©ã®ãã£ãŒã«ã ã»ãããæå¹ã§ããããå¶åŸ¡ããè«çæ¡ä»¶ã決å®ããŸãã
- åå®çŸ©ããããã£ãŒã«ãå€ã«åºã¥ããŠåå²ãŸãã¯æ®µèœã®å®è¡ã远跡ãã
- æ¡ä»¶ä»ãããžãã¯ã«ã次ã®ãããªèå¥ãã£ãŒã«ãã®ãã§ãã¯ãå«ãŸããŠããããšã確èªããŸãã
RECORD-TYPE
ãã©ã³ããåç
§ããå Žå CUSTOMER-ID ã¬ã³ãŒãã¿ã€ãã顧客çšã§ããããšãæåã«ç¢ºèªããã«ãã¢ãã©ã€ã¶ãŒã¯ å¶åŸ¡ãããŒãªã¹ã¯ç¹ã«ããã®ãããªãã©ã³ããèšç®ããã¡ã€ã«ã®æŽæ°ããŸãã¯ãªãœãŒã¹ ã¢ã¯ã»ã¹ãå®è¡ããå Žåã¯ããã§ãã
ã¢ããªã³ã°ææ³
é«åºŠãªéçè§£æããŒã«ã¯ REDEFINES 建ç©ã«ãã£ãŠ ãªãŒããŒã¬ã€ã¢ãã« ããããã®è§£éã«ã€ããŠããããã®ã¢ãã«ã«ã¯ä»¥äžãå«ãŸããŸãã
- ç©ççãªã¹ãã¬ãŒãžãããã¯ã衚ãããŒã¹ã¡ã¢ãªããã
- ç°ãªãåºæºã«åºã¥ããŠäžã«éããããè«çãã¥ãŒ
REDEFINESå®£èš - 1 ã€ã®ãã¥ãŒãã¢ã¯ãã£ãã«ããä»ã®ãã¥ãŒãéã¢ã¯ãã£ãã«ããæ¡ä»¶ä»ãé¢ä¿
ãããã®æè¡ã«ãããã¹ãã¬ãŒãžãè€æ°ã®æ¹æ³ã§åå©çšãããå Žåã§ããåæãšã³ãžã³ã¯å€ã远跡ãããã㌠ãã¹ãæ£ç¢ºã«å¶åŸ¡ã§ããŸãã
åæå¯Ÿè±¡ã®äŸ:
IF RECORD-TYPE = 'C'
PERFORM PROCESS-CUSTOMER
ELSE IF RECORD-TYPE = 'V'
PERFORM PROCESS-VENDOR
ã¢ãã©ã€ã¶ãŒã¯ãå PERFORM ãã©ã³ãã¯é¢é£ããåå®çŸ©ãããæ§é ã®ã¿ã䜿çšããæªå®çŸ©ãŸãã¯éã¢ã¯ãã£ããªãã£ãŒã«ãã®äœ¿çšãæœåšçãªç°åžžãšããŠãã©ã°ä»ãããŸãã
åå®çŸ©ãç¡èŠããããšã®ãªã¹ã¯
ç¡èŠãããå Žåã REDEFINES å¥ã«ããæ¬¡ã®ããšãçºçããå¯èœæ§ããããŸã:
- ãã€ããªããŒã¿ãæååãšããŠäœ¿çšããããŸãã¯ãã®éãªã©ã®ç¡å¹ãªããŒã¿è§£é
- æ¡ä»¶ä»ãããžãã¯ã«ããã誀解ãæãæ¯èŒ
- ãã£ãŒã«ãã®æå³ã«é¢ãã誀ã£ãä»®å®ãå¶åŸ¡ãããŒãå°ããšãã«æ€åºãããªããã°
- ãã£ãŒã«ãå€ã®äžæŽåã«ããããŒã¿ããŒã¹ãŸãã¯ãã¡ã€ã«ã®æŽæ°ã§é倧ãªåé¡ãçºçãã
éçè§£æã§ã¯ã REDEFINES ãã¹ã®æ±ºå®ããæå¹ãã€ååã«çè§£ãããããŒã¿æ§é ã«åºã¥ããŠããããšãä¿èšŒããããã«äžå¯æ¬ ã§ããããã¯ãCOBOLæ§é ããçŽæ¥å¯Ÿå¿ãããã®ããªãä»ã®èšèªããã©ãããã©ãŒã ã«ç¿»èš³ããè¿ä»£åã®åãçµã¿ã«ãããŠãããã«éèŠã«ãªããŸãã REDEFINES.
åçãã¹æ¢çŽ¢ãšéçãã¹æ¢çŽ¢ã®éç
éçè§£æã¯ãããã°ã©ã ãå®è¡ããã«ããã®å¶åŸ¡ãããŒãšããŒã¿ãããŒã®ããããåäœãäºæž¬ããããšãç®çãšããŠããŸãããã®ã¢ãããŒãã¯ããã°ã®æ©æçºèŠãã¬ã¬ã·ãŒã·ã¹ãã ã®æ€èšŒã«éåžžã«åœ¹ç«ã¡ãŸãããå®éã®å®è¡æã«ããã°ã©ã ã®åäœã芳å¯ããåçè§£æãšã¯æ¬è³ªçã«ç°ãªããŸããç¹ã«COBOLã®ã³ã³ããã¹ãã«ãããŠãéçãã¹æ¢çŽ¢ã®éçãçè§£ããããšã¯ãçŸå®çãªæåŸ å€ãèšå®ããå¿ èŠã«å¿ããŠãããè£å®ããããã«äžå¯æ¬ ã§ãã
éçãã¹æ¢çŽ¢ãæäŸãããã®
éçãã¹æ¢çŽ¢ã¯ããœãŒã¹ã³ãŒããè§£æããæœåšçãªåå²ãã«ãŒãããµãããã°ã©ã åŒã³åºãããã¹ãŠè¿œè·¡ããããšã§ãå¶åŸ¡ãããŒã°ã©ããæ§ç¯ããŸããããã«ã¯ä»¥äžãå«ãŸããŸãã
- 解決
PERFORM,GOTO,CALLæ - ãããã³ã°
EVALUATE(NAIST) ãšIFæ§é ãæ±ºå®ããŒãã«å€æãã - æ¡ä»¶æã«ããã倿°ã®åœ±é¿ãåæãã
- å°éäžèœã³ãŒããç¡éã«ãŒãã®æ€åº
ãã®åæã«ãããå®éã®ç°å¢ã§ã¯æ±ºããŠçºçããªãå¯èœæ§ã®ããå ¥åã§ãã£ãŠããå®è¡ãããŒã®å šäœåãææ¡ã§ããŸããã«ãã¬ããžã®æ€èšŒãç°åžžã®æ€åºããã¹ãã±ãŒã¹ã®èšç»ã«æé©ã§ãã
äž»ãªå¶éäºé
匷åã§ããã«ãããããããéçãã¹è§£æã«ã¯éçããããŸãã
1. å®è¡æã³ã³ããã¹ãã®æ¬ åŠ
éçè§£æã§ã¯ãå®éã®å
¥åããŒã¿ãã·ã¹ãã ç¶æ
ãå€éšæ¡ä»¶ã芳å¯ã§ããŸãããã€ãŸããåçãªå€ãå€éšãã¡ã€ã«ãç°å¢å€æ°ã䜿çšããã³ãŒãã§ã¯ã誀æ€ç¥ãçºçããå¯èœæ§ããããŸãã
2. ãã¹ççº
ãã¹ããããå€§èŠæš¡ãªCOBOLããã°ã©ã PERFORM ã«ãŒããããŒãã«é§ååããžãã¯ããããŠæ·±ãåå²ããæ¡ä»¶ã«ãã£ãŠãæ°åãæ°çŸäžãã®ãã¹ãèããããŸããéçããŒã«ã§ã¯ããã¥ãŒãªã¹ãã£ãã¯ãçšããŠãã¹ãåæžããªããã°ãåææéãé·ããªãããããªã¹ã¯ããããŸãã
3. å¯äœçšãè©äŸ¡ã§ããªã
å€éšããã°ã©ã ãžã®åŒã³åºã CALL CICSãDB2ãªã©ã®ã·ã¹ãã ãªãœãŒã¹ã¯ãå
·äœçã«ã¢ãã«åãããªãéããã©ãã¯ããã¯ã¹ãšããŠæ±ãããŸãããã®ãããã¢ãã©ã€ã¶ãŒã«ããå®è¡çµæã®å®å
šãªäºæž¬èœåã¯å¶éãããŸãã
4. å®è¡æã®åäœã«é¢ãããã£ãŒãããã¯ãéãããŠãã
éçããŒã«ã¯ãå®éã«ãã®ãããªãã¹ãå®è¡ããããã©ããã確èªããã«ãæœåšçãªç¡éã«ãŒãããããã³ãŒããå ±åããããšããããŸãããã®ãããªå Žåãåçè§£æãè£å®çãªææ³ãšããŠäŸ¡å€ãçºæ®ããŸãã
ãã€ãããã¯ãã¯ããã¯ãšã®æ¯èŒ
| æ©èœ | éçåæ | åçåæ |
|---|---|---|
| ã³ãŒãã«ãã¬ããž | å®äºïŒèšå·ïŒ | éšåçïŒããŒã¿äŸåïŒ |
| å ¥åæåºŠ | å ¥åã«äŸåããªã | å ¥ååºæ |
| ããã©ãŒãã³ã¹æž¬å® | ããã | ã¯ã |
| å®è¡ãã¬ãŒã¹ | ã·ãã¥ã¬ãŒãããã | ãªã¢ã«ã¿ã€ã |
| æ©æãšã©ãŒæ€åº | ã¯ã | å®è¡ããããã¹ã«éå® |
ãã€ããªããã¢ãããŒã
ãããã®å¶éãå æããããã«ãããã€ãã®ã·ã¹ãã ã§ã¯ ãã€ããªããåæ éçãã¹ã¢ããªã³ã°ãšå®è¡ãã¬ãŒã¹ããã¹ããã°ãæ¬çªç°å¢ãã¬ã¡ããªãçµã¿åãããããšã§ãå®éã«ã©ã®ãã¹ã䜿çšãããããæ€èšŒããå®è¡æã³ã³ããã¹ãã«åºã¥ããåæãå å®ããã誀æ€ç¥ãåæžããŸãã
COBOL ç°å¢ãç¹ã«ã¡ã€ã³ãã¬ãŒã ã§ã¯ãããã ãã°ãš CICS ãã©ã³ã¶ã¯ã·ã§ã³ ãã¬ãŒã¹ãéçã¢ãã«ãšçµ±åããããšããéäŸµå ¥ååæã®å®å šæ§ãç¶æããªããå®éã®ãã¹ã®äœ¿çšç¶æ³ã確èªããããã®å®çšçãªæ¹æ³ã§ãã
ãŸãšãããšãéçè§£æã¯åºç¯ãã€è©³çŽ°ãªæ€æ»æ©èœãæäŸããŸãããå®è¡æã®æŽå¯ãå®å šã«çœ®ãæããããšã¯ã§ããŸããããã®éçã¯é©åã«çè§£ããã°ç®¡çå¯èœã§ãããå®éã®å®è¡ããŒã¿ãšçµã¿åãããŠäœ¿çšââããããšã§ãè€éãªCOBOLã·ã¹ãã ã®å¶åŸ¡ããžãã¯ã«å¯Ÿããæ¯é¡ã®ãªãå¯èŠæ§ãæäŸããŸãã
段èœéã®ç§»åã«ããã倿°ç¶æ ã®è¿œè·¡
COBOLã§ã¯ãå¶åŸ¡ãããŒã¯æ®µèœãšã»ã¯ã·ã§ã³ãäžå¿ã«æ§æãããå€ãã®å Žåã PERFORM (NAIST) ãš GOTO æããããã®ãžã£ã³ãã¯ã倿°ã®ç¶æ
ã远跡ããéã«è€éãããããããŸããç¹ã«ãããæ®µèœã§ä»£å
¥ãè¡ããããã®å€æ°ã«åºã¥ãæ¡ä»¶æãä»ã®æ®µèœã§äœ¿çšãããŠããå Žåããã®è€éãã¯é¡èã«ãªããŸããæ£ç¢ºãªéçè§£æã«ã¯ãå¶åŸ¡ãããã°ã©ã ã®ããŸããŸãªéšåãééããéã«å€æ°ãã©ã®ããã«å€åããããã¢ãã«åãã远跡ããèœåãå¿
èŠã§ãã
倿°ç¶æ 远跡ãéèŠãªçç±
次ã®ç°¡ç¥åãããæ§é ãèããŠã¿ãŸãããã
PERFORM INIT-VARS
PERFORM CHECK-VALUE
...
INIT-VARS.
MOVE ZERO TO COUNTER
MOVE "ACTIVE" TO STATUS
CHECK-VALUE.
IF STATUS = "ACTIVE"
PERFORM PROCESS-A
ELSE
PERFORM PROCESS-B
çŽ æŽãªåæè
ã¯ã CHECK-VALUE å€ç«ããŠããããçè§£ã§ããªã STATUS åžžã«ãACTIVEãã«èšå®ãããŸããé©åãªç¶æ
远跡ã«ããã PROCESS-A åžžã«å®è¡ããã PROCESS-B å¥ã®ãã¹ã倿Žãããªãéãå°éã§ããªã STATUS.
ãã®è¿œè·¡ã¯ã次ã®å Žåã«äžå¯æ¬ ã§ãã
- 倿ŽãããŠããªã倿°ãæ¡ä»¶ãšãããããã³ãŒãã®æ€åº
- 䜿çšåã«äœæ¥é å倿°ã®åæåãæ€èšŒãã
- ã«ãŒããšæ±ºå®ã«ãããçµäºæ¡ä»¶ãæå¹ã§ããããšã確èªãã
- 段èœéã§å ±æå€æ°ã䜿çšããããšã«ããå¯äœçšãçè§£ãã
æè¡çãªèª²é¡
COBOL ã§ã¯ã倿°ã®ç¶æ 远跡ã§ã¯æ¬¡ã®ç¹ãèæ ®ããå¿ èŠããããŸãã
- éç·åœ¢å¶åŸ¡ãããŒ: 段èœã¯å®è¡æã®æ±ºå®ã«åºã¥ããŠããŸããŸãªé åºã§å®è¡ãããå ŽåããããŸãã
- è€æ°ã®ãšã³ããªãã€ã³ã: 段èœã¯
PERFORMè€æ°ã®å ŽæããååŸãããåãšã³ããªã§å€æ°ã®ç¶æ ãç°ãªããŸãã - ã°ããŒãã«å€æ°: ã»ãšãã©ã®å€æ°ã¯äœæ¥é åã§å®çŸ©ãããããã°ã©ã å šäœã«æž¡ã£ãŠä¿æããããããããŒã«ã©ã€ãºãããåæã¯å¹æããããŸããã
- æ¡ä»¶ä»ãå²ãåœãŠ:
MOVE,ADD,SUBTRACTãã®ä»ã®æäœã¯ãã·ã³ããªãã¯è©äŸ¡ãå¿ èŠãšããè€éãªããžãã¯ã«ãã£ãŠä¿è·ãããå ŽåããããŸãã
éçè§£ææŠç¥
é«åºŠãªã¢ãã©ã€ã¶ãŒã¯ã以äžã䜿çšããŠå€æ°ã®ç¶æ é·ç§»ãã¢ãã«åããŸãã
- æœè±¡çè§£éåæ®µèœã®å ¥å£ãšåºå£ã®ç¶æ ãèšå·çã«è¿œè·¡ãããã
- å¶åŸ¡ãããŒã³ã³ããã¹ããããã³ã°æ®µèœéã®åŒã³åºãå ãšåŒã³åºãå ã®é¢ä¿ãã·ãã¥ã¬ãŒããã
- ãã¹ã®åæµè€æ°ã®ãšã³ããªãã€ã³ãããã®å€æ°ç¶æ ãäžè²«ãããã¥ãŒã«çµ±åããŸã
- ç¶æ æ Œåããã«ãããã¢ãã©ã€ã¶ãŒã¯å€æ°ãåºå®ã®æŽæ°ãæååã§ã¯ãªããç¯å²ãèšå·å€ãšããŠââ衚ãããšãã§ããŸãã
ãã®çµæãå¶åŸ¡ãåæ®µèœãç§»åããã«ã€ããŠé²åããããã°ã©ã ã®ç¶æ 空éã®åçã¢ãã«ãçæãããã¢ãã©ã€ã¶ãŒã¯ã³ãŒãã®ã©ã®æç¹ã§ãå€ã®å¶çŽã«é¢ããã¢ãµãŒã·ã§ã³ãè¡ãããšãã§ããŸãã
å¶åŸ¡ãããŒã®ç²ŸåºŠã«é¢ããå©ç¹
倿°ã®ç¶æ ã远跡ããããšã«ãã:
- åºå®å€æ°å€ã«ããå°éäžå¯èœãªãã¹ãæ©æã«ç¹å®ã§ãã
- åæåãããŠããªãããŒã¿ãæ¡ä»¶ã«äžæ£ãªå€ã䜿çšãããªã©ã®æœåšçãªå®è¡æãšã©ãŒããã©ã°ä»ãã§ããŸãã
- é床ã«ä¿å®çãªãããŒã®ä»®å®ã«ãã誀æ€ç¥ãæžããããšãã§ãã
- ããã°ã©ã ã®åäœããžãã¯ã®å šäœçãªçè§£ã匷åãããŸã
ãã®åæã¯ãããã¥ã¡ã³ãããŸã°ãã§ãããŒã¿ ãããŒãçè§£ããããšãã¡ã³ããã³ã¹ãææ°åãæåãããéµãšãªãåŸæ¥ã® COBOL ã·ã¹ãã ã§ã¯ç¹ã«åœ¹ç«ã¡ãŸãã
æ¡ä»¶ãã¹ã«ãããåæåãããŠããªãããŒã¿ã®æ€åº
COBOLããã°ã©ã ã§ã¯ãåæåãããŠããªãããŒã¿ã¯å¶åŸ¡ãããŒã®ç°åžžã®åå ãšãªãããšããããããŸããç¹ã«ã倿°ãé©åãªå€ãå²ãåœãŠãããåã«æ¡ä»¶ä»ãããžãã¯ã§äœ¿çšãããå Žåã§ããCOBOLã§ã¯å³æ ŒãªåæåèŠåã匷å¶ãããªããããéçºè
ã¯ãã¹ãŠã®äœæ¥é åãã£ãŒã«ãã«æå³ã®ããå€ã䜿çšãããåã«æåã§ç¢ºèªããå¿
èŠããããŸããåæåãããŠããªã倿°ã IF, EVALUATEããŸãã¯ã«ãŒãç¶æ
ãçºçãããšãäžå®å®ãªå¶åŸ¡ãããŒãããŒã¿ã®ç Žæãããã«ã¯ã·ã¹ãã ã®ç°åžžçµäºãåŒãèµ·ããå¯èœæ§ããããŸãã
åæåãããŠããªã倿°ã®çŸå®äžçã«ããããªã¹ã¯
次ã®ã·ããªãªãæ€èšããŠãã ããã
IF TRANSACTION-CODE = "PAYM"
PERFORM PROCESS-PAYMENT
ELSE
PERFORM ERROR-ROUTINE
If TRANSACTION-CODE äœæ¥é åã§å®£èšãããŠãããããã®æ±ºå®ç¹ããåã«å€ãå²ãåœãŠãããŠããªãå Žåãæ¡ä»¶ã¯ã©ã³ãã ãªã¡ã¢ãªå
容ã«å¯ŸããŠè©äŸ¡ãããŸããããã«ãããæ¬¡ã®ãããªåé¡ãçºçããå¯èœæ§ããããŸãã
- æå³ããªãã³ãŒããã¹ã®å®è¡
- æ€èšŒããžãã¯ãã¹ãããããŸãã
- ç¡å¹ãªå ¥åãŸãã¯æ¬ èœã¬ã³ãŒãã®åŠç
ãã®ãããªåé¡ã¯ãã¡ã¢ãªã®åå©çšãã¿ãŒã³ã«å¿ããŠããã°ã©ã ã 1 åã®å®è¡ã§ã¯æ£ããåäœããŠããå¥ã®å®è¡ã§ã¯å€±æããå¯èœæ§ãããããããããã°äžã«è¿œè·¡ããã®ãéåžžã«å°é£ã§ãã
éçè§£æææ³
åæåãããŠããªã倿°ãæ€åºããããã«ãéçã¢ãã©ã€ã¶ã¯ ããŒã¿ãããŒåæ å¶åŸ¡ãããŒãã¹å šäœã«ããã£ãŠãããã«ã¯ä»¥äžãå«ãŸããŸãã
- ãã¹ãŠã®å€æ°å®£èšãšãã®åæç¶æ ã®ãããã³ã°
- åå²ãåœãŠæäœã®è¿œè·¡ã
MOVE,READ,ACCEPTããŸãã¯ç®è¡æŒç®ã®çµæ - æ¡ä»¶åå²ãåæããŠãä»£å ¥åã«å€æ°ã䜿çšãããå¯èœæ§ããããã©ããã倿ãã
ããšãã°ã次ã®ãšããã§ãã
IF CUSTOMER-TYPE = "P"
PERFORM PROCESS-PERSONAL
ã¢ãã©ã€ã¶ãŒã¯ã CUSTOMER-TYPE ãã®æ¡ä»¶ã«å
ç«ã£ãŠä»£å
¥ãããããšã¯ãããŸãããã©ã®ãã¹ã«ã代å
¥ãååšããªãå Žåã¯ãåæåãããŠããªãããŒã¿ã®äœ¿çšã®å¯èœæ§ããããšãã©ã°ãç«ãŠãããŸãã
以äžã®å Žåã«ã¯ç¹å¥ãªæ³šæãå¿ èŠã§ãã
- æ¡ä»¶ä»ããŸãã¯ã«ãŒãå ã§åæåããã倿°
- ä»ã®ããã°ã©ã ããæž¡ããããã£ãŒã«ã
LINKAGE SECTION REDEFINESå¥ã§ã¯ãå²ãåœãŠãè€æ°ã®ãã£ãŒã«ãã«åœ±é¿ãäžããå¯èœæ§ããããŸãOCCURSé åèŠçŽ ãåå¥ã«æ€èšŒããå¿ èŠãããæ§é
é«ãªã¹ã¯ãã¿ãŒã³ã®äŸ
WORKING-STORAGE SECTION.
01 USER-TYPE PIC X.
...
IF USER-TYPE = "A"
PERFORM ADMIN-FLOW
ãã®ã³ãŒãã¯ã USER-TYPE æ¡ä»¶ã®åã«å€ãèšå®ãããŸããéçè§£æã§ã¯ãåæåãããŠããªããã£ãŒã«ãããèªã¿åãããŠããå¯èœæ§ãããè¡ã匷調衚瀺ãããŸãã
äºé²ãšä¿®åŸ©
ãã®çš®ã®åé¡ãåé¿ããã«ã¯:
- ããã°ã©ã éå§æã«ãã¹ãŠã®äœæ¥é åãã£ãŒã«ããåæåãã
- æç¢ºã§éäžåãããåæåã«ãŒãã³ã䜿çšããã
PERFORM INIT-FIELDS - åå²åã«ãã¡ã€ã«ãããŒã¿ããŒã¹ã端æ«å ¥åããã®å ¥åããŒã¿ãæ€èšŒãã
- çŸåšã®ãã¹ã«æç€ºçã«å ¥åãããŠããªããã£ãŒã«ãã§ã¯æ¡ä»¶æã䜿çšããªãããã«ããŸãã
éçåæã§ã¯ãåæåãããŠããªã倿°ã®äœ¿çšãæ©æã«ç¹å®ããããšã§ãéæ±ºå®è«çãªå¶åŸ¡ãããŒãæé€ããããã°ã©ã ã®ä¿¡é Œæ§ãåäžãããŸããããã¯ãç¹ã«ãã«ãŒãã£ã³ã°ã誀ã£ãŠãããã©ã³ã¶ã¯ã·ã§ã³ãåé¡ã誀ã£ãŠããã¬ã³ãŒããæ·±å»ãªçµæãããããå¯èœæ§ãããéèŠãªã·ã¹ãã ã§åœ¹ç«ã¡ãŸãã
èªå®æ¡ä»¶ SMART TS XL ããŒã¿+å¶åŸ¡ãããŒåæãçµ±å
SMART TS XL ããŒã¿ãããŒã¢ããªã³ã°ãšå¶åŸ¡ãããŒã¢ããªã³ã°ãåããã¬ãŒã ã¯ãŒã¯ã«çµ±åããããšã§ãCOBOLè§£æãžã®çµ±äžçãªã¢ãããŒããå®çŸããŸãããã®çµ±åã«ãããã©ã¡ããã®ææ³ãåç¬ã§é©çšããå Žåã«ã¯èŠéããããããªã埮åŠãªããžãã¯ã®æ¬ é¥ãæ€åºã§ããŸãã倿°ã®æäœæ¹æ³ãšå®è¡ãã¹ã®å±éãçžé¢ãããããšã§ã SMART TS XL è€éãªã¬ã¬ã·ãŒç°å¢ã§ã®å ç¢ãªéçåæã«äžå¯æ¬ ãªãããã°ã©ã åäœã®å®å šãªã»ãã³ãã£ã㯠ã¢ãã«ãäœæããŸãã
çµ±åãã¹è§£æãšã³ãžã³
ã®äžå¿ã« SMART TS XL ã¯ã å¶åŸ¡ãããŒã°ã©ã (CFG) (NAIST) ãš ããŒã¿ãããŒã°ã©ãïŒDFGïŒ ãã¹ãŠã®ããã°ã©ã ã«å¯ŸããŠããããã®ã°ã©ãã¯åæãããåæããã»ã¹äžã«ç¶ç¶çã«æŽæ°ãããŸããCFGã®åããŒãã¯ããã°ã©ã æãŸãã¯åå²ã«å¯Ÿå¿ããDFGã®ãšããžã¯å€æ°å€ã®å€æãšç§»åã衚ããŸãã
ããšãã°ã次ã®ã³ãŒãã§ã¯:
IF BALANCE > 1000
MOVE "Y" TO FLAG
SMART TS XL æ¡ä»¶åå²ïŒå¶åŸ¡ãããŒïŒãšä»£å
¥æŒç®ïŒããŒã¿ãããŒïŒã®äž¡æ¹ãã¢ãã«åããŸãã FLAGã®å€ã¯ã以äžã®æ¡ä»¶ã«äŸåããŸãã BALANCEããã¯ããã¡ã€ã«ã®èªã¿åããŸãã¯èšç®ããå°ãåºããããã®ã§ããå¯èœæ§ããããŸãã
è€ååæã®å©ç¹
1. ç¶æ
è©äŸ¡ã®ç²ŸåºŠ
ããŒã¿ãšå¶åŸ¡ããžãã¯ãå
±ååæãããããã SMART TS XL åå²ãå°éå¯èœãã©ããã ãã§ãªããã©ã®ãããªå€æ°ã®ç¶æ
ã§ããã°åå²ãæå¹ã«ãªãããŸã§å€æã§ããŸããããã«ããããããã³ãŒããããŒãããžãŒæ¡ä»¶ããŸãã¯ççŸããããžãã¯ãããæ£ç¢ºã«ç¹å®ã§ããŸãã
2. ã³ã³ããã¹ãã«å¿ãã倿°ã®ç¶æ
äŒæ
ã¢ãã©ã€ã¶ãŒã¯å®è¡ãã¹ãèµ°æ»ããªããã倿°ã®å€ãšãããããæ®µèœããµãããã°ã©ã éã§ã©ã®ããã«å€åããããææ¡ããŸããããã«ãããã«ãŒãå¢çã®æ€èšŒãåæåãããŠããªããã£ãŒã«ãã®æ€åºãå€ãããŒã¿ãäžæžããããããŒã¿ã®äœ¿çšã®æ€åºãå¯èœã«ãªããŸãã
3. 匷åãããã«ãŒããšååž°ãã§ãã¯
SMART TS XL 倿°ã®æŽæ°ãã«ãŒãçµäºæ¡ä»¶ã«äžãã圱é¿ãè©äŸ¡ããŸããäŸãã°ã PERFORM UNTIL äžé©åãªã«ãŠã³ã¿ãŒæäœãçµäºæ¡ä»¶ã®æ¬ èœã«ãããã«ãŒããç¡éã«ãªãå¯èœæ§ããããŸãã
4. ããŒã¿é§ååãšã©ãŒäŒæ
äŸå€åŠçãåæãããšã SMART TS XL ãšã©ãŒãã©ã°ãæ»ãã³ãŒããã©ã®ããã«èšå®ããã䜿çšããããããããã³ã°ããŸãããšã©ãŒçºçæã«ãã©ã°ãèšå®ããããããšã©ãŒãã³ãã©ã®äžè¶³ã«ããæ£ãããã³ãã©ã«ã«ãŒãã£ã³ã°ãããªãå Žåã¯ã PERFORMã¢ãã©ã€ã¶ãŒã¯å¶åŸ¡ãããŒã®ãã¹ãšé¢é£ããããŒã¿ã®äžæŽåã®äž¡æ¹ãå ±åããŸãã
äŸã®æŽå¯
COBOL ããã°ã©ã ã顧客ã¬ã³ãŒããèªã¿åã£ãŠãªã¹ã¯ ã¬ãã«ããã§ãã¯ãããšããŸãã
READ CUSTOMER-FILE INTO WS-CUST
IF WS-CUST-RISK-LEVEL = "HIGH"
PERFORM RISK-HANDLING
If WS-CUST-RISK-LEVEL ç¹å®ã®é¡§å®¢ã¿ã€ãã«å¯ŸããŠã®ã¿èšå®ããããã®æ¡ä»¶ã¯ç¡æ¡ä»¶ã«è©äŸ¡ãããŸãã SMART TS XL ãã£ãŒã«ããåæåãããŠããªããã以åã®å埩åŠçããã®æ®äœå€ãä¿æããŠããå¯èœæ§ãããããšãèå¥ããŸããããŒã¿ç³»çµ±ãå¶åŸ¡ãããŒã«ãªã³ã¯ããããšã§ãèŠåã ãã§ãªãããªã¹ã¯ãã©ã®ããã«çºçãããã詳现ã«èª¬æããŸãã
ãžã§ãã¹ããªãŒã å šäœã«æ¡åŒµå¯èœ
çµ±ååæã¯åã ã®ããã°ã©ã ãè¶ ããŠæ¡åŒµãããŸãã SMART TS XL è€æ°ã®COBOLã¢ãžã¥ãŒã«ãJCLãžã§ãã¹ãããããã©ã³ã¶ã¯ã·ã§ã³ãã§ãŒã³ã«ããã倿°ã远跡ããŸãããã®ãšã³ãããŒãšã³ãã®å¯èŠæ§ã«ããããã¡ã€ã«äœæãã端æ«ã®å¿çãŸã§ãã¡ã€ã³ãã¬ãŒã ãšã³ã·ã¹ãã å šäœã«ãããå®è¡ãšããŒã¿ãããŒãã·ãã¥ã¬ãŒãã§ããŸãã
ãã®ã¢ãããŒãã§ã¯ã SMART TS XL å¶åŸ¡ãããŒåæãæ§æã¹ãã£ã³ããåäœã¢ãã«ã«å€æããå®éã®ã³ãŒã ããžãã¯ãšå®è¡æã®æå³ã«åºã¥ããæ£ç¢ºãªèšºæããªã¹ã¯ ã¹ã³ã¢ãªã³ã°ãææ°åã®ãµããŒããå¯èœã«ããŸãã
ã³ã³ãã©ã€ã¢ã³ã¹ãšèŠå¶ãžã®åœ±é¿
COBOLã·ã¹ãã ãéèŠãªæ¥åã®ããã¯ããŒã³ãšããŠæ©èœããŠããæ¥çã§ã¯ãã³ãŒããèŠå¶ããã³æ¥çæšæºã«æºæ ããŠããããšãä¿èšŒããããšã¯å¿ é ã§ããéèãå»çãèªç©ºãé²è¡ãªã©ã®èŠå¶åœå±ã¯ããœãããŠã§ã¢ã®åäœãç¹ã«å¶åŸ¡ãããŒãäŸå€åŠçãããŒã¿ã®æŽåæ§ã«ã€ããŠå³æ Œãªä¿èšŒãæ±ããŠããŸããéçå¶åŸ¡ãããŒè§£æã¯ããããã®èŠä»¶ãæ€èšŒããç£æ»ã«é©ããé©åæ§èšŒæ ãäœæããããã®éèŠãªã¡ã«ããºã ãæäŸããŸãã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãå¶åŸ¡ãããŒã®ç°åžžãã³ã³ãã©ã€ã¢ã³ã¹éåãšã©ã®ããã«é¢é£ããŠãããããããŠçµç¹ãèŠå¶çŸ©åãæºããããã«éçåæãã©ã®ããã«æŽ»çšã§ããããæ€èšŒããŸããäž»ãªçŠç¹é åã¯ä»¥äžã®ãšããã§ãã
- å¶åŸ¡ãããŒã®æŽåæ§ã®åŒ·å MISRA-COBOLãDO-178Cãªã©ã®æ£åŒãªæšæºã«åºã¥ããŠãã
- COBOLå®è¡ãã¹ãç£æ»ããã³ãã¬ãŒãµããªãã£èŠä»¶ã«ãããã³ã°ãã èŠå¶ãããç°å¢ã«ãããŠ
- ãã§ã€ã«ã»ãŒãæäœã®ç¢ºä¿ 財åäžã®èª€ããã·ã¹ãã 忢ãåŒãèµ·ããå¯èœæ§ã®ãããšããžã±ãŒã¹ã®å®å šãªåŠç
- 蚌æ ã®çæ ã³ã³ãã©ã€ã¢ã³ã¹è©äŸ¡ãèªèšŒãå éšã¬ããã³ã¹
çŸä»£ã®COBOLã·ã¹ãã ã¯ãæ£ããåäœãã以äžã®æ©èœãåããŠããå¿ èŠããããŸãã 蚌æå¯èœã«æ£ããç£æ»å¯èœã§ãå埩åã«åªããŠããŸããå¶åŸ¡ãããŒåæã¯ãæ©èœã®æ£ç¢ºæ§ãšèŠå¶ã®ä¿èšŒã®éã®ã®ã£ãããåããåŸæ¥ã®æç¶ãåããžãã¯ã«é ããŠãããªã¹ã¯ãå¯èŠåããŸãã
ãµãã»ã¯ã·ã§ã³ã«ã¯ãå®éã®æšæºãšãç¹å®ã®å¶åŸ¡ãã㌠ãã¿ãŒã³ãéæºæ ãªã¹ã¯ã«ã©ã®ããã«å¯Ÿå¿ããŠããããå«ãŸããå€éšã¬ãã¥ãŒã§é »ç¹ã«ãã©ã°ãä»ãããã COBOL æ§é ã«éç¹ã眮ãããŸãã
å¶åŸ¡ãããŒæŽåæ§ã®æšæº
å¶åŸ¡ãããŒã®å®å šæ§ã¯ãç¹ã«å®å šæ§ãéèŠã§èŠå¶ã®å¯Ÿè±¡ãšãªãåéã«ãããŠãä¿¡é Œæ§ã®é«ããœãããŠã§ã¢ã®åºç€ãšãªããŸãã MISRA-COBOL, DO-178Cæ¥çåºæã®ã³ãŒãã£ã³ã°ã¬ã€ãã©ã€ã³ã¯ãããã°ã©ã ã®å®è¡ãã¹ã®æ§é åãå¢çèšå®ãããã³ææžåã«é¢ããæåŸ ãå®çŸ©ããŠããŸããCOBOLã§ã¯ããããã®ã«ãŒã«ã¯ææ§ããæé€ããæå³ããªãåäœãæžãããã¬ã¬ã·ãŒã³ãŒãããŒã¹ã®ä¿å®æ§ãšç£æ»æ§ãé«ããããšãç®çãšããŠããŸãã
MISRA-COBOLãšæ§é åãããŒ
ããšããšèªåè»ã·ã¹ãã åãã«éçºãããCOBOLåãã®MISRAã¬ã€ãã©ã€ã³ã¯ãéçè§£æã«äžå¯æ¬ ãªæ§é åããã°ã©ãã³ã°ã®ååãæšé²ããŠããŸããäž»èŠãªå¶åŸ¡ãããŒã«ãŒã«ã«ã¯ä»¥äžãå«ãŸããŸãã
- ããã°ã©ã ã¯åŸãå¿ èŠããã åäžå ¥å£ãåäžåºå£ 段èœãŸãã¯ã»ã¯ã·ã§ã³ããšã®ããžãã¯
- 掻çš
GOTO(NAIST) ãšALTERæšå¥šãããªãããŸãã¯çŠæ¢ãããŠãã - ãã¹ãŠã®ã«ãŒãã«ã¯ æç€ºçãªçµäºæ¡ä»¶
- å¶åŸ¡ãããŒã¯ äºæž¬å¯èœãªãé ãããŸãã¯æé»çãªåå²ãªã
éçã¢ãã©ã€ã¶ãŒã¯ãåCOBOL段èœããããã³ã°ãããã®å ¥å£ãšåºå£ãæç¢ºã«å®çŸ©ãããŠãããã©ããã倿ããããšã§ããããã®ã«ãŒã«ãé©çšããŸããæ§é åãããŠããªããžã£ã³ãã®äœ¿çšã¯ãä¿®æ£å¯Ÿè±¡ãšããŠãã©ã°ä»ããããŸãã
éæºæ æ§é ã®äŸ:
IF ERROR-FLAG = 1
GOTO HANDLE-ERROR
...
HANDLE-ERROR.
DISPLAY "Error occurred"
GOBACK.
ããã¯åäžãšã³ããªã«ãŒã«ã«éåããŠããã远跡ããã¹ããå°é£ãªåå²ãçºçããå¯èœæ§ããããŸããæ§é åãããä»£æ¿æ¡ãšããŠã¯ã PERFORM å®çŸ©ãããåºå£ãã€ã³ããåããŠããŸãã
DO-178Cãšæ±ºå®è«çå®è¡
èªç©ºå®å®ããã³é²è¡åéã§ã¯ã DO-178C èªç©ºã·ã¹ãã ã®ãœãããŠã§ã¢éçºãèŠå®ãããå¶åŸ¡ãããŒã¯ä»¥äžã®éããšèŠå®ãããŠããã
- èŠä»¶ããã³ãŒãããã¹ããŸã§å®å šã«è¿œè·¡å¯èœ
- æå³ããªãããžãã¯ãã¹ãå°éäžå¯èœãªã³ãŒãããªã
- 枬å®å¯èœãª ä¿®æ£æ¡ä»¶/決å®ã«ãã¬ããžïŒMC/DCïŒ
ããã«ã¯ãã¢ãã©ã€ã¶ãŒã«æ¬¡ã®ããšãæ±ããããŸãã
- 忡件åå²ãå°éå¯èœã§ãããæ€èšŒãããå ¥åã«ãã£ãŠé§åãããããšã確èªãã
- ç¡éã«ãŒãããã©ãŒã«ã¹ã«ãŒåå²ãªã©ãå®è¡ç°åžžãåŒãèµ·ããå¯èœæ§ã®ããå¶åŸ¡ãããŒã匷調衚瀺ããŸãã
- ãã¹ãŠã®è«ççæ±ºå®ãç¶²çŸ ãã蚌æ çæããµããŒããã
éçå¶åŸ¡ãããŒè§£æã®éèŠæ§
éçåæã«ãããæ¬¡ã®æ¹æ³ã§ãããã®æšæºã«å¯Ÿããç¶ç¶çãªæ€èšŒãå¯èœã«ãªããŸãã
- ãã¹ãŠãã§ãã¯äž
IF,PERFORM,EVALUATEãããã³é©åã®ããã®ã«ãŒãæ§é - èªèšŒå¯©æ»ãæ¯æŽããããã®èŠèŠçãªå¶åŸ¡ãããŒå³ã®äœæ
- éçºåæãŸãã¯è¿ä»£åäžã«éåããã€ã©ã€ããã
- 第äžè ç£æ»ãšå éšå質ä¿èšŒæ€æ»ã®ãµããŒã
å¶åŸ¡ãããŒéåã¯ãåŸæ¥ã®ãã¹ãã ãã§ã¯æ€åºãæãé£ããåé¡ã®äžã€ã§ããéçè§£æã«ãããçµç¹ã¯ãœãŒã¹ã¬ãã«ã§ã³ã³ãã©ã€ã¢ã³ã¹ã培åºããèªèšŒã®é å»¶ãççž®ããäžå ·å解決ã«ãããã³ã¹ããåæžã§ããŸãã
ãããã®æšæºã¯æœè±¡çãªããªã·ãŒã§ã¯ãããŸãããå®å šã§æ€èšŒå¯èœãªãœãããŠã§ã¢ãæ§ç¯ããããã®æ°å幎ã«ããããã¹ããã©ã¯ãã£ã¹ãäœçŸãããã®ã§ããçŸå®äžçã®éèã·ã¹ãã ãèªç©ºç®¡å¶ãæ¿åºæ©é¢ã®æ¥åãæ¯ããCOBOLã·ã¹ãã ã«ãããŠãå¶åŸ¡ãããŒã®æŽåæ§ãç¶æããããšã¯åãªãç®æšã§ã¯ãªããå¿ é èŠä»¶ã§ãã
ã·ã³ã°ã«ãšã³ããª/ã·ã³ã°ã«ãšã°ãžããã«é¢ããMISRA-COBOLã«ãŒã«
MISRA-COBOLæšæºã®æãåºæ¬çãªèŠä»¶ã®1ã€ã¯ã åäžå
¥å£ãåäžåºå£ ãã¹ãŠã®å¶åŸ¡ãããŒæ§é ã«é©çšãããã«ãŒã«ããã®ã«ãŒã«ã¯ãåã«ã¹ã¿ã€ã«äžã®å¥œã¿ã«é¢ãããã®ã§ã¯ãªãã èªã¿ããã, ãã¹ãå®¹ææ§, äºæž¬å¯èœæ§ ã¯ãªãã£ã«ã«ãªCOBOLã¢ããªã±ãŒã·ã§ã³ã«ãããŠã次ã®ãããªéæ§é åãããŒæ§é ã«ãã£ãŠçããæ··ä¹±ãçŽæ¥çã«é²ããŸãã GOTO, ALTER, PERFORM THRU.
ã·ã³ã°ã«ãšã³ããªãŒ/ã·ã³ã°ã«ãšã°ãžãããšã¯ã©ãããæå³ã§ãã?
A åäžã®ãšã³ã㪠段èœãŸãã¯ã»ã¯ã·ã§ã³ã¯ãæç¢ºã«å®çŸ©ãããå¶åŸ¡ç¹ïŒé垞㯠PERFORM ãŸãã¯æ§é åããã CALLã«çŽæ¥åœ±é¿ãäžããŸããå¥å
šãšãããã®ã¯ åäžåºå£ æé»çã«ä»ã®ã³ãŒã ãããã¯ã«é¥ã£ããããããŸããªãžã£ã³ãã䜿çšãããããããšãªããå¶åŸ¡ã 1 ã€ã®äºæž¬å¯èœãªå Žæã«æ»ãããšãæå³ããŸãã
éæºæ ã³ãŒãã®äŸ:
PERFORM A THRU C
A.
MOVE ZERO TO COUNT.
B.
IF COUNT > 10
GO TO C.
C.
DISPLAY "Done".
ããã§ã¯è€æ°ã®ãšã³ããªãã€ã³ãïŒAãBãCïŒãååšãã GO TO çµäºæã®äžè²«æ§ãæãªãããŸããå®è¡ãéäžã§éå§ãããããããžãã¯ãã¹ããããããããæå³ããå®è¡ãããã¹ãã§ã¯ãªãã³ãŒãã«é·ç§»ãããããå¯èœæ§ããããããéçã¢ãã©ã€ã¶ãŒã¯ãã®ãã¿ãŒã³ããã©ã°ä»ãããŸãã
æšå¥šæ§é
æºæ ããã³ãŒãã¯è€æ°æ®µèœãé¿ãã PERFORM THRU 代ããã«ã«ãã»ã«åãããããžãã¯ã䜿çšããŸãã
PERFORM INIT-COUNT
INIT-COUNT.
MOVE ZERO TO COUNT.
EXIT.
ããã«ãããå
¥å£ãšåºå£ã®äž¡æ¹ãæç¢ºã«å®çŸ©ãããŸãã EXIT ã¹ããŒãã¡ã³ãã¯æç€ºçã§ããããããã¬ãŒã¹ãšãããã°ã容æã«ãªããŸãã
ãã®ã«ãŒã«ãéèŠãªçç±
å€§èŠæš¡ãªCOBOLã·ã¹ãã ãç¹ã«èŠå¶ã®å³ããæ¥çã§ã¯ãã³ãŒãã®å¯¿åœã¯æ°å幎åäœãšãªããŸããããŒã ã¯ãä»è ãäœæããã³ãŒãããå€ãã®å Žåããã¥ã¡ã³ããªãã§ç¶æ¿ããŸããã·ã³ã°ã«ãšã³ããªã»ã·ã³ã°ã«ãšã°ãžããæ§é ã«ããã以äžã®ããšãå¯èœã«ãªããŸãã
- å¯äœçšã®ãªã¹ã¯ãæžãããããå®å šãªã³ãŒã倿Ž
- ãã°ããã¬ãŒã¹ããšã©ãŒåŠçã®æ¿å ¥ã容æ
- å¶åŸ¡ãããŒãææ§ããªãã¢ãã«åã§ãããããéçè§£æã®ç²ŸåºŠãåäžããŸãã
- è¿ä»£åãããžã§ã¯ãã«ãããæ§é åããã°ã©ãã³ã°ãžã®èªå倿
éçåæã«ãã匷å¶
éçåæããŒã«ã¯ãæ¬¡ã®æ¹æ³ã§ãã®èŠåã®éåãèå¥ããŸãã
- ãã¹ãŠã®æ®µèœãšã»ã¯ã·ã§ã³ã«ãããå ¥å£ãšåºå£ã®ãããã³ã°
- äžé©åãªäœ¿çšã®ç¢ºèª
PERFORM THRUæç¢ºãªå¢çããªã - å®è¡æã«æå³ããªãæ¹æ³ã§ã³ãŒã ãããã¯ã«å ¥ã£ããçµäºãããããããšãå¯èœã«ããéæ§é åãžã£ã³ãããã©ã°ä»ããã
- åºå£ã®äžè²«æ§ãåæãããç¹ã«ã³ãŒãã§
GOBACK,EXITããŸãã¯æ¬¡ã®æ®µèœã«ãã©ãŒã«ã¹ã«ãŒãã
ãã®ãããªåŒ·å¶ã¯ãMISRA-COBOL ãžã®æºæ ãç¶æããç¹ã«ç£æ»ç£èŠäžãå®å šæ§ãéèŠãããç¶æ³ã§ã·ã¹ãã ãåäœããå Žåã«ãã·ã¹ãã ãä¿¡é Œæ§ãšéææ§ããã£ãŠåäœããããšãä¿èšŒããäžã§éåžžã«éèŠã§ãã
èªç©ºïŒDO-178CïŒç°åžžã®ãªãã³ãŒãèŠä»¶
èªç©ºå®å®åéã§ã¯ãèªç©ºé»åå·¥åŠãé£è¡å¶åŸ¡ããŸãã¯ç©æµã·ã¹ãã ããµããŒãããCOBOLããã°ã©ã ã¯ã DO-178Cèªç©ºæ©æèŒãœãããŠã§ã¢ã®å®å šæ§åºæºã®ç€ãšãªãèŠæ Œã§ãããã®äžæ žãšãªãæåŸ äºé ã®äžã€ã¯ã ãœãããŠã§ã¢ã®ç°åžžç¹ã«å¶åŸ¡ãããŒã«ãããŠããããã®ç°åžžã«ã¯å°éäžèœãªã³ãŒããæå³ããªãããžãã¯ãã¹ããããã¯çšãªéçšæ¡ä»¶äžã§ã®ã¿çºçããå¯èœæ§ã®ããæªå®çŸ©ã®åäœãªã©ãå«ãŸããŸãã
DO-178Cã«ãããç°åžžãšã¯
DO-178Cã«ããã°ãç°åžžãšã¯ãæå³ãããæ©èœãŸãã¯ææžåãããæ©èœããéžè±ããããããåäœãŸãã¯æœåšçãªåäœãæããŸããå¶åŸ¡ãããŒã®æèã§ã¯ãããã«ã¯ä»¥äžãå«ãŸããŸãã
- ãããã³ãŒã ãããªãå ¥åãç¶æ ã§ãå®è¡ã§ããªã
- ç¡éã«ãŒã æç¢ºãªéåºåºæºããªã
- æ¡ä»¶åå² åæåãããŠããªãããŸãã¯äºæž¬ã§ããªãããŒã¿ã«äŸåãã
- åºå£ã®äžäžèŽãµãããã°ã©ã ãäºæããªãæ¹æ³ã§çµäºãã
- æ€èšŒãããŠããªãäŸå€ãã¹ç¹ã«ãã¡ã€ã«I/OãããŒã¿ããŒã¹æäœã«ãããŠ
ãããã®ã·ããªãªã¯ãããããéèŠãªã·ã¹ãã ã®å®è¡ã«äžç¢ºå®æ§ããããããDO-178C ã®ããé«ãèšèšä¿èšŒã¬ãã« (DAL)ãç¹ã«çåœã«é¢ããæ©èœã«é©çšããã DAL A ããã³ B ã§ã¯åãå ¥ããããŸããã
DO-178Cå¶åŸ¡ãããŒæ€èšŒã®ããã®éçè§£æ
ãããã®å³ããèŠæ±ãæºããããã«ãCOBOLããã°ã©ã ã¯ãåºæ¬çãªæ§æãæäœã®ã¬ãã¥ãŒãè¶ ããå³å¯ãªéçè§£æãåããå¿ èŠããããŸãããã®ç®çã¯ããã¹ãŠã®å®è¡ãã¹ã以äžã®æ¡ä»¶ãæºãããŠããããšã蚌æããããšã§ãã
- 確å®çã€ãŸããããããã®æ¡ä»¶ã¯æç¢ºã«å®çŸ©ãããçµæã«ã€ãªããã
- è·³ãããã¹ãŠã®ã«ãŒããååž°ããžã£ã³ããæ£ããçµäºããããã«ãã
- ãã¬ãŒãµãã«ããã§ãåãã¹ã¯æç€ºçãªèŠä»¶ã«å¯Ÿå¿ããŸã
DO-178Cã¯ã ä¿®æ£æ¡ä»¶/決å®ã«ãã¬ããžïŒMC/DCïŒã³ãŒãå ã®å倿ãã€ã³ããããããæ¹æ³ã§æ€èšŒããå¿ èŠããããŸããéçè§£æã¯ããã®ã¬ãã«ã®ãã¹ãã«ãã¬ããžãå®çŸå¯èœãã©ããã倿ããã®ã«åœ¹ç«ã¡ãæåã§æ€èšŒãŸãã¯åæ§ç¯ããå¿ èŠãããã³ãŒããã¹ãç¹å®ããŸãã
ç°åžžã®äŸ:
IF ENGINE-STATUS = "FAIL"
GOTO EMERGENCY-HANDLER
...
EMERGENCY-HANDLER.
DISPLAY "Entering emergency mode"
æŽ»çš GOTO è€æ°ã®æœåšçãªå
¥ãå£ EMERGENCY-HANDLER å¶åŸ¡ãããŒã¯èªèšŒåºæºãæºããããã«å®å
šã«å¯èŠãã€æ§é åãããŠããå¿
èŠãããããããã©ã°ãä»ããããŸãã
èªèšŒå€±æã®ãªã¹ã¯
äºåã®ã³ã³ãããŒã«ãããŒåæãè¡ããªããšãåŸææ®µéã§çºèŠãããåé¡ã«çŽé¢ãããªã¹ã¯ããããå€é¡ã®è²»çšããããŠä¿®æ£ãå¿ èŠã«ãªã£ãããèªèšŒååŸãé ããããå®å šã«é æ«ãããããæãããããŸããèªç©ºå®å®åéã®å¯©æ»ã§ããããã³ã³ãããŒã«ãããŒã®äžå ·åã«ã¯ã以äžã®ãããªãã®ããããŸãã
- æ€èšŒãããŠããªãå€éšç¶æ ã«é¢ããä»®å®
- æç¢ºãªèª¬æãªãã«ããã©ã«ãã®æ®µèœå®è¡ã«é Œã
PERFORM - ãã©ãŒã«ã¹ã«ãŒããžãã¯ã®äœ¿çš
EVALUATEorIFãªãã®æ§éWHEN OTHER - æ¡ä»¶ã®ççŸã«ããå®è¡ãããªãã³ãŒããããã¯ãååšãã
ãã¹ããã©ã¯ãã£ã¹
DO-178Cå¶åŸ¡ãããŒã®æŽåæ§èŠä»¶ãæºããã«ã¯ïŒ
- æç€ºçã§æ§é åãããå¶åŸ¡æ§é ã®ã¿ã䜿çšãã
- é¿ãã
GOTO,PERFORM THRUããããŠæ»ã£ãŠããªãCALLæ - ææžåãããå ¥åç¯å²ã䜿çšããŠãã¹ãŠã®æ¡ä»¶ãæ€èšŒãã
- å¶åŸ¡ãããŒã°ã©ãå ã®ãã¹ãŠã®ãã¹ãã·ã¹ãã ã¬ãã«ã®èŠä»¶ã«è¿œè·¡å¯èœã§ããããšã確èªãã
ãããã®ãã©ã¯ãã£ã¹ãèªååãããéçåæããŒã«ãšçµã¿åãããããšã§ãéçºè ã¯äºåã«ãªã¹ã¯ãæé€ããèªèšŒã®åŽåãåæžãã峿 Œãªèªç©ºåºæºã®äžã§åäœããããã·ã§ã³ã¯ãªãã£ã«ã«ãª COBOL ã·ã¹ãã ã®ä¿¡é Œæ§ã確ä¿ã§ããŸãã
éèŠãªå»çCOBOLãã¹ã®FDAæ€èšŒ
ãã«ã¹ã±ã¢ãã¯ãããžãŒåéã«ãããŠãCOBOLã¯äŸç¶ãšããŠæ£è èšé²ã·ã¹ãã ãè«æ±ã¢ããªã±ãŒã·ã§ã³ãå»çæ©åšã€ã³ã¿ãŒãã§ãŒã¹ã®ããã¯ãšã³ãã§éèŠãªåœ¹å²ãæãããŠããŸãã蚺æãæ²»çããŸãã¯æ£è ã®å®å šã«é¢ããã·ã¹ãã ã«ã€ããŠã¯ãç±³åœé£åå»è¬åå±ïŒFDAïŒã峿 Œãªæ€èšŒåºæºãæºãããœãããŠã§ã¢ãèŠæ±ããŠããŸããããã«ã¯ãCOBOLã¢ããªã±ãŒã·ã§ã³ã®å¶åŸ¡ãããŒãããããå®è¡ææ¡ä»¶ã«ãããŠäºæž¬éãã«åäœããå®å šã«æ©èœããããšã蚌æããèŠä»¶ãå«ãŸããŸãã
å»çã·ã¹ãã ã«ãããŠå¶åŸ¡ãããŒã®æŽåæ§ãéèŠãªçç±
å»çãœãããŠã§ã¢ã¯ææ§ãªããžãã¯ã蚱容ããŸãããä¿éºéè«æ±åŠçã§ãããæ£è ã¢ãã¿ãªã³ã°ããŒããŠã§ã¢ãšã®ã€ã³ã¿ãŒãã§ãŒã¹ã§ãããCOBOLã¢ããªã±ãŒã·ã§ã³ã¯ããããå®è¡ãã¹ã確å®ã«æ€èšŒã»ãã¹ããããŠããå¿ èŠããããŸããFDAã¯ãè£œé æ¥è ãšéçºè ã«å¯Ÿãã以äžã®ç¹ãå®èšŒããããšãæåŸ ããŠããŸãã
- ãœãããŠã§ã¢ã«ã¯ããšã©ãŒãé ãå¯èœæ§ã®ããå°éäžèœãªã³ãŒããéã¢ã¯ãã£ããªã³ãŒãã¯å«ãŸããŠããªã
- ãã¹ãŠã®äŸå€åŠçãã¹ãé©åã«å®è£ ããããã¹ããããŠãã
- ãã¹ãŠã®ããžãã¯ãã©ã³ããç¹ã«æ£è ããŒã¿ãããã€ã¹æäœã«åœ±é¿ãäžãããã®ã¯ãæå³ãããšããã«åäœããŸãã
å¶åŸ¡ãããŒã®æ¬ é¥ãæ€åºã§ããªããšãçŸå®äžçã§é倧ãªçµæãæãã GOTO ãŸãã¯æ²é» IF æ¡ä»¶ãæºããããªããšãéèŠãªå ±åãé
ããããæ£è
ããŒã¿ãç ŽæãããããŠãèšåºäžã®èª€ããèŠå¶éåãçºçããå¯èœæ§ããããŸãã
FDAãæ€èšŒã«èŠæ±ãããã®
FDAã®ã¬ã€ãã³ã¹ææžãäŸãã° ãœãããŠã§ã¢æ€èšŒã®äžè¬ååå¶åŸ¡ãããŒä¿èšŒã«é¢ããæåŸ äºé ãæŠèª¬ããŸããããã«ã¯ä»¥äžãå«ãŸããŸãã
- ãã¬ãŒãµããªã㣠èŠä»¶ããã³ãŒãããã¹ãã±ãŒã¹ãŸã§
- æ§é 被èŠåæãã¹ãŠã®éšéãšæ±ºå®ãå®è¡ãããŠããããšã瀺ã
- ãªã¹ã¯åææ éã¢ãŒããšãããåŒãèµ·ããå¯èœæ§ã®ããå¶åŸ¡ããžãã¯ãç¹å®ãã
- æ€èšŒããã³åŠ¥åœæ§ç¢ºèªèšç»å¶åŸ¡ãããŒã°ã©ããäŸå€ãã¹ãã°ãªã©ã®ææç©ã«ãã£ãŠãµããŒããããŸã
COBOL ã§ã¯ãããã¯ãæç¢ºã«å®çŸ©ãããããžãã¯åå²ãäžè²«ããäŸå€ãã¹ãããã³å®è¡åäœã®å®å šãªããã¥ã¡ã³ããåãããæ§é åãããéçã«åæå¯èœãªããã°ã©ã ã«å€æãããŸãã
FDAã³ã³ãã©ã€ã¢ã³ã¹ã®ããã®éçåæ
é«åºŠãªéçè§£æã¯ãæ¬¡ã®æ¹æ³ã§ FDA æ€èšŒããµããŒãããŸãã
- ãã¹ãŠã®å°éå¯èœãã¹ãšæ¡ä»¶ä»ããã¹ãèŠèŠåããå¶åŸ¡ãããŒå³ãçæãã
- æ€èšŒãããŠããªãããŸãã¯ãµã€ã¬ã³ããªãã©ã³ãã«ãã©ã°ãä»ãã
WHEN OTHERorELSEã«ãã¬ããž - ãã¹ãŠã®I/Oããã³ããŒã¿åŠçããžãã¯ã«äŸå€ãã³ãã©ãååšããã¢ã¯ã»ã¹å¯èœã§ããããšã確èªãã
- ç£æ»ãšãã¬ãŒãµããªãã£ã®ããã«ãã³ãŒããã¹ãææžåãããèŠä»¶ã«ãããã³ã°ãã
åæäžã«ãã©ã°ãä»ãããããªã¹ã¯ã®äŸ:
READ PATIENT-FILE INTO WS-PATIENT
IF WS-PATIENT-STATUS = "CRITICAL"
PERFORM ALERT-MEDICAL-TEAM
If WS-PATIENT-STATUS ä»ã®å€ã«ã€ããŠã¯æ€èšŒãããªãå ŽåããŸã㯠ALERT-MEDICAL-TEAM æ§é åãããåºå£ããªãå Žåãã¢ãã©ã€ã¶ãŒã¯æåã§ã¬ãã¥ãŒãããã¹ã«ãã©ã°ãä»ããŸãã
ç·©åæŠç¥
- 亀æãã
GOTO(NAIST) ãšPERFORM THRUã¢ãžã¥ãŒã«åŒã®ãã¹ãå¯èœãªããžãã¯ãŠããããæèŒ - ãã¹ãŠã®åå²ãšã«ãŒãã«æç¢ºãªéå§æ¡ä»¶ãšçµäºæ¡ä»¶ãããããšã確èªãã
- FDAèªå®ã®ãã¹ããã©ã¯ãã£ã¹ã«åºã¥ããã³ãŒãã£ã³ã°æšæºã確ç«ãã
- èšèšäžã«ãã¹ãŠã®æ±ºå®ãã€ã³ããšãã®èšåºçé¢é£æ§ãææžåãã
éçå¶åŸ¡ãããŒè§£æã¯ãåãªãæè¡ããŒã«ã§ã¯ãªããæ€èšŒãå¯èœã«ããããŒã«ãšãªããŸããå»çæ©é¢ãFDAã®èŠå¶ãéµå®ããæ£è ãä¿è·ããèŠå¶ã®å³ããåéã«ãããŠCOBOLã·ã¹ãã ã®å®å šæ§ãšèªèšŒååŸå¯èœæ§ãç¶æããã®ã«åœ¹ç«ã¡ãŸãã
éèã»ã¯ã¿ãŒã®å·è¡
COBOLã¯ãäžçäžã®éè¡ãä¿éºãéèååŒã®åºå¹¹ã·ã¹ãã ã®ããã¯ããŒã³ãšããŠä»ããªãå©çšãããŠããŸãããããã®ã·ã¹ãã ã¯ãå£åº§æ®é«ããæ¯ææç€ºãŸã§ãèšå€§ãªéã®æ©å¯ããŒã¿ãåŠçããŸããããããããŒã¿ãä¿è·ããç£æ»å¯èœæ§ã確ä¿ããããã«ã以äžã®ãããªèŠå¶æ çµã¿ãèšããããŠããŸãã SOX (ãµãŒãã³ã¹ã»ãªã¯ã¹ãªãŒæ³) (NAIST) ãš PCI-DSS (ãã€ã¡ã³ãã«ãŒãæ¥çã®ããŒã¿ã»ãã¥ãªãã£æšæº) ãã¢ãè¡ãããã®ãœãããŠã§ã¢ãå¿ èŠãšãã å¶åŸ¡ãããŒã®æŽåæ§ããã¬ãŒãµããªãã£ãããã³ããããç¶æ³ã§ã®å®å šãªå®è¡ãå®çŸããŸãã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãå¶åŸ¡ãããŒåæãéèã»ã¯ã¿ãŒã®ã³ã³ãã©ã€ã¢ã³ã¹ãšã©ã®ããã«æŽåããŠãããããŸãéçåæããã®æŽåãç¶æããã³èšŒæããäžã§ã©ã®ããã«éèŠãªåœ¹å²ãæãããã«ã€ããŠèª¬æããŸãã
äž»èŠãªãµãã»ã¯ã·ã§ã³ã§ã¯ã次ã®ç¹ã«çŠç¹ãåœãŠãŸãã
- éèŠãªå®è¡ãã¹ã®ç£æ»ã«ãããSOXã³ã³ãã©ã€ã¢ã³ã¹è²¡åå ±åããžãã¯ããµã€ã¬ã³ãé害ãé ããåå²ã®åœ±é¿ãåããªãããã«ãã
- PCI-DSS 決æžãããŒã®æŽåæ§æ€èšŒCOBOLã¢ããªã±ãŒã·ã§ã³ã«ãããæ¯æãåŠçããžãã¯ã®å¯èŠæ§ãšç£æ»å¯èœæ§ã匷åããŸãã
- ããŒã«ããŒã¹ã®ç£æ»çæãã©ã®ããã«åŒ·èª¿ããã SMART TS XL å éšããã³å€éšã®ã¬ãã¥ãŒããµããŒãããã³ã³ãã©ã€ã¢ã³ã¹ææç©ãšèŠèŠåãäœæããŸã
COBOLããŒã¹ã®éèã·ã¹ãã ã®å¶åŸ¡ããžãã¯ã¯ãä»ã®ã©ã®åéãããè€éã§ãç£æ»ã峿 Œã«è¡ãããããšããããããŸããéçå¶åŸ¡ãããŒåæã¯ãéçšã®ä¿¡é Œæ§ãšèŠå¶ã®éææ§ãšãã2ã€ã®ç®æšããµããŒãããéèæ©é¢ãã¬ã¬ã·ãŒã·ã¹ãã ã®ããã©ãŒãã³ã¹ãæãªãããšãªããå³éãªã³ã³ãã©ã€ã¢ã³ã¹ç£èŠã«å¯Ÿå¿ã§ããããæ¯æŽããŸãã
éèŠãªå®è¡ãã¹ã®ç£æ»ã«ãããSOXã³ã³ãã©ã€ã¢ã³ã¹
ãµãŒãã³ã¹ã»ãªã¯ã¹ãªãŒæ³ïŒSOXæ³ïŒã¯ã財åå ±åã·ã¹ãã ã«ããã峿 Œãªèª¬æè²¬ä»»ã矩åä»ããŠããŸããçµç¹ã¯ã財åããŒã¿ã®åŠçãæ€èšŒãéèšã«é¢ãããã¹ãŠã®ã³ãŒããå®å šã«ç£æ»å¯èœã§ãããèåœèšèŒã«ã€ãªããå¯èœæ§ã®ããè«ççãªæ¬ é¥ããªãããšãä¿èšŒããå¿ èŠããããŸããäŒèšãå åž³ãååŒç §åãœãããŠã§ã¢ã®äž»æµã§ããç¶ããŠããCOBOLã·ã¹ãã ã§ã¯ãéçå¶åŸ¡ãããŒè§£æã¯SOXæ³ã®å éšçµ±å¶èŠä»¶ãžã®æºæ ã蚌æããäžã§äžå¯æ¬ ã§ãã
SOXæ³ããœãããŠã§ã¢ã·ã¹ãã ã«èŠæ±ãããã®
SOXæ³ç¬¬404æ¡ã¯ãäŒæ¥ã«å¯Ÿãé©åãªå éšçµ±å¶äœå¶ã®æ§ç¯ãšç¶æã矩åä»ããŠããŸãããœãããŠã§ã¢ã®èгç¹ããèŠããšãããã«ã¯ä»¥äžãå«ãŸããŸãã
- æ€èšŒãã ãã¹ãŠã®å®è¡ãã¹ éèè«çã¯è¿œè·¡å¯èœã§æ€èšŒå¯èœ
- 確ä¿ãã é ãããããžãã¯ãå°éäžå¯èœãªããžãã¯ã¯ãããŸãã ççŸãçããå¯èœæ§ããã
- 財åããŒã¿ãã©ã®ããã«åŠçãããå ±åãããŠãããã瀺ãæç¢ºãªç£æ»èšŒè·¡ãæäŸãã
- ä¿èšŒãã ãšã©ãŒåŠçãšãã§ã€ã«ã»ãŒããã¹ ååšãããã¹ããããŠãã
COBOL ããã°ã©ã ã«ãç¡å¹ãªå ¥åãé»ã£ãŠç¡èŠããããæ®é«æ€èšŒãã¹ãããããããåæåãããŠããªããã£ãŒã«ãã®ããã«èª¿æŽããã€ãã¹ãããããæ±ºå®ãã©ã³ããå«ãŸããŠããå Žåããããã®ãã¹ã«ãã£ãŠè²¡åè«žè¡šã®æ£ç¢ºæ§ãæãªãããå¯èœæ§ããããŸãã
SOXæ³ã®éçå¶åŸ¡ãããŒåæ
COBOLã®æç¶ãåæ§é ã¯ãç¹ã«å ±æå€æ°ã®äœ¿çšã段èœéã®ãžã£ã³ããªã©ãè€éã§åããã«ããå¶åŸ¡ãããŒã«ãªããã¡ã§ããéçå¶åŸ¡ãããŒè§£æã¯ã以äžã®ç¹ãæããã«ããã®ã«åœ¹ç«ã¡ãŸãã
- æ€èšŒããžãã¯ã§ã«ããŒãããŠããªããã©ã³ãè¡æ¹äžæãªã©
WHEN OTHERæ¡éEVALUATE - ãµã€ã¬ã³ããªãŒããŒã©ã€ãå¶åŸ¡ãéèŠãªã«ãŒãã³ããææå°æ©ã«é£ã³åºã
- äžé©åãªäŸå€ãã¹å€±æããI/OæäœãŸãã¯ãã©ã³ã¶ã¯ã·ã§ã³ãšã©ãŒã®åŸã«ãæºæ ãããšã©ãŒåŠçãè¡ãããªã
å±éºãªãã¿ãŒã³ã®äŸ:
IF BALANCE < 0
PERFORM SKIP-POSTING
ãã®ç¶æ³ãææžåãããŠããªãããŸãã¯èšé²ãããŠããªãå Žåããã€ãã¹æ®é«ã財åå ±åããæé»çã«é€å€ãããå¯èœæ§ããããŸããéçåæã§ã¯ããããå¶åŸ¡ãããŒã®ç°åžžãšããŠæ€åºããç£æ»ã®å¯Ÿå¿ãå¿ èŠãšãªããŸãã
å éšç£æ»ãšèªèšŒã®ãµããŒã
ææ°ã®éçè§£æããŒã«ã¯ãSOX ç£æ»ã§çŽæ¥äœ¿çšã§ããææç©ãäœæããŸãã
- å¶åŸ¡ãããŒå³ 財åèšé²ã®åãæ±ãã«é¢ãããã¹ãŠã®æ¯åºã匷調衚瀺
- å®è¡ãã¹ã¬ããŒã æææ±ºå®ãã€ã³ããšäžæµãžã®åœ±é¿ã瀺ã
- äŸå€ããã ãã¹ãŠã®é害æ¡ä»¶ãé©åã«ã«ãŒãã£ã³ã°ãããŠãããã©ãããç¹å®ãã
ãããã®ææç©ã¯ãé©åãªå¶åŸ¡ããžãã¯ã®å®è£ ã®éæã§èªååããã蚌æ ãæäŸããããšã«ãããå€éšã¬ãã¥ãŒäžã® IT ããŒã ãšã³ã³ãã©ã€ã¢ã³ã¹ ããŒã ã®è² æ ã軜æžããŸãã
SOX察å¿COBOLã®ãã¹ããã©ã¯ãã£ã¹
- æ€èšŒãšãšã©ãŒåŠçã«ã¯äžè²«ãããã¿ãŒã³ã䜿çšãã
- æªãã§ãã¯ãŸãã¯åæåãããŠããªãããŒã¿ã«äŸåããæ¡ä»¶åå²ãé¿ãã
- 財åããžãã¯ã«é¢é£ãããã¹ãŠã®æ®µèœãšã»ã¯ã·ã§ã³ã«æç¢ºãªå ¥å£ãšåºå£ãããããšã確èªããŸãã
- åå¶åŸ¡æ§é ã®æå³ãææžåããããžãã¹ã«ãŒã«ã«ãªã³ã¯ããŸãã
SOXæ³ã¯ã究極çã«ã¯ä¿¡é Œã«åºã¥ããŠããŸããCOBOLã·ã¹ãã ã®å¶åŸ¡ãããŒãéçã«åæããããšã§ããã®ä¿¡é Œãå¯èŠåããéèæ©é¢ãèªä¿¡ãæã£ãŠæ£ç¢ºã«èŠå¶çŸ©åãéµå®ã§ããããæ¯æŽããŸãã
PCI-DSS 決æžãããŒã®æŽåæ§æ€èšŒ
ãã€ã¡ã³ãã«ãŒãæ¥çããŒã¿ã»ãã¥ãªãã£åºæºïŒPCI-DSSïŒã¯ãçµç¹ãã¯ã¬ãžããã«ãŒãååŒãšæ±ºæžããŒã¿ãã©ã®ããã«åãæ±ãããèŠå®ããŠããŸããéè¡ãå°å£²æ¥ãéèæ©é¢ã®ã¡ã€ã³ãã¬ãŒã äžã§çšŒåããCOBOLã¢ããªã±ãŒã·ã§ã³ã§ã¯ã å®å šã§ç£æ»å¯èœãªå¶åŸ¡ãã㌠ã¯åºæ¬çãªèŠä»¶ã§ããæ±ºæžããžãã¯ã®éçåæã«ããããã¹ãŠã®å®è¡ãã¹ãå¯èŠåãããé©åã«ä¿è·ãããã»ãã¥ãªãã£å¶åŸ¡ãåé¿ã§ããªãããšãä¿èšŒãããŸãã
PCI-DSSã³ã³ãã©ã€ã¢ã³ã¹ã«ãããŠå¶åŸ¡ãããŒãéèŠãªçç±
COBOLã«ããæ¯æãããžãã¯ã«ã¯ãéåžžãæ¿èªãäžæ£æ€åºã転èšãããŒã«ããã¯ãªã©ã®ã«ãŒãã³ãå«ãŸããŸããå¶åŸ¡ãããŒã®ç°åžžã«ã¯æ¬¡ã®ãããªãã®ããããŸãã
- åæåãããŠããªã倿°ã«ããæ€èšŒæé ã®ã¹ããã
- ãŸããªç¶æ³äžã§ã®èªèšŒããžãã¯ããã®ãµã€ã¬ã³ãçµäº
- äžé©åãªåãæ±ã
IForEVALUATEããã©ã«ããã©ã³ãããªãã¹ããŒãã¡ã³ã
äžæ£ãªãã©ã³ã¶ã¯ã·ã§ã³åŠçãäžæŽåãªç¶æ ããŸãã¯èŠå¶éåã«ã€ãªããå¯èœæ§ããããŸããPCI DSSã§ã¯ä»¥äžãèŠæ±ããŠããŸãã
- ã«ãŒãäŒå¡ããŒã¿ã«é¢ãããã¹ãŠã®çµè·¯ã¯æç¢ºã«å®çŸ©ãããç£èŠããã
- æå·åãèªèšŒããã°èšé²ã管çããããžãã¯ã¯å®è¡æã«é¿ããããªã
- ã·ã¹ãã ã¯ãããŒã¿ãå®å šã§æ€èšŒãããã«ãŒãã³ãéããŠã®ã¿åŠçãããããšãæ€èšŒããŸãã
ããããã®ã³ãŒã ãã¹ã«ãã£ãŠãã©ã³ã¶ã¯ã·ã§ã³ãèªèšŒãŸãã¯äžæ£è¡çºã®ã«ãŒã«ããã€ãã¹ã§ããå ŽåããŸããªãšããžæ¡ä»¶ã§ãã£ãŠããã·ã¹ãã ã¯éåç¶æ ã«ãªããŸãã
PCI-DSS ã«ãããéçå¶åŸ¡ãããŒè§£æã®äœ¿çš
éçã¢ãã©ã€ã¶ãŒã¯ãCOBOL ããã°ã©ã ã®å¶åŸ¡æ§é ããããã³ã°ããŠã次ã®äºé ãä¿èšŒããŸãã
- ãã¹ãŠã®æ€èšŒããã³æå·åã«ãŒãã³ã¯äžè²«ããŠåŒã³åºãããŸã
- ãã¹ãŠã®ãã©ã³ã¶ã¯ã·ã§ã³ãã¹ã«ã¯ãã°èšé²ãšæ¿èªããžãã¯ãå«ãŸããŠããŸã
- ãããªãæ¡é ãæ¡ä»¶ããæ©æã®ååŒæ¿èªãŸãã¯è¿åãèš±å¯ãããã®ã§ã¯ãªã
äŸïŒ
IF CARD-STATUS = "ACTIVE"
PERFORM PROCESS-TRANSACTION
ELSE
PERFORM REJECT-TRANSACTION
If CARD-STATUS ç¹å®ã®ãã¹ã§ã¯æ±ºããŠåæåãããªãã PROCESS-TRANSACTION äžé©åã«å®è¡ãããå¯èœæ§ããããŸããå¶åŸ¡ãããŒåæã¯ããããã®ãªã¹ã¯ãæ¬çªç°å¢ã§é¡åšåããåã«æ€åºããŸãã
ãããŒæŽåæ§ã®åŒ·å
PCI-DSS å¶åŸ¡ã¯ã次ã®ãããªå¶åŸ¡ãã㌠ã«ãŒã«ã«çŽæ¥ããããããŸãã
- 鲿¢ éæ§é ååºå£ æ¿èªãã§ãŒã³ãã
- 矩åå å®å
šãªæ¡ä»¶ä»ãè£åã ãšãã£ã
WHEN OTHERinEVALUATE - æ€èšŒäž 倱æçµè·¯ ååšããã ãã§ãªãããã¹ãå¯èœãªæ¡ä»¶äžã§ã¯ã¢ã¯ãã£ãã§ãã
- æ©å¯æ§ã®é«ãããŸãã¯éèŠãªæäœãæ±ããã¹ãŠã®ãã©ã³ãã®ãã°èšé²ãšç£æ»
éçããŒã«ã¯ãããã®ãããŒãã·ãã¥ã¬ãŒãããæ³šéä»ãã®å¶åŸ¡ãã㌠ã°ã©ããæäŸããç£æ»ãäŸµå ¥ãã¹ãã®ãµããŒãã®ããã®ã»ãã¥ãªãã£é¢é£ã®ããã¥ã¡ã³ããçæããŸãã
PCI-DSSã¬ããã³ã¹ã®ã¡ãªãã
- ãã¹ãŠã®ãã¹ãæ¯æãã«ãŒã«ã«æºæ ããŠããããšã®ä¿èšŒã匷å
- ææžåãããŠããªãããŸãã¯äžæ£ãªãã©ã³ã¶ã¯ã·ã§ã³ããžãã¯ã®ãªã¹ã¯ã軜æžããŸã
- å ·äœçãªææç©ã§å éšç£æ»ãšå€éšç£æ»ããµããŒã
- éçºäžãŸãã¯è¿ä»£åäžã«ãªã¹ã¯ã®é«ãå¶åŸ¡æ§é ã«ãã©ã°ãä»ããããšã§ä¿å®æ§ãåäžããŸãã
決æžã®äžçã§ã¯ãå¶åŸ¡ãããŒã®æœåšçãªé害ãéèè©æ¬ºãéåã«ãã眰éã«çŽæ¥ã€ãªããå¯èœæ§ããããŸããéçè§£æã«ãããCOBOLã·ã¹ãã ã®æ±ºæžããžãã¯ã¯ãæ©èœæ§ã ãã§ãªããéææ§ãšé²åŸ¡æ§ã確ä¿ãããŸãã
詳现ãªå¶åŸ¡ãããŒã®æŽå¯ã«ãã COBOL ã·ã¹ãã ã®ã»ãã¥ãªãã£ç¢ºä¿
ã¬ã¬ã·ãŒCOBOLã·ã¹ãã ã¯ãéèãå»çãèªç©ºããããŠæ¿åºæ©é¢ãšãã£ãæãããã·ã§ã³ã¯ãªãã£ã«ã«ãªã€ã³ãã©ã®äžéšãæ¯ãç¶ããŠããŸãããããããã®å€ããšè€éãã¯ãç¹æã®ãªã¹ã¯ã䌎ããŸãããã®å€ãã¯ãå¶åŸ¡ãããŒã®åŸ®åŠã§ããã°ãã°ç®ã«èŠããªãæ§é ã«èµ·å ããŠããŸãããµã€ã¬ã³ããã©ã³ããäžé©åãªãžã£ã³ããç¡éã«ãŒããåæåãããŠããªã倿°ãªã©ã¯ãæ€åºãããªããŸãŸæŸçœ®ããããšããœãããŠã§ã¢ã®æŽåæ§ãæãªãå¯èœæ§ããããŸãã
éçå¶åŸ¡ãããŒè§£æã¯ãã·ã¹ãã ã®åäœãã»ãã¥ãªãã£ãã³ã³ãã©ã€ã¢ã³ã¹ã«åœ±é¿ãäžããåã«ããããã®ç°åžžãçºèŠããããã®éèŠãªã¬ã³ãºãæäŸããŸããCOBOLããã°ã©ã ãæ®µèœãã»ã¯ã·ã§ã³ããµãããã°ã©ã ããžã§ãã¹ããªãŒã ã«ãŸããã£ãŠã©ã®ããã«å®è¡ããããã詳现ã«ã¢ãã«åããããšã§ãææ°ã®éçè§£ææè¡ã¯ã仿¥ã®éææ§ã®èŠæ±ã«åãããŠèšèšãããŠããªãã³ãŒãã«ãæçæ§ããããããŸãã
ãã®ã¬ãã«ã®åæã«æè³ããçµç¹ã¯ãæè¡çãªæŽå¯ä»¥äžã®ãã®ãåŸãŸãã ä¿¡é Œ 圌ãã®ã·ã¹ãã ã§ã¯ã 蚌æ èŠå¶åœå±ãžã®é©åæ§ãããã³ å埩å ã·ã¹ãã é害ãç£æ»ã®å€±æããŸãã¯å£æ» çãªè«çãšã©ãŒã®ãªã¹ã¯ããä¿è·ããŸãã
ããžã¿ã«ä¿¡é Œãããèªäœã®é貚ãšãªã£ãŠããæä»£ã«ãããŠãCOBOL ã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãŠã®å®è¡ãã¹ãçè§£ããŠå¶åŸ¡ããããšã¯ãåãªãã¹ããŒãã¡ã³ããã³ã¹ã§ã¯ãªããæ°žç¶çã«æ§ç¯ãããã·ã¹ãã ã®éèŠãªç®¡çã§ãã