Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

OOCOBOL ‚±[‚ȁ[


¡‚Í‚¶‚ß‚É

ˆÈ‘O‚Í COBOL97‚̈¤Ì‚Őe‚µ‚Ü‚ê‚Ä‚¢‚½ˆ¤ÌOOCOBOL‚ÍŒ»ÝCOBOL2000‚ƌĂ΂ê‚Ä‚¢‚é‚»‚¤‚Å‚·B
‚»‚ë‚»‚ëOOCOBOL‚à‚¶‚Á‚­‚茩‚Ä‚¨‚©‚È‚¯‚ê‚΂¢‚¯‚È‚¢‚È‚Ÿ ‚ƍl‚¦‚Ä‚¢‚Ä‹L‰¯‚É‚æ‚ê‚ÎISO‚ªÅVDocument‚ðcopy‘ã‹à‚Ì‚Ý‚Å$70‚­‚ç‚¢‚Å”z‚Á‚Ä‚¢‚½EEE‚³‚Ä‚Ç‚±‚¾‚Á‚½‚©‚È‚Ÿ‚Ÿ ‚ÆWWW‚ðœpœj‚µ‚Ä‚¢‚½‚ç
wISO/IEC CD 1.1 1989xIssued August 1,1997
‚È‚é‚à‚Ì‚ª“]‚ª‚Á‚Ä‚¢‚½‚Ì‚Å,Žv‚킸ƒ‰ƒbƒL[II‚Æget‚µ‚Ä‚«‚Ü‚µ‚½B‚±‚Ì•¶‘EEE³Ž®‚ȏoŠ‚ª‚È‚É‚à‚Ì‚©‚Í‚æ‚­‚Í‚í‚©‚ç‚È‚¢‚Ì‚Å‚·‚ª,‚©‚¬‚è‚È‚­‚»‚ê‚Á‚Û‚¢‚̂ŐM—p‚³‚¹‚Ä‚¢‚½‚¾‚¢‚Ä,Ž©•ª‚ª—‰ð‚µ‚Ä‚¢‚±‚¤‚©‚È ‚ÆŽv‚Á‚Ä‚¢‚Ü‚·EEE‚ ‚­‚Ü‚ÅŽ„‚ª—‰ð‚µ‚Đ®—‚µ‚½‚¢‚Ì‚ª–Ú“I‚Å‚·(Î)
‚±‚ê‚Í Microfocus‚ÌHP‚ÅŒ©‚‚©‚è‚Ü‚µ‚½!!
http://www.microfocus.com/Standards/
‚ÌŠ„‚ÆŒã‚ë‚Ì•û‚É Electronic draft for downloading - new version as of 19 March 1998 ‚Æ‚¢‚¤‚Æ‚±‚ë‚É‚ ‚è‚Ü‚·‚©‚çŠÖS‚Ì‚ ‚é•û‚ÍGET‚Å‚·!!

¡‚Ü‚¸‚̓AƒEƒgƒ‰ƒCƒ“`‚Ç‚ñ‚È‚à‚Ì‚È‚Ì Object-Oriented COBOL‚Á‚ā`

‚±‚ê‚ÍŒ»ÝISO‚Å•W€‰»ì‹Æ‚Ü‚Á‚½‚¾‚È‚©‚ÌŒ»sCOBOL85‚ÌŽŸŠúƒo[ƒWƒ‡ƒ“‚Å‚·B‚Ü‚¸‚ÍISO‚Å•W€‚ðì‚Á‚Ä‚Å‚à‚Á‚ÄANSI‚É‚È‚Á‚Ä,‚Å‚à‚Á‚Ä‚Å‚à‚Á‚ÄJIS-XEEE‚Æ‚È‚Á‚āEEE‚»‚¤‚È‚é‚ÆŠeŽÐH/Wƒ[ƒJ[‚Í‚±‚¼‚Á‚’‚̃Rƒ“ƒpƒCƒ‰‚ð’ñ‹Ÿ‚µ‚āEEE–{‰®‚É‚Í”L‚àŽÛŽq‚àwOOCOBOL“ü–åxwOOCOBOLŠTàxw‚º‚Á‚½‚¢‚í‚©‚é!OOCOBOLx‚ȁ`‚ñ‚Ä–{‚ª‚í‚ç‚í‚ç‚í‚ç‚Á‚Əo‚Ä‚­‚é‚ñ‚Å‚·‚æ(Î) “ú–{‚Å‚Í‚Ü‚¾‚Ü‚¾ƒ~ƒbƒVƒ‡ƒ“ƒNƒŠƒeƒBƒJƒ‹‚È•”•ª‚É‚ÍCOBOL‚ªŽg‚í‚ê‚Ä‚¢‚Ä,—vˆõ”‚à‚΂©‚É‚Í‚È‚è‚Ü‚¹‚ñB‚¢‚Ü‚Ü‚Å‚¾‚Á‚½‚çOOP‚Æ‚¢‚¦‚ÎC++‚Æ‚©JAVA‚Æ‚©Smalltalk‚Æ‚©‚ ‚é‚É‚Í‚ ‚é‚ñ‚Å‚·‚ª,‘½¨‚É–³¨‚̃VƒXƒeƒ€‚¨‚¶‚³‚ñ’B‚ɂ̓n[ƒhƒ‹‚ª‚‚­‚Ä(Î) ‚â‚Á‚Əo‚Ä‚«‚½‚Ì‚ªCOBOL‚Ö‚Ì“K—p‚Æ‚¢‚¤‚±‚Æ‚É‚È‚è‚Ü‚·B

‚½‚¾‚µ‚²’ˆÓ!!“–‚½‚è‘O‚̘b‚Å‚·‚ªCOBOL2000‚Á‚ăIƒuƒWƒFƒNƒgŽwŒüê—p‚ÌCOBOL‚Å‚Í‚ ‚è‚Ü‚¹‚ñBŒ»Ý‚ÌCOBOL‚ɑ΂·‚鐔‘½‚­‚̉ü‘P‹@”\‚âV‹@”\‚ª‚½‚­‚³‚ñ·‚荞‚Ü‚ê‚Ä‚¢‚Ü‚·BŒÂl“I‚ȍD‚«Œ™‚¢‚͉¡‚É‚¨‚¢‚Ä‚àƒrƒWƒlƒX•ª–ì‚Å‚ÌCOBOL‚Æ‚¢‚¤Œ¾Œê‚ÌŠ®¬“x‚Í‘Š“–‚‚¢!‚ÆŒ¾‚Á‚Ä‚æ‚¢‚Å‚µ‚傤!!³Šm‚É‚ÍCOBOL2000‚̐V‹@”\‚Ì’´–Ú‹Ê‹@”\‚Ì1‚‚ªƒIƒuƒWƒFƒNƒgŽwŒü‚Ì‹@”\‚È‚Ì‚Å‚·B

Œ‹˜_‚©‚猾‚Á‚Ä‚µ‚Ü‚¦‚΁EEEOOP‚Æ‚µ‚čŐæ’[EEE‚È‚Ç‚Æ‚ÍŒ¾‚¦‚Ü‚¹‚ñBÅæ’[‚É‚·‚邽‚߂ɂ͉ߋŽ‚Ì‚µ‚ª‚ç‚Ý‚ðØ‚èŽÌ‚Ä‚é•K—v‚ª‚ ‚è‚Ü‚·B‚Å‚àCOBOL‚͉ߋŽ‚Ì‚µ‚ª‚ç‚݁EEE‚Æ‚¢‚¤‚©Ž‘ŽYŒp³‚ª‘å‚«‚È“Á’¥‚È‚Ì‚Å‚·B‚±‚ê‚ÍOOCOBOL‚𓱓ü‚µ‚½ê‡‚ÉCOBOL85‚ÌŽ‘ŽY‚ª‚»‚Ì‚Ü‚ÜŽg—p‚Å‚«‚邱‚Æ‚ðˆÓ–¡‚µ‚Ä‚¢‚Ü‚·B‘å‹K–̓\ƒtƒgƒEƒGƒA‚Æ‚¢‚¤‚̂͐¶ŽY«‚âŠg’£«‚̍‚‚¢Œ¾Œê‚ªŠJ”­‚³‚ꂽ‚©‚ç‚ÆŒ¾‚Á‚Ä‚¨‚¢‚»‚ê‚Ƃ͈ڍs‚·‚é‚킯‚É‚Í‚¢‚«‚Ü‚¹‚ñB‚Å‚àOOCOBOL‚¾‚Á‚½‚çEEEƒ\ƒtƒgƒEƒGƒAŽ‘ŽY‚ð’iŠK“I‚ɍč\’z‚Å‚«‚é‚Ì‚Å‚·BV‹KŠJ”­ˆÄŒ‚É‚µ‚½‚Á‚āAŒ»ó‚Å‚ÍOOA‚âOOD‚ª‚Å‚«‚é—vˆõ‚âŽÀÑ‚ª\•ª‚Æ‚ÍŒ¾‚¦‚È‚¢‚Å‚µ‚傤!!‚»‚ñ‚ȏ󋵂ł͊‹Æ–±‚É‚¢‚«‚È‚èu‚¤[‚Õ!!v(OOP:ObjectOrientedPrograming ‚Ì”­‰¹)‚Æ‚¢‚¤‚킯‚É‚Í‚¢‚«‚Ü‚¹‚ñ‚ˁB‚Å‚àCOBOL85‚̐݌vŽÒ‚âƒvƒƒOƒ‰ƒ}‚Í‚¤‚¶‚Ⴄ‚¶‚á‚¢‚é‚Å‚µ‚傤‚©‚ç(Î) COBOL2000‚𓱓ü‚µ‚Ä‚à‚Ù‚Æ‚ñ‚Ç‚ÍCOBOL85•¶–@‚Å‹Lq‚µ‚āAu‚±‚±‚̓IƒuƒWƒFƒNƒgŽwŒü‚Ń`ƒƒƒŒƒ“ƒW‚µ‚Ă݂悤!!v‚Æ‚¢‚¤ƒAƒvƒ[ƒ`‚ªŽæ‚ê‚é‚킯‚Å‚·!!‚â‚è‚©‚½‚ðŠÔˆá‚í‚È‚¯‚ê‚΂¢‚½‚ê‚è‚‚­‚¹‚è‚Á‚ÄŠ´‚¶‚Å‚·‚Ë!‚±‚ꂱ‚»‚ª•W€‰»‚³‚ê‚Ä‚¢‚錾Œê‚Ì‹­‚Ý‚¾‚ÆŒ¾‚¦‚é‚Å‚µ‚傤!!

‚´‚Á‚­‚èOOCOBOL‚ÌŽd—l‚ð’­‚ß‚Ä‚Ý‚é‚ÆC++‚âSmaltalk‚âEiffel‚ÉŒ©—ò‚è‚·‚é‹@”\‚ª‚ ‚è‚Ü‚·EEE‚¯‚ê‚Ç‚àŸ‚Á‚Ä‚¢‚é‹@”\‚à‚ ‚è‚Ü‚·Bˆê”Ô‚Í“ú–{Œê‰»‚Ì–â‘è‚Å‚·!“ú–{‚ÌJIS‚Ő§’肳‚ê‚éCOBOL‚Å‚Í–¼‘O‚ÉŠ¿Žš‚ªŽg‚¦‚ÄŠ¿Žš‚ŃVƒ“ƒ{ƒŠƒbƒNƒfƒoƒbƒO‚Å‚«‚éŠÂ‹«‚ªŒ¾Œêƒ[ƒJ[‚©‚ç’ñ‹Ÿ‚³‚ê‚Ü‚·EEE‚»‚ñ‚È‚Ì‚ ‚½‚è‚Ü‚¦‚È‚ñ‚Å‚·‚ªCOBOLˆÈŠO‚ÌŒ¾Œê‚Å‚ÍŒ‹\[‚È–â‘è‚Å‚·BŒ©—ò‚è‚·‚é•”•ª‚́EEE‚Ü‚  ‚µ‚©‚½‚ª‚È‚¢‚Ì‚Å‚Í‚È‚¢‚Å‚µ‚傤‚©?‚Å‚à–Ú“I‚͐¶ŽY«‚âŠg’£«‚ð‚¢‚©‚ÉŒüã‚³‚¹‚é‚©A•iŽ¿‚ðŒüã‚³‚¹‚é‚© ‚Å‚·‚©‚çEEEOOP‚̐æ’[‚𑖂邱‚Æ‚Å‚Í‚È‚¢‚Í‚¸‚Å‚·!!ƒIƒuƒWƒFƒNƒgŽwŒü‚Æ‚¢‚¤l‚¦•û‚ª‚à‚½‚ç‚·ƒƒŠƒbƒg‚ð‹@”\‚Æ‚µ‚Ä’ñ‹Ÿ‚Å‚«‚ê‚΂¢‚¢‚Í‚¸‚Å‚·BŒ‹˜_“I‚ɂ͈ê’Ê‚è‚Ì‚±‚Æ‚ª‚Å‚«‚Ü‚·B‚Æ‚¢‚¤‚©ˆê”Ê“I‚ÈOMT‚âUML‚ðŽg—p‚µ‚ÄOOAAOOD‚µ‚½ê‡‚̐¬‰Ê•¨‚Æ‚µ‚ẴIƒuƒWƒFƒNƒgƒ‚ƒfƒ‹‚ðOOCOBOL‚Í•\Œ»‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B‚¾‚¢‚½‚¢‚Å‚«‚邱‚Æ‚ð‰Óð‘‚«‚É‚µ‚Ä‚Ý‚Ü‚µ‚傤!!

œƒNƒ‰ƒX‚ƃCƒ“ƒXƒ^ƒ“ƒX‚ÌŠT”O
œŒp³‚É‚æ‚鍷•ªƒvƒƒOƒ‰ƒ~ƒ“ƒO
œƒƒ\ƒbƒh‚ÌŽÕ•Á’è‹`
œ‘½‘Ԑ«‚É‚æ‚鏈—‚Ì‹¤’ʉ»
œSELFAthis‚à‚n‚j

‚Æ‚Ü‚ EEE‚È‚©‚È‚©‚È‚à‚Ì‚Å‚µ‚傤?(Î) ‚¢‚â‚Ÿ§ŒÀ‚à‚ ‚é‚ñ‚Å‚·‚ª¡‚͐G‚ê‚È‚¢‚Æ‚¢‚¤‚±‚Æ‚Å(Î)


SECTION.1 OOCOBOL\‘¢‚ÌŠT—ª

¡C++‚ł̃Tƒ“ƒvƒ‹

‚Ý‚È‚³‚ñ C++‚­‚ç‚¢‚Í’m‚Á‚Ä‚¢‚é‚Å‚µ‚傤!!(Î)‚Æ‚¢‚¤‘O’ñ‚ð‚¨‚©‚¹‚Ä‚à‚ç‚Á‚ăNƒ‰ƒX’è‹`‚ÌŠÈ’P‚È—á‚ð‚à‚ƂɁA‚»‚ꂪOOCOBOL‚ł͂ǂ̂悤‚É‚È‚é‚Ì‚©‚ðà–¾‚µ‚Ü‚·B

#include "—¬“®«—a‹à.h"
#include "ŒÚ‹q.h"
class •’Ê—a‹à :—¬“®«—a‹à{
private:
string “X”Ô;
string ŒûÀ”ԍ†;
int Žx•¥‰Â”\Žc‚;
ŒÚ‹q myCIF;
//‚»‚Ì‘¼‚Ì‘®«
public:
int “ü‹à(int IN“ü‹àŠz);//—¬“®«—a‹à‚Ì“ü‹à‚ðoverride(ŽÕ•Á’è‹`)‚µ‚Ä‚¢‚é
int o‹à(int INo‹àŠz);
//‚»‚Ì‘¼‚̃ƒ\ƒbƒh
};

‚·‚±‚µà–¾‚µ‚Ü‚·‚Æ ‚±‚±‚Å‚Í•’Ê—a‹à‚Æ‚¢‚¤ƒNƒ‰ƒX‚ð’è‹`‚·‚éEEE—˜—pŽÒ‚ªV‚½‚É•’Ê—a‹à‚Æ‚¢‚¤ƒf[ƒ^Œ^‚ðì‚é‚ƍl‚¦‚Ä‚­‚¾‚³‚¢Bclass ‚Æ‚¢‚¤‚Ì‚ÍC++‚Ì—\–ñŒê‚Łuclass ‚©‚ç }; ‚Ü‚Å‚ªƒNƒ‰ƒX’è‹`‚¾‚æ!!v‚Æ‚¢‚¤ˆÓ–¡‚Å‚·B‚±‚±‚Ì—á‚Å‚Í “ü‹à‚Æ‚¢‚¤ƒƒ\ƒbƒh‚Í’è‹`‚¾‚¯‚ÅŽÀ‘•‚Í‚³‚ê‚Ä‚Í‚¢‚Ü‚¹‚ñ‚ªEEE‚Ü‚ ×‚©‚¢‚Æ‚±‚ë‚͉¡‚É‚¨‚¢‚Ä‚¨‚«‚Ü‚µ‚傤B
class •’Ê—a‹à ‚Æ‚¢‚¤‚̂̓Nƒ‰ƒX–¼‚ª •’Ê—a‹à ‚Æ‚¢‚¤‚±‚Æ‚Å‚·B‚Ç‚¤‚â‚Á‚ÄŽg‚¤‚©?‚Å‚·‚ª —Ⴆ‚ΐ”’l‚╶Žš—ñ‚¾‚Á‚½‚ç

int i1,i2;
string s;

‚Æ‚©‚¢‚Ä ®”Œ^(int)‚̕ϐ”i1‚Æi2 •¶Žš—ñŒ^(string)‚̕ϐ”s ‚Æ—‰ð‚·‚é‚Ì‚Æ“¯‚¶‚悤‚É

•’Ê—a‹à ft1,ft2;

‚Æ‚©‚¯‚Î •’Ê—a‹àŒ^(•’Ê—a‹à)‚̕ϐ”ft1,ft2 ‚ª—pˆÓ‚³‚ꂽ!! ‚Æ‚¢‚¤‚±‚Æ‚É‚È‚è‚Ü‚·B
•’Ê—a‹àƒNƒ‰ƒX‚àƒIƒuƒWƒFƒNƒgŽwŒü‚̍l‚¦‚ɏ]‚¦‚΁A‘®«‚ƐU‚é•‘‚¢‚ðƒJƒvƒZƒ‹‰»‚µ‚½‚à‚Ì‚Æ‚¢‚¤‚±‚Æ‚É‚È‚è‚Ü‚·B‘®«(=ƒCƒ“ƒXƒ^ƒ“ƒX•Ï”)‚Æ‚µ‚Ä“X”ԁAŒûÀ”ԍ†AŽx•¥‰Â”\Žc‚‚»‚µ‚Ä‚¿‚å‚Á‚Æ•Ï‚í‚Á‚Ä‚¢‚éŒÚ‹qŒ^‚ÌmyCIF‚Æ‚ª‚ ‚è‚Ü‚·B‚±‚ê‚ç‘®«‚Í private: ‚Æ–¾Ž¦“I‚ÉŽw’肳‚ê‚Ä‚¢‚Ü‚·‚Ì‚ÅŠO•”‚©‚ç’¼ÚŽQÆ‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB‚±‚ꂪƒJƒvƒZƒ‹‰»‚Å‚ ‚èî•ñ‰B•Á‚ÆŒ¾‚í‚ê‚é‹@”\‚Å‚·B

ŒÚ‹qŒ^‚ª‚¿‚å‚Á‚Æ•Ï‚í‚Á‚Ä‚¢‚é‚Æ‚¢‚¤‚̂́A‚±‚ꂪOOA/OOD‚ÅŒ¾‚¤‚Æ‚±‚ë‚Ì HAS-AŠÖŒW(W–ñŠÖŒW) ‚ÆŒ¾‚í‚ê‚Ä‚¢‚é‚à‚̂ŁAŒÚ‹q‚Æ‚¢‚¤ƒNƒ‰ƒX‚ª‚Ç‚±‚©‚Å’è‹`‚³‚ê‚Ä‚¢‚Ä•’Ê—a‹àƒNƒ‰ƒX‚Å‚Í‚»‚ê‚ð•”•i‚Æ‚µ‚čė˜—p‚µ‚Ä‚¢‚é‚Æ‚¢‚¤‚±‚Æ‚É‚È‚é‚Ì‚Å‚·B“¯‚¶‚悤‚É•’Ê—a‹àƒNƒ‰ƒX‚à’N‚©‚Ù‚©‚̃Nƒ‰ƒX‚ªÄ—˜—p‚·‚邱‚Æ‚ªl‚¦‚ç‚ê‚Ü‚·B
ŽŸ‚ɐU‚é•‘‚¢(=ƒƒ\ƒbƒh)‚Å‚·‚ªA“ü‹à()‚Əo‹à() ‚ª’è‹`‚³‚ê‚Ä‚¢‚Ü‚·B‚±‚ê‚ç‚̃ƒ\ƒbƒh‚Í public: ‚ÆŽw’肳‚ê‚Ä‚¢‚Ü‚·B‚±‚̈Ӗ¡‚ÍŒöŠJ‚³‚ê‚Ä‚¢‚ÄŠO•”‚©‚çŽQÆ‚·‚邱‚Æ‚ª‚Å‚«‚é‚Æ‚¢‚¤ˆÓ–¡‚Å‚·B
“ü‹à ‚Æ‚¢‚¤ƒƒ\ƒbƒh‚̃Rƒƒ“ƒg‚É
u—¬“®«—a‹à‚Ì“ü‹à‚ðoverride(ŽÕ•Á’è‹`)‚µ‚Ä‚¢‚év
‚Æ‚¢‚¤‹Lq‚ª‚ ‚è‚Ü‚·‚ªŽÀ‚Í •’Ê—a‹à‚̓[ƒ‚©‚ç’è‹`‚µ‚Ä‚¢‚é‚Ì‚Å‚Í‚È‚­‚Ä—¬“®«—a‹à‚Æ‚¢‚¤ƒNƒ‰ƒX’è‹`‚ðƒx[ƒX‚É‚µ‚č쐬‚µ‚Ä‚¢‚é‚Ì‚Å‚·B‚»‚ê‚Í

class •’Ê—a‹à :—¬“®«—a‹à{

‚Ì :—¬“®«—a‹à ‚Æ‚¢‚¤‚Æ‚±‚ë‚Å‚·B‚±‚±‚ð“Ç‚ñ‚Å‚Ý‚é‚Æ
uclass ‚Æ‚µ‚Ä’è‹`‚·‚é •’Ê—a‹à ‚Í —¬“®«—a‹à ‚©‚çŒp³‚µ‚Ä’è‹`‚³‚ê‚év
‚Æ‚¢‚¤‚±‚Æ‚É‚È‚è‚Ü‚·B‚»‚±‚Å “ü‹àƒƒ\ƒbƒh‚ªoverride‚ƃRƒƒ“ƒg‚µ‚Ä‚¢‚é‚̂́A“ü‹àƒƒ\ƒbƒh‚͐eƒNƒ‰ƒX‚Å‚ ‚é—¬“®«—a‹à‚Å’è‹`‚³‚ê‚Ä‚¢‚é‚Ì‚Å•’Ê—a‹à‚ł́A“ü‹àƒƒ\ƒbƒh‚ð’è‹`‚µ‚È‚­‚Ä‚à—¬“®«—a‹à‚Ì“ü‹àƒƒ\ƒbƒh‚ÍŒp³‚µ‚Ä‚à‚Á‚Ä‚¢‚邱‚Æ‚É‚È‚é‚Ì‚Å‚·‚ªA‚Ü‚ ‚»‚Ì‚Ü‚Ü‚Å‚ÍŽg‚¦‚È‚¢EEE‚ÆŒ¾‚Á‚½——R‚Å •’Ê—a‹à—p‚Ì“ü‹àƒƒ\ƒbƒh‚ð’è‹`‚µ’¼‚·!!‚Æ‚¢‚¤‚±‚Æ‚É‚È‚è‚Ü‚·B‚ŁEEEo‹àƒƒ\ƒbƒh‚Í—¬“®«—a‹à‚Å‚Í’è‹`‚³‚ê‚Ä‚¢‚È‚©‚Á‚½‚±‚Æ‚É‚µ‚Ü‚·B‚È‚º‚±‚ñ‚È‚â‚₱‚µ‚¢—á‚É‚·‚é‚Ì‚©?‚ÆŒ¾‚¤‚ÆOOCOBOL‚ł̓ƒ\ƒbƒh‚ðV‹K‚É’è‹`‚·‚éê‡‚ƁA’è‹`‚µ’¼‚·(ŽÕ•Á’è‹`)ê‡‚Å‚Í‚¿‚å‚Á‚Æ‚¾‚¯‘‚«•û‚ªˆá‚¤‚©‚ç‚È‚ñ‚Å‚·B
ÅŒã‚ɐ擪‚Ì

#include "—¬“®«—a‹à.h"
#include "ŒÚ‹q.h"

‚Æ‚¢‚¤‚Ì‚Í•’Ê—a‹à‚𗬓®«—a‹à‚©‚çŒp³‚·‚邽‚߁A—¬“®«—a‹à‚É‚Í‚Ç‚ñ‚È‘®«‚⃁ƒ\ƒbƒh‚ª’è‹`‚³‚ê‚Ä‚¢‚é‚©‚ðƒRƒ“ƒpƒCƒ‰‚ª’m‚é•K—v‚ª‚ ‚邽‚߂ɏ‘‚­•K—v‚ª‚ ‚é‚Ì‚Å‚·BmyCIF‚̌ڋqƒNƒ‰ƒX‚à“¯—l‚Å‚·BŒÚ‹qƒNƒ‰ƒX‚Ì’è‹`‚Í
ŒÚ‹q.h ‚Æ‚¢‚¤ƒwƒbƒ_ƒtƒ@ƒCƒ‹‚É’è‹`‚³‚ê‚Ä‚¢‚é‚Æ‚¢‚¤‚±‚Æ‚É‚È‚è‚Ü‚·B
(1998/4/29)


¡ƒTƒ“ƒvƒ‹‚ðOOCOBOL‚ŏ‘‚¢‚½ê‡

‚Å‚Í‚³‚­‚³‚­‚Á‚Æ

IDENTIFICATION DIVISION.
CLASS-ID. •’Ê—a‹à INHERITS —¬“®«—a‹à.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
REPOSITORY.
CLASS —¬“®«—a‹à.
CLASS ŒÚ‹q.

FACTORY.
PROCEDURE DIVISION.
METHOD-ID. ŒûÀŠJÝ.
DATA DIVISION.
LINKAGE SECTION.
01 IN“X”Ô PIC X(3).
01 INŒûÀ”ԍ† PIC X(7).
01 INmyCIF USAGE IS OBJECT REFERENCE ŒÚ‹q.
01 RESULT PIC 9(3).
PROCEDURE DIVISION USING IN“X”Ô INŒûÀ”ԍ† INmyCIF RETURNING RESULT.
ŒûÀŠJÝ-start.
EXIT METHOD.
END METHOD.
END FACTORY.

OBJECT.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 INSTANCE-DATA.
03 “X”Ô
03 ŒûÀ”ԍ†
03 Žx•¥‰Â”\Žc‚
03 myCIF USAGE IS OBJECT REFERENCE ŒÚ‹q.
PROCEDURE DIVISION.
METHOD-ID. “ü‹à OVERRIDE.
DATA DIVISION.
LINKAGE SECTION.
01 IN“ü‹àŠz PIC 9(12).
01 RESULT PIC 9(3).
PROCEDURE DIVISION USING IN“ü‹àŠz RETURNING RESULT.
“ü‹à-start.
EXIT METHOD.
END METHOD.

METHOD-ID. o‹à.
DATA DIVISION.
LINKAGE SECTION.
01 INo‹àŠz PIC 9(12).
01 RESULT PIC 9(3).
PROCEDURE DIVISION USING INo‹àŠz RETURNING RESULT.
o‹à-start.
EXIT METHOD.
END METHOD.

END OBJECT.
END CLASS.

C++‚Æ”ä‚ׂé‚ƁEEE’·‚­‚È‚Á‚Ä‚µ‚Ü‚Á‚Ä‚¢‚Ü‚·(Î) ‚Ü‚  ‚µ‚©‚½‚ª‚È‚¢‚Å‚·‚ª ‘‚¯‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·!!
(1998/5/6)


¡ƒTƒ“ƒvƒ‹OOCOBOL‚̉ðà

CLASS-ID. •’Ê—a‹à INHERITS —¬“®«—a‹à.

OOCOBOL‚ł͏]—ˆ‚̂悤‚ɃƒCƒ“ƒvƒƒOƒ‰ƒ€‚ð‘‚­‚±‚Æ‚à‚Å‚«‚Ü‚·BC++‚Ì—á‚ɂ̓Nƒ‰ƒX’è‹`‚Í‚ ‚Á‚Ä‚à void main() ‚Æ‚¢‚Á‚½ƒvƒƒOƒ‰ƒ€‚ÌŠJŽn“_‚Í‚ ‚è‚Ü‚¹‚ñ‚Å‚µ‚½BOOCOBOL‚à“¯—l‚ŁACLASS-ID ‚Ə‘‚­‚ƃNƒ‰ƒX’è‹`‚¾‚¯‚ª‚³‚ê‚Ä‚¢‚éƒvƒƒOƒ‰ƒ€‚Æ‚¢‚¤‚±‚Æ‚É‚È‚è‚Ü‚·B

CLASS-ID ‚É‘±‚­ •’Ê—a‹à ‚ªƒNƒ‰ƒX–¼‚Æ‚È‚è‚Ü‚·B

CLASS-ID. •’Ê—a‹à.

‚Ə‘‚¯‚Î •’Ê—a‹àƒNƒ‰ƒX‚ðƒ[ƒ‚©‚ç’è‹`‚·‚邱‚Æ‚É‚È‚è‚Ü‚·B—á‚Å‚Í INHERITS ‚Æ‚ ‚è‚Ü‚·‚Ì‚Å —¬“®«—a‹à ‚Æ‚¢‚¤ƒNƒ‰ƒX‚©‚çŒp³‚µ‚Ä •’Ê—a‹à ƒNƒ‰ƒX‚ð’è‹`‚·‚邱‚Æ‚É‚È‚è‚Ü‚·B

REPOSITORY.
CLASS —¬“®«—a‹à.
CLASS ŒÚ‹q.

C++‚Ì#include‚É‘Š“–‚µ‚Ü‚·B•’Ê—a‹à ƒNƒ‰ƒX‚ōė˜—p‚·‚éƒNƒ‰ƒX•”•i‚ð‚·‚×‚ÄREPOSITORY‹å‚Ő錾‚µ‚Ü‚·B‘ΏۂƂȂé‚Ì‚ÍHASAŠÖŒW‚Æ‚µ‚Ä•ïŠÜ‚·‚éƒNƒ‰ƒX•”•i(ŒÚ‹q)‚¾‚¯‚Å‚Í‚È‚­ISAŠÖŒW‚̏ãˆÊƒNƒ‰ƒX(—¬“®«—a‹à)‚à‘‚©‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‚ǂ̃Nƒ‰ƒX‚ð•”•i‚Æ‚µ‚čė˜—p‚·‚é‚©‚ðƒRƒ“ƒpƒCƒ‰‚É‹³‚¦‚Ä‚ ‚°‚È‚¯‚ê‚Η¬“®«—a‹à‚ª‚ǂ̂悤‚ÈŽå‘®«‚ð’è‹`‚µ‚Ä‚¢‚é‚Ì‚©‚Æ‚©‚ǂ̂悤‚ȃƒ\ƒbƒh‚ª‚ ‚é‚Ì‚©‚ª‚í‚©‚炸AƒRƒ“ƒpƒCƒ‹Žž‚ÉŒŸ¸‚·‚邱‚Æ‚ª‚Å‚«‚È‚¢‚½‚ß‚Å‚·B

FACTORY.
OBJECT.

CLASS-ID‚ÅŽn‚Ü‚Á‚½ƒNƒ‰ƒX’è‹`‚Í END CLASS. ‚ŏI‚í‚è‚Ü‚·‚ªA‚³‚ç‚É‚»‚Ì“à•”‚Í‘å‚«‚­ FACTORY‚©‚çEND FACTORY.‚Ü‚Å‚ÌFACTORY‹å ‚Æ OBJECT‚©‚çEND OBJECT‚Ü‚Å‚ÌOBJECT‹å ‚Ì2‚‚̋傩‚琬‚è—§‚Á‚Ä‚¢‚Ü‚·B
OOCOBOL‚ł̓Nƒ‰ƒX‚ÉŠÖ‚í‚é‘®«‚â‘€ì‚Ì’è‹`‚Æ ƒCƒ“ƒXƒ^ƒ“ƒX(=ƒIƒuƒWƒFƒNƒg)‚ÉŠÖ‚í‚é‘®«‚â‘€ì‚Ì’è‹`‚ª‚Å‚«‚Ü‚·BƒNƒ‰ƒX‚ÉŠÖ‚·‚é•”•ª‚ªFACTORY‚ŁAƒCƒ“ƒXƒ^ƒ“ƒX‚ÉŠÖ‚·‚é•”•ª‚ªOBJECT‚Æ‚È‚è‚Ü‚·B

FACTORY‚ł̓Nƒ‰ƒX‚ÉŠÖ‚·‚é‘®«‚Æ‘€ì‚ª‚Å‚«‚Ü‚·‚ªA—á‚ł̓Nƒ‰ƒX‘®«‚Ì’è‹`‚ª‚ ‚è‚Ü‚¹‚ñB‚à‚µƒNƒ‰ƒX‘®«‚ª•K—v‚È‚ç

FACTORY.
DATA DIVISION.
WORKING-STARAGE SECTION.
01 •’Ê—a‹àŒûÀ‘” PIC 9(5).

‚Æ‚¢‚Á‚½Š´‚¶‚É‚È‚è‚Ü‚·B—á‚Å‚Í

FACTORY.
PROCEDURE DIVISION.

‚Æ‚È‚Á‚Ä‚¢‚é‚̂ŃNƒ‰ƒXƒƒ\ƒbƒh‚ª’è‹`‚³‚ê‚Ä‚¢‚邱‚Æ‚É‚È‚è‚Ü‚·B

METHOD-ID. ŒûÀŠJÝ.


ƒƒ\ƒbƒh–¼‚ÍMETHOD-ID‚ÅŽw’肵A‚±‚±‚ł́uŒûÀŠJÝv‚Æ‚È‚è‚Ü‚·B

DATA DIVISION.
LINKAGE SECTION.
01 IN“X”Ô PIC X(3).
01 INŒûÀ”ԍ† PIC X(7).
01 INmyCIF USAGE IS OBJECT REFERENCE ŒÚ‹q.
01 RESULT PIC 9(3).

‘±‚­DATA DIVISION‚ł̓ƒ\ƒbƒh‚̈ø”‚â–ß‚è’lAŒûÀŠJÝƒƒ\ƒbƒh“à‚ÅŽg—p‚³‚ê‚é‹ÇŠ•Ï”‚ð’è‹`‚µ‚Ü‚·B
INmyCIF‚͌ڋqƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ªˆø”‚Å“n‚³‚ê‚Ä‚«‚Ü‚·BOOCOBOL‚Å‚ÍC++‚Ƃ͈قȂèŒÚ‹qƒCƒ“ƒXƒ^ƒ“ƒX‚»‚Ì‚à‚̂𖄂ߍž‚Þ‚Ì‚Å‚Í‚È‚­ ƒIƒuƒWƒFƒNƒgŽQÆ(OBJECT REFERENCE)‚ðŽg—p‚µ‚Ü‚·BƒIƒuƒWƒFƒNƒgŽQÆ‚̓IƒuƒWƒFƒNƒg‚»‚Ì‚à‚Ì‚Å‚Í‚È‚­ƒIƒuƒWƒFƒNƒg‚ðŽw‚µŽ¦‚·‚à‚Ì ‚Æ‚¢‚¤ƒCƒ[ƒW‚É‚È‚è‚Ü‚·BƒIƒuƒWƒFƒNƒgŽQÆ‚Æ‚µ‚Ä’è‹`‚µ‚½‚©‚ç‚ÆŒ¾‚Á‚ČڋqƒCƒ“ƒXƒ^ƒ“ƒX‚ª—pˆÓ‚³‚ê‚Ä‚¢‚é‚킯‚Å‚Í‚ ‚è‚Ü‚¹‚ñB’N‚©‚ªŒÚ‹qƒNƒ‰ƒX‚̃Nƒ‰ƒXƒƒ\ƒbƒh‚ðŒÄ‚яo‚µ‚ăCƒ“ƒXƒ^ƒ“ƒX‚𐶐¬‚µ‚āA‚»‚Ì‚ ‚ƃIƒuƒWƒFƒNƒgŽQÆ‚ª¶¬‚³‚ꂽƒCƒ“ƒXƒ^ƒ“ƒX‚ðŽw‚µŽ¦‚·‚悤‚ɏ‰Šú‰»‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B‚¿‚å‚Á‚Ɛ摖‚é‚Æ SET statement‚ðŽg—p‚µ‚Ü‚·B

01 INmyCIF USAGE IS OBJECT REFERENCE ŒÚ‹q.


OBJECT REFERENCE‚ÌŒã‚ë‚ɃNƒ‰ƒX–¼‚Æ‚µ‚Ä ŒÚ‹q ‚Ə‘‚©‚ê‚Ä‚¢‚Ü‚·‚ªA‚±‚ê‚ÍINmyCIF‚ªŒÚ‹qƒCƒ“ƒXƒ^ƒ“ƒXê—p‚̃IƒuƒWƒFƒNƒgŽQÆ‚Æ‚¢‚¤‚±‚Æ‚Å‚·BINmyCIF‚𕁒ʗa‹àƒNƒ‰ƒX‚â–¾×ƒNƒ‰ƒX‚̃IƒuƒWƒFƒNƒgŽQÆ‚Æ‚µ‚Ä‚ÍŽg‚¦‚È‚¢‚悤‚ɁA‚‚܂èŒ^•t‚¯‚𐧌À‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B‚à‚µ‚à

01 INmyCIF USAGE IS OBJECT REFERENCE.

‚̂悤‚ɃNƒ‰ƒX–¼‚ªŽw’肳‚ê‚Ä‚¢‚È‚¢‚ƁAINmyCIF‚Í”CˆÓ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚̃IƒuƒWƒFƒNƒgŽQÆ‚ɂȂ邱‚Æ‚ª‚Å‚«‚é‚Æ‚¢‚¤‚±‚Æ‚É‚È‚è‚Ü‚·B

PROCEDURE DIVISION USING IN“X”Ô INŒûÀ”ԍ† INmyCIF RETURNING RESULT.

‚±‚±‚ł́AIN“X”ԁAINŒûÀ”ԍ†AINmyCIF‚ª“ü—͈ø”
RESULT‚ª–ß‚è’l‚É‚È‚è‚Ü‚·B

END METHOD.

‚±‚±‚Ü‚Å‚ª1‚‚̃ƒ\ƒbƒh‚Æ‚¢‚¤‚±‚Æ‚É‚È‚è‚Ü‚·B

END FACTORY.

‚±‚±‚Ü‚Å‚ªFACTORY‚ŁAƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚⃁ƒ\ƒbƒh‚Ì’è‹`‚ªI‚í‚è‚Ü‚·B
‚‚¬‚́EEE

OBJECT.‚É‚Í‚¶‚Ü‚Á‚Ä
END OBJECT.‚Ü‚Å

‚±‚±‚̓Cƒ“ƒXƒ^ƒ“ƒX‚ÉŠÖ‚·‚é’è‹`•”•ª‚Å‚·BƒCƒ“ƒXƒ^ƒ“ƒX•Ï”‚ƃCƒ“ƒXƒ^ƒ“ƒXƒƒ\ƒbƒh‚ª’è‹`‚³‚ê‚Ü‚·‚ªA

DATA DIVISION.

‚¢‚«‚È‚èDATA DIVISION‚©‚ç‚Í‚¶‚Ü‚Á‚Ä‚¢‚Ü‚·‚ªA‚±‚ꂪƒCƒ“ƒXƒ^ƒ“ƒX•Ï”‚ð‹Lq‚·‚éêŠ‚Å‚·B‚»‚Ì9s‚ ‚½‚艺‚É‚àDATA DIVISION‚ª‚ ‚è‚Ü‚·‚ª‚±‚ê‚̓ƒ\ƒbƒh‚Ì“à•”‚É‚ ‚éDATA DIVISION‚сƒ\ƒbƒh‚̋ǏŠ•Ï”‚⃁ƒ\ƒbƒh‚̈ø”‚ð’è‹`‚·‚é‚à‚Ì‚Å‚·B¡‰ñ‚́u“ü‹àvuo‹àv‚Å‚ÍLINKAGE-SECTION‚Ȃ̂ňø”‚̃Tƒ“ƒvƒ‹‚Æ‚¢‚¤‚±‚Æ‚É‚È‚è‚Ü‚·B

WORKING-STORAGE SECTION.
01 INSTANCE-DATA.
03 “X”Ô
03 ŒûÀ”ԍ†
03 Žx•¥‰Â”\Žc‚
03 myCIF USAGE IS OBJECT REFERENCE ŒÚ‹q.

ƒCƒ“ƒXƒ^ƒ“ƒX•Ï”‚Æ‚µ‚Ä‚Í“X”ԁAŒûÀ”ԍ†AŽx•¥‰Â”\Žc‚AmyCIF‚ª’è‹`‚³‚ê‚Ä‚¢‚Ü‚·B‚±‚ê‚Í•’Ê—a‹àƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚²‚Æ‚É‚±‚ê‚ç‚̃Cƒ“ƒXƒ^ƒ“ƒX•Ï”—̈悪Šm•Û‚³‚ê‚Ä‚¢‚é‚Æ‚¢‚¤‚±‚Æ‚É‚È‚é‚Ì‚Å‚·B

PROCEDURE DIVISION.

‚±‚ꂪƒCƒ“ƒXƒ^ƒ“ƒXƒƒ\ƒbƒh‚Ì’è‹`‚ÌŽn‚Ü‚è‚Å‚·B

METHOD-ID. “ü‹à OVERRIDE.

‚±‚±‚ÌOVERRIDE‚Ƃ͏ãˆÊƒNƒ‰ƒX‚É‚ ‚½‚é—¬“®«—a‹à‚É‚à“ü‹àƒƒ\ƒbƒh‚ª’è‹`‚³‚ê‚Ä‚¢‚āA—¬“®«—a‹à‚©‚ç”h¶‚µ‚č쐬‚µ‚½•’Ê—a‹àƒNƒ‰ƒX‚Í‚È‚É‚à’è‹`‚µ‚È‚­‚Ä‚à—¬“®«—a‹à‚Ì“ü‹àƒƒ\ƒbƒh‚ðŽ‚Á‚Ä‚¢‚邱‚Æ‚É‚Í‚È‚è‚Ü‚·EEE‚ªA‚½‚Æ‚¦‚Ώˆ—‚ªˆá‚¤‚Æ‚¢‚Á‚½——R‚Å•’Ê—a‹à—p‚ɍì‚è’¼‚·(‚±‚ê‚ðŽÕ‚Ö‚¢’è‹`‚ÆŒ¾‚¢‚Ü‚·)‚½‚ß‚ÉOVERRIDE‚Ə‘‚¢‚Ä‚¢‚é‚Ì‚Å‚·B
‚ ‚Əo‹àƒƒ\ƒbƒh‚à’è‹`‚³‚ê‚Ä‚¢‚Ü‚·B

END CLASS.

‚±‚±‚ÅCLASS’è‹`‚ªI‚í‚é‚Æ‚¢‚¤‚킯‚Å‚·B
ŠÈ’P‚Å‚·‚ˁEEE‚¿‚å‚Á‚Æ’·‚¢‚Å‚·‚¯‚Ç(Î)

(1998/5/17)


¡ƒvƒƒOƒ‰ƒ€\‘¢

COBOL‚É‚Í6‚‚̃Rƒ“ƒpƒCƒ‹ƒOƒ‹[ƒv‚ª—pˆÓ‚³‚ê‚Ü‚·B

Eprogram-prototype
Efunction-prototype
Eprogram-definition
Efunction-definition
Eclass-definition
Einterface-definition

‚ŁA’ʏ팩‚©‚¯‚éCOBOL‚Íprogram-definition‚Æ‚È‚èAOOCOBOL‚̏ꍇ‚Íclass-definition‚Æ‚¢‚¤‚±‚Æ‚É‚È‚è‚Ü‚·B6‚‚͂»‚ꂼ‚êƒRƒ“ƒpƒCƒ‹’PˆÊ‚Æ‚µ‚Ä•Ê•¨‚Å‚·‚©‚çƒIƒuƒWƒFƒNƒg‚Ì•”•i(ƒNƒ‰ƒX’è‹`)‚Æ‚»‚Ì•”•i‚ðŽg—p‚·‚éƒNƒ‰ƒCƒAƒ“ƒgƒvƒƒOƒ‰ƒ€(’ʏ팩‚©‚¯‚éCOBOL)‚Æ‚Í•Ê•¨‚É‚È‚è‚Ü‚·B
C++‚̂悤‚Éclass’è‹`‚Æmain()‚Æ‚ª‹¤‘¶‚·‚鏑‚«•û‚͏o—ˆ‚È‚¢‚±‚Æ‚É‚È‚è‚Ü‚·B

—á)class’è‹`‚Æmain()‚ª‹¤‘¶
class OrdinaryAccount{
}
void main(){
OrdinaryAccount myAccount;
}

‚Ü‚½C++‚Å‚Í1‚‚̿°½ƒtƒ@ƒCƒ‹‚É”CˆÓ‚̐”‚Ìclass’è‹`‚ª‰Â”\‚Å‚·‚ªAOOCOBOL‚Å‚Í1‚‚̃vƒƒOƒ‰ƒ€‚É1‚‚Ìclass’è‹`‚µ‚©o—ˆ‚Ü‚¹‚ñB
Œµ–§‚ÉŒ¾‚¤‚ƁEEEã‹LƒRƒ“ƒpƒCƒ‹ƒOƒ‹[ƒv‚Í

[{program-definition‚âclass-definition‚È‚Ç}¥¥¥]

‚Æ’è‹`‚³‚ê‚Ä‚¢‚é‚Ì‚Å1‚‚̃tƒ@ƒCƒ‹‚ɂ́AƒNƒ‰ƒX’è‹`‚ð3‚‚Ƃ©main‚É‘Š“–‚·‚éƒNƒ‰ƒCƒAƒ“ƒgƒvƒƒOƒ‰ƒ€‚ð2‚‚Ƃ©‚ð‚ ‚í‚¹‚Ä‹Lq‚Å‚«‚»‚¤‚Å‚·B

à–¾ãAprogram-definition‚Ì‚±‚Æ‚ðƒvƒƒOƒ‰ƒ€’è‹`COBOLAclass-definition‚Ì‚±‚Æ‚ðƒNƒ‰ƒX’è‹`COBOL‚ƌĂԂ±‚Æ‚É‚·‚é‚ƁA
ƒvƒƒOƒ‰ƒ€’è‹`COBOL‚̃vƒƒOƒ‰ƒ€\‘¢‚Í

[IDENTIFICATION DIVISION.]
PROGRAM-ID. program-name-1 [AS literal-1][IS {[COMMON] PROGRAM].
EEE


‚Æ‚È‚è
ƒNƒ‰ƒX’è‹`COBOL‚̃vƒƒOƒ‰ƒ€\‘¢‚Í

[IDENTIFICATION DIVISION.]
CLASS-ID. class-name-1 [AS literal-1]
[INHERITS FROM {class-name-2}¥¥¥]
[USING {parameter-name-1}¥¥¥].
[environment-division]
[[IDENTIFICATION DIVISION.]
FACTORY.
[options-paragraph]
[environment-division]
[data-division]
[PROCEDURE DIVISION.
[method-definition]¥¥¥]
END FACTORY.
[[IDENTIFICATION DIVISION.]
OBJECT.
[options-paragraph]
[environment-division]
[data-division]
[PROCEDURE DIVISION.
[method-definition]¥¥¥]
END OBJECT.
END CLASS class-name-1.


‚Æ‚È‚è‚Ü‚·B

[IDENTIFICATION DIVISION.]

‚Ì[]‚͏ȗª‚Å‚«‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·BÈ—ª‚µ‚Ä‚µ‚Ü‚Á‚Ä‚¢‚«‚È‚è

CLASS-ID. class-name-1

‚©‚珑‚«Žn‚ß‚Ä‚à‚æ‚¢‚Æ‚¢‚¤‚±‚Æ‚É‚È‚è‚Ü‚·B‚Å‚·‚©‚ç\•¶ãÈ—ª‚Å‚«‚È‚¢OOC0BOL‚̍\‘¢‚Í

CLASS-ID. class-name-1.
FACTORY.
END FACTORY.
OBJECT.
END OBJECT.
END CLASS class-name-1.

‚Æ‚È‚é‚Í‚¸‚Å‚·B‚±‚±‚Å–¾”’‚Å‚·‚ªPROCEDURE DIVISION‚ª‘¶Ý‚µ‚Ä‚¢‚Ü‚¹‚ñ(³Šm‚ɂ́AFACTORY‚âOBJECT‚Ì’i—Ž‚É‚Í‹Lq‚Å‚«‚Ü‚·)‚©‚çƒvƒƒOƒ‰ƒ€ŽÀsŠJŽn“_‚ƂȂ郁ƒCƒ“‚Í‘¶Ý‚µ‚È‚¢‚Æ‚¢‚¤‚±‚Æ‚É‚È‚è‚Ü‚·B
ŽŸ‚̓Nƒ‰ƒX’è‹`‚̍\‘¢‚ðDIVISION‚²‚ÆŠTŠÏ‚µ‚Ä‚¢‚«‚Ü‚µ‚傤B

 IDENTIFICATION DIVISION.

œPROGRAM-ID‚Ì‘ã‚í‚è‚ÉCLASS-ID‚ðŽg—p‚·‚éB‚Æ‚¢‚¤‚±‚Æ‚ÍC++‚̂悤‚ɃNƒ‰ƒX’è‹`‚Æmain()‚Æ‚ª“¯ˆêƒvƒƒOƒ‰ƒ€‚É‚Í‹Lq‚Å‚«‚È‚¢‚Æ‚¢‚¤‚±‚Æ‚Å‚·B

œŒp³‚̏ꍇ‚ÍINHERITS‚ÅŽw’肵‚Ü‚·B‘½dŒp³‚͉”\‚ŁAƒNƒ‰ƒX–¼‚ÌŽw’菇˜‚Í“¯ˆê‚̃ƒ\ƒbƒh–¼‚ª•\‚ꂽê‡‚ɐæ‚É‹Lq‚µ‚Ä‚ ‚éƒNƒ‰ƒX‚Ì‚à‚Ì‚ª—LŒø‚Æ‚È‚è‚Ü‚·B

CLASS-ID. •’Ê—a‹à INHERITS —¬“®«—a‹à .


 ENVIRONMENT DIVISION.
ƒNƒ‰ƒX‚ðÄ—˜—p‚·‚éê‡‚ÍCONFIGURATION SECTION‚ÌREPOSITORY’i—Ž‚ɃNƒ‰ƒX‚ð‹Lq‚µ‚Ü‚·BHASAŠÖŒW‚̃Nƒ‰ƒX‚¾‚¯‚Å‚Í‚È‚­ISAŠÖŒW‚Æ‚µ‚Ă̐eƒNƒ‰ƒX‚àŽw’è‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B

REPOSITORY.
CLASS —¬“®«—a‹à.
CLASS ŒÚ‹q IS 'CIF'.


ŒÚ‹q‚ªinternal name‚ŁACIF ‚ªexternal name‚Æ‚È‚è‚Ü‚·B
’ʏí‚ÌCOBOL‚âƒIƒuƒWƒFƒNƒg‚̃Nƒ‰ƒCƒAƒ“ƒgƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªƒNƒ‰ƒX’è‹`COBOL‚̃IƒuƒWƒFƒNƒg‚ðŽg—p‚µ‚½‚¢ê‡‚àREPOSITORY’i—Ž‚ð‹Lq‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‚±‚ÌRIPOSITORY‚ÍIR(InterfaceRepository)‚ƌĂ΂ê‚Ä‚¢‚Ü‚·B

 DATA DIVISION.
œ’è‹`‚Å‚«‚éêŠ‚Í3‚©Š‚ ‚è‚Ü‚·B

EFACTORY’i—Ž‚ÌDATA DIVISION
‚±‚±‚Å’è‹`‚³‚ê‚é‚ƃNƒ‰ƒX•Ï”‚Æ‚È‚è‚Ü‚·B
EOBJECT’i—Ž‚ÌDATA DIVISION
‚±‚±‚Å’è‹`‚³‚ê‚é‚ƃCƒ“ƒXƒ^ƒ“ƒX•Ï”‚Æ‚È‚è‚Ü‚·B
EMETHOD’è‹`‚Ì’†‚ÌDATA DIVISION
‚±‚±‚Å’è‹`‚³‚ê‚é‚ƃƒ\ƒbƒh‚Ì’†‚ł̋ǏŠ•Ï”‚Æ‚È‚è‚Ü‚·B
›LOCAL-STORAGE SECTION.
‰i‘±‹@”\‚Í‚È‚¢
›WORKING-STORAGE SECTION.
‰i‘±‹@”\‚ ‚è:ƒƒ\ƒbƒh‚ðEXIT‚µ‚Ä‚à’l‚ÍŽc‚Á‚Ä‚¢‚Ü‚·BÄ“x“¯‚¶ƒƒ\ƒbƒh‚ÉENTER‚µ‚½ê‡‘O‰ñ‚Ì’l‚ªŽc‚Á‚Ä‚¢‚Ü‚·B
›LINKAGE SECTION.
ˆø”‚â–ß‚è’l‚ð’è‹`‚µ‚Ä‚¨‚«‚Ü‚·B


œƒNƒ‰ƒX‚̍ė˜—p

01 ‚v•’Ê—a‹à USAGE IS OBJECT REFERENCE.
01 ‚v“–À—a‹à USAGE IS OBJECT REFERENCE “–À—a‹à.

ƒf[ƒ^€–Ú‚Æ‚µ‚ăIƒuƒWƒFƒNƒg‚ð—˜—p‚·‚éê‡AOOCOBOL‚Å‚ÍOBJECT REFERENCE‚ðŽg—p‚µ‚Ü‚·BC++‚̂悤‚ɃCƒ“ƒXƒ^ƒ“ƒX‚»‚Ì‚à‚̂𒼐ږ„‚ߍž‚ñ‚ÅŽg‚¤‚±‚Æ‚Í‚Å‚«‚Ü‚¹‚ñBƒIƒuƒWƒFƒNƒg‚ÍFACTORY‚Ìnewƒƒ\ƒbƒh‚̂悤‚ȃCƒ“ƒXƒ^ƒ“ƒX¶¬ƒƒ\ƒbƒh‚É‚æ‚Á‚č쐬‚µ‚Ä‚¨‚«A‚»‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð‚³‚·‚悤‚ÉOBJECT REFERENCE‚ð‰Šú‰»‚µ‚Ü‚·B
OBJECT REFERENCE‚É‚Ítyped‚Æuntyped‚ª‚ ‚èAtyped‚Å‚ÍŽw’肳‚ꂽƒNƒ‰ƒX‚¾‚¯‚Å‚Í‚È‚­‰ºˆÊ‚̃Nƒ‰ƒX‚ðŽw‚µŽ¦‚·‚±‚Æ‚ª‰Â”\‚Å‚·Buntyped‚̏ꍇ‚͂ǂ̂悤‚ȃNƒ‰ƒX‚Å‚àŽw‚µŽ¦‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·B


 PROCEDURE DIVISION.
œƒƒ\ƒbƒh’è‹`
OOCOBOL‚̃ƒ\ƒbƒh‚ÍC++‚ÅŒ¾‚¤‚Æ‚±‚ë‚Ìvirtual‚©‚Âpublic‚Æ‚È‚è‚Ü‚·B

METHOD-ID. “ü‹à OVERRIDE.

ãˆÊƒNƒ‰ƒX‚̃ƒ\ƒbƒh‚ð‘‚«Š·‚¦‚éê‡(ŽÕ•Á’è‹`)‚́AOVERRIDE‚ðŽw’肵‚Ü‚·B‚Ü‚½Šeƒƒ\ƒbƒh‚̓ƒ\ƒbƒh–¼(—á‚ł́u“ü‹àv)‚ÆŽ©•ªŽ©g‚ÌDATA DIVISION‚ÆPROCEDURE DIVISION‚ðŽ‚Á‚Ä‚¢‚Ü‚·BDATA DIVISION‚Í“–ŠYƒƒ\ƒbƒh‚̋ǏŠ•Ï”‚ð’è‹`‚µ‚Ü‚·Bƒƒ\ƒbƒh‚ւ̈ø”‚â–ß‚è’l‚à‚±‚±‚Å’è‹`‚µ‚Ü‚·B

œƒIƒuƒWƒFƒNƒgŽQÆ(OBJECT REFERENCE)‚̐ݒè•û–@
‘å‚«‚­‚Í2’Ê‚è‚ ‚è‚Ü‚·B
(1)FACTORY‚Ìnewƒƒ\ƒbƒh‚Ì–ß‚è’l‚Æ‚µ‚Đݒ肷‚éB

01 ‚v•’Ê USAGE IS OBJECT REFERENCE •’Ê—a‹à.
EEE
INVOKE •’Ê—a‹à "new" RETURNING ‚v•’Ê.

‚v•’ʂɂ͐¶¬‚³‚ꂽ•’Ê—a‹àƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ւ̃IƒuƒWƒFƒNƒgŽQÆ‚ª‘ã“ü‚³‚ê‚Ä‚¢‚Ü‚·B
(2)SET•¶‚Őݒ肷‚éB

ESET A TO B.

ƒIƒuƒWƒFƒNƒgŽQÆA‚ðƒIƒuƒWƒFƒNƒgŽQÆB‚ªŽw‚µ‚Ä‚¢‚é‚à‚̂ɐݒ肷‚é

ESET A TO NULL.

ƒIƒuƒWƒFƒNƒgŽQÆA‚ðNULL‚ɐݒ肷‚é(‚Ç‚±‚àŽw‚µŽ¦‚µ‚Ä‚¢‚È‚¢‚悤‚É‚·‚é)

ESET A TO SELF.

ƒIƒuƒWƒFƒNƒgŽQÆA‚ðŽ©ŒÈ‚ðŽQÆ‚·‚é‚悤‚ɐݒ肷‚é

œMessagePassing request•û–@(ƒIƒuƒWƒFƒNƒgŽQÆ‚É—˜—p‚ÌŽd•û)
2‚‚̋Lq•û–@‚ª‚ ‚è‚Ü‚·B

EINVOKE •’Ê—a‹à "“ü‹à" USING PARAM.
E•’Ê—a‹à::“ü‹à(PARAM).

invoke‚ł̓ƒ\ƒbƒh–¼î•ñ‚ð•Ï”‚ÉŠi”[‚·‚邱‚Æ‚à‰Â”\‚Å‚·BƒŠƒeƒ‰ƒ‹‚Å‚ ‚ê‚Îstatic link‚Æ‚È‚èAdataname‚Å‚ ‚ê‚Îdynamic link‚Æ‚È‚è‚Ü‚·B

¡ˆÈã