ÈOÍ COBOL97̤ÌÅeµÜêÄ¢½¤ÌOOCOBOLÍ»ÝCOBOL2000ÆÄÎêĢ黤ŷB
»ë»ëOOCOBOLà¶Áè©Ä¨©È¯ê΢¯È¢È Æl¦Ä¢ÄL¯ÉæêÎISOªÅVDocumentðcopyãàÌÝÅ$70ç¢ÅzÁÄ¢½EEE³ÄDZ¾Á½©È
ÆWWWðpjµÄ¢½ç
wISO/IEC CD 1.1 1989xIssued
August 1,1997
Èéà̪]ªÁÄ¢½ÌÅ,ví¸bL[IIÆgetµÄ«Üµ½B±Ì¶EEE³®ÈoªÈÉàÌ©ÍæÍí©çÈ¢ÌÅ·ª,©¬èÈ»êÁÛ¢ÌÅMp³¹Ä¢½¾¢Ä,©ªªðµÄ¢±¤©È
ÆvÁĢܷEEE ÜŪðµÄ®µ½¢ÌªÚIÅ·(Î)
±êÍ MicrofocusÌHPũ©èܵ½!!
http://www.microfocus.com/Standards/
ÌÆãëÌûÉ Electronic draft for downloading - new version
as of 19 March 1998 Æ¢¤Æ±ëÉ èÜ·©çÖSÌ éûÍGETÅ·!!
±êÍ»ÝISOÅW»ìÆÜÁ½¾È©Ì»sCOBOL85Ìúo[WÅ·BܸÍISOÅWðìÁÄÅàÁÄANSIÉÈÁÄ,ÅàÁÄÅàÁÄJIS-XEEEÆÈÁÄEEE»¤ÈéÆeÐH/W[J[ͱ¼ÁÄÌRpCðñµÄEEE{®ÉÍLàÛqàwOOCOBOLüåxwOOCOBOLTàxwºÁ½¢í©é!OOCOBOLxÈ`ñÄ{ªíçíçíçÁÆoÄéñÅ·æ(Î)
ú{ÅÍܾܾ~bVNeBJȪÉÍCOBOLªgíêÄ¢Ä,võàΩÉÍÈèܹñB¢ÜÜžÁ½çOOPÆ¢¦ÎC++Æ©JAVAÆ©SmalltalkÆ© éÉÍ éñÅ·ª,½¨É³¨ÌVXe¨¶³ñBÉÍn[hªÄ(Î)
âÁÆoÄ«½ÌªCOBOLÖÌKpÆ¢¤±ÆÉÈèÜ·B
½¾µ²Ó!!½èOÌbÅ·ªCOBOL2000ÁÄIuWFNgwüêpÌCOBOLÅÍ èܹñB»ÝÌCOBOLÉηé½ÌüP@\âV@\ª½³ñ·èÜêĢܷBÂlIÈD«¢Í¡É¨¢ÄàrWlXªìÅÌCOBOLÆ¢¤¾êÌ®¬xÍ¢!ƾÁÄæ¢Åµå¤!!³mÉÍCOBOL2000ÌV@\Ì´ÚÊ@\Ì1ªIuWFNgwüÌ@\ÈÌÅ·B
_©ç¾ÁĵܦÎEEEOOPƵÄÅæ[EEEÈÇÆ;¦Ü¹ñBÅæ[É·é½ßÉÍß̵ªçÝðØèÌÄéKvª èÜ·BÅàCOBOLÍß̵ªçÝEEEÆ¢¤©Yp³ªå«ÈÁ¥ÈÌÅ·B±êÍOOCOBOLð±üµ½êÉCOBOL85ÌYª»ÌÜÜgpÅ«é±ÆðÓ¡µÄ¢Ü·BåKÍ\tgEGAÆ¢¤ÌͶY«âg£«Ì¢¾êªJ³ê½©çƾÁĨ¢»êÆÍÚs·éí¯ÉÍ¢«Ü¹ñBÅàOOCOBOL¾Á½çEEE\tgEGAYðiKIÉÄ\zÅ«éÌÅ·BVKJÄɵ½ÁÄA»óÅÍOOAâOODªÅ«évõâÀѪ\ªÆ;¦È¢Åµå¤!!»ñÈóµÅÍî²Æ±É¢«Èèu¤[Õ!!v(OOP:ObjectOrientedPrograming
̹)Æ¢¤í¯ÉÍ¢«Ü¹ñËBÅàCOBOL85ÌÝvÒâvO}ͤ¶á¤¶á¢éŵ天ç(Î)
COBOL2000ð±üµÄàÙÆñÇÍCOBOL85¶@ÅLqµÄAu±±ÍIuWFNgwüÅ`WµÄÝæ¤!!vÆ¢¤Av[`ªæêéí¯Å·!!â詽ðÔáíȯê΢½êè¹èÁÄ´¶Å·Ë!±ê±»ªW»³êÄ¢é¾êÌݾƾ¦éŵå¤!!
´ÁèOOCOBOLÌdlðßÄÝéÆC++âSmaltalkâEiffelÉ©òè·é@\ª èÜ·EEE¯êÇàÁÄ¢é@\à èÜ·BêÔÍú{ê»ÌâèÅ·!ú{ÌJISŧè³êéCOBOLÅͼOÉ¿ªg¦Ä¿ÅV{bNfobOū髪¾ê[J[©çñ³êÜ·EEE»ñÈÌ ½èܦÈñÅ·ªCOBOLÈO̾êÅÍ\[ÈâèÅ·B©òè·éªÍEEEÜ
µ©½ªÈ¢ÌÅÍȢŵ天?ÅàÚIͶY«âg£«ð¢©Éüã³¹é©Ai¿ðüã³¹é©
Å·©çEEEOOPÌæ[ðé±ÆÅÍȢ͸ŷ!!IuWFNgwüÆ¢¤l¦ûªà½ç·bgð@\ƵÄñÅ«ê΢¢Í¸Å·B_IÉÍêÊè̱ƪūܷBÆ¢¤©êÊIÈOMTâUMLðgpµÄOOAAOODµ½ê̬ʨƵÄÌIuWFNgfðOOCOBOLÍ\»·é±ÆªÅ«Ü·B¾¢½¢Å«é±ÆðÓð«ÉµÄÝܵå¤!!
NXÆCX^XÌTO
p³Éæé·ªvO~O
\bhÌÕÁè`
½Ô«Éæé̤ʻ
SELFAthisànj
ÆÜ EEEÈ©È©ÈàÌŵå¤?(Î) ¢â§Àà éñÅ·ª¡ÍGêȢƢ¤±ÆÅ(Î)
Ýȳñ C++ç¢ÍmÁÄ¢éŵå¤!!(Î)Æ¢¤Oñ𨩹ÄàçÁÄNXè`ÌÈPÈáðàÆÉA»êªOOCOBOLÅÍÇÌæ¤ÉÈéÌ©ðྵܷB
#include "¬®«aà.h"
#include "Úq.h"
class Êaà :¬®«aà{
private:string XÔ;public:
string ûÀÔ;
int x¥Â\c;
Úq myCIF;
//»Ì¼Ì®«int üà(int INüàz);//¬®«aàÌüàðoverride(ÕÁè`)µÄ¢é};
int oà(int INoàz);
//»Ì¼Ì\bh
·±µà¾µÜ·Æ ±±ÅÍÊaàÆ¢¤NXðè`·éEEEpÒªV½ÉÊaàÆ¢¤f[^^ðìéÆl¦Ä¾³¢Bclass
Æ¢¤ÌÍC++Ì\ñêÅuclass ©ç }; ÜŪNXè`¾æ!!vÆ¢¤Ó¡Å·B±±ÌáÅÍ
üàÆ¢¤\bhÍè`¾¯ÅÀͳêÄܹ͢ñªEEEÜ ×©¢Æ±ë͡ɨ¢Ä¨«Üµå¤B
class Êaà Æ¢¤ÌÍNX¼ª Êaà Æ¢¤±ÆÅ·BǤâÁÄg¤©?Å·ª
á¦Îlâ¶ñ¾Á½ç
int i1,i2;
string s;
Æ©¢Ä ®^(int)ÌÏi1Æi2 ¶ñ^(string)ÌÏs Æð·éÌƯ¶æ¤É
Êaà ft1,ft2;
Æ©¯Î Êaà^(Êaà)ÌÏft1,ft2 ªpÓ³ê½!! Æ¢¤±ÆÉÈèÜ·B
ÊaàNXàIuWFNgwüÌl¦É]¦ÎA®«ÆUé¢ðJvZ»µ½àÌÆ¢¤±ÆÉÈèÜ·B®«(=CX^XÏ)ƵÄXÔAûÀÔAx¥Â\c»µÄ¿åÁÆÏíÁÄ¢éÚq^ÌmyCIFƪ èÜ·B±ê箫Í
private: ƾ¦IÉwè³êĢܷÌÅO©ç¼ÚQÆ·é±ÆÍūܹñB±êªJvZ»Å èîñBÁƾíêé@\Å·B
Úq^ª¿åÁÆÏíÁÄ¢éÆ¢¤ÌÍA±êªOOA/OODž¤Æ±ëÌ HAS-AÖW(WñÖW)
ƾíêÄ¢éàÌÅAÚqÆ¢¤NXªÇ±©Åè`³êÄ¢ÄÊaàNXÅÍ»êðiƵÄÄpµÄ¢éÆ¢¤±ÆÉÈéÌÅ·B¯¶æ¤ÉÊaàNXàN©Ù©ÌNXªÄp·é±Æªl¦çêÜ·B
ÉUé¢(=\bh)Å·ªAüà()Æoà() ªè`³êĢܷB±êçÌ\bhÍ
public: Æwè³êĢܷB±ÌÓ¡ÍöJ³êÄ¢ÄO©çQÆ·é±ÆªÅ«éÆ¢¤Ó¡Å·B
üà Æ¢¤\bhÌRgÉ
u¬®«aàÌüàðoverride(ÕÁè`)µÄ¢év
Æ¢¤Lqª èÜ·ªÀÍ ÊaàÍ[©çè`µÄ¢éÌÅÍÈĬ®«aàÆ¢¤NXè`ðx[XɵÄ쬵ĢéÌÅ·B»êÍ
class Êaà :¬®«aà{
Ì :¬®«aà Æ¢¤Æ±ëÅ·B±±ðÇñÅÝéÆ
uclass ƵÄè`·é Êaà Í ¬®«aà ©çp³µÄè`³êév
Æ¢¤±ÆÉÈèÜ·B»±Å üà\bhªoverrideÆRgµÄ¢éÌÍAüà\bhÍeNXŠ鬮«aàÅè`³êÄ¢éÌÅÊaàÅÍAüà\bhðè`µÈÄମ«aàÌüà\bhÍp³µÄàÁÄ¢é±ÆÉÈéÌÅ·ªAÜ »ÌÜÜÅÍg¦È¢EEEƾÁ½RÅ
ÊaàpÌüà\bhðè`µ¼·!!Æ¢¤±ÆÉÈèÜ·BÅEEEoà\bhͬ®«aàÅÍè`³êĢȩÁ½±ÆɵܷBȺ±ñÈââ±µ¢áÉ·éÌ©?ƾ¤ÆOOCOBOLÅÍ\bhðVKÉè`·éêÆAè`µ¼·(ÕÁè`)êÅÍ¿åÁƾ¯«ûªá¤©çÈñÅ·B
ÅãÉæªÌ
#include "¬®«aà.h"
#include "Úq.h"
Æ¢¤ÌÍÊaà𬮫aà©çp³·é½ßA¬®«aàÉÍÇñÈ®«â\bhªè`³êÄ¢é©ðRpCªméKvª é½ßÉKvª éÌÅ·BmyCIFÌÚqNXà¯lÅ·BÚqNXÌè`Í
Úq.h Æ¢¤wb_t@CÉè`³êÄ¢éÆ¢¤±ÆÉÈèÜ·B
(1998/4/29)
Åͳ³ÁÆ
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 INXÔ PIC X(3).
01 INûÀÔ PIC X(7).
01 INmyCIF USAGE IS OBJECT REFERENCE Úq.
01 RESULT PIC 9(3).
PROCEDURE DIVISION USING INXÔ INûÀÔ INmyCIF RETURNING RESULT.
ûÀJÝ-start.
EXIT METHOD.END METHOD.
END FACTORY.
OBJECT.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 INSTANCE-DATA.
03 XÔPROCEDURE DIVISION.
03 ûÀÔ
03 x¥Â\c
03 myCIF USAGE IS OBJECT REFERENCE Úq.
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 INoàz PIC 9(12).
01 RESULT PIC 9(3).
PROCEDURE DIVISION USING INoàz RETURNING RESULT.
oà-start.
EXIT METHOD.END METHOD.
END OBJECT.
END CLASS.
C++Æä×éÆEEE·ÈÁĵÜÁĢܷ(Î) Ü µ©½ªÈ¢Å·ª
¯éÆ¢¤±ÆÅ·!!
(1998/5/6)
CLASS-ID. Êaà INHERITS ¬®«aà.
OOCOBOLÅÍ]Ìæ¤ÉCvOð±ÆàÅ«Ü·BC++ÌáÉÍNXè`Í ÁÄà
void main() Æ¢Á½vOÌJn_Í èܹñŵ½BOOCOBOLà¯lÅACLASS-ID
ÆÆNXè`¾¯ª³êÄ¢évOÆ¢¤±ÆÉÈèÜ·B
CLASS-ID ɱ Êaà ªNX¼ÆÈèÜ·B
CLASS-ID. Êaà.
ƯΠÊaàNXð[©çè`·é±ÆÉÈèÜ·BáÅÍ INHERITS
Æ èÜ·ÌÅ ¬®«aà Æ¢¤NX©çp³µÄ Êaà NXðè`·é±ÆÉÈèÜ·B
REPOSITORY.
CLASS ¬®«aà.
CLASS Úq.
C++Ì#includeɵܷBÊaà NXÅÄp·éNXið·×ÄREPOSITORYåÅ龵ܷBÎÛÆÈéÌÍHASAÖWƵÄïÜ·éNXi(Úq)¾¯ÅÍÈISAÖWÌãÊNX(¬®«aà)à©È¯êÎÈèܹñBÇÌNXðiƵÄÄp·é©ðRpCɳ¦Ä °È¯êά®«aàªÇÌæ¤È宫ðè`µÄ¢éÌ©Æ©ÇÌæ¤È\bhª éÌ©ªí©ç¸ARpCɸ·é±ÆªÅ«È¢½ßÅ·B
FACTORY.
OBJECT.
CLASS-IDÅnÜÁ½NXè`Í END CLASS. ÅIíèÜ·ªA³çÉ»ÌàÍå«
FACTORY©çEND FACTORY.ÜÅÌFACTORYå Æ OBJECT©çEND OBJECTÜÅÌOBJECTå
Ì2ÂÌå©ç¬è§ÁĢܷB
OOCOBOLÅÍNXÉÖí鮫âìÌè`Æ CX^X(=IuWFNg)ÉÖí鮫âìÌè`ªÅ«Ü·BNXÉַ骪FACTORYÅACX^XÉַ骪OBJECTÆÈèÜ·B
FACTORYÅÍNXÉַ鮫ÆìªÅ«Ü·ªAáÅÍNX®«Ìè`ª èܹñBàµNX®«ªKvÈç
FACTORY.
DATA DIVISION.
WORKING-STARAGE SECTION.
01 ÊaàûÀ PIC 9(5).
Æ¢Á½´¶ÉÈèÜ·BáÅÍ
FACTORY.
PROCEDURE DIVISION.
ÆÈÁÄ¢éÌÅNX\bhªè`³êÄ¢é±ÆÉÈèÜ·B
METHOD-ID. ûÀJÝ.
\bh¼ÍMETHOD-IDÅwèµA±±ÅÍuûÀJÝvÆÈèÜ·B
DATA DIVISION.
LINKAGE SECTION.
01 INXÔ PIC X(3).
01 INûÀÔ PIC X(7).
01 INmyCIF USAGE IS OBJECT REFERENCE Úq.
01 RESULT PIC 9(3).
±DATA DIVISIONÅÍ\bhÌøâßèlAûÀJÝ\bhàÅgp³êéÇÏðè`µÜ·B
INmyCIFÍÚqNXÌCX^XªøÅn³êÄ«Ü·BOOCOBOLÅÍC++ÆÍÙÈèÚqCX^X»ÌàÌðßÞÌÅÍÈ
IuWFNgQÆ(OBJECT REFERENCE)ðgpµÜ·BIuWFNgQÆÍIuWFNg»ÌàÌÅÍÈIuWFNgðwµ¦·àÌ
Æ¢¤C[WÉÈèÜ·BIuWFNgQÆƵÄè`µ½©çƾÁÄÚqCX^XªpÓ³êÄ¢éí¯ÅÍ èܹñBN©ªÚqNXÌNX\bhðÄÑoµÄCX^X𶬵ÄA»Ì ÆIuWFNgQƪ¶¬³ê½CX^Xðwµ¦·æ¤Éú»·éKvª èÜ·B¿åÁÆæéÆ
SET statementðgpµÜ·B
01 INmyCIF USAGE IS OBJECT REFERENCE Úq.
OBJECT REFERENCEÌãëÉNX¼ÆµÄ Úq Æ©êĢܷªA±êÍINmyCIFªÚqCX^XêpÌIuWFNgQÆÆ¢¤±ÆÅ·BINmyCIFðÊaàNXâ¾×NXÌIuWFNgQÆƵÄÍg¦È¢æ¤ÉAÂÜè^t¯ð§À·é±ÆªÅ«Ü·Bàµà
01 INmyCIF USAGE IS OBJECT REFERENCE.
Ìæ¤ÉNX¼ªwè³êĢȢÆAINmyCIFÍCÓÌCX^XÌIuWFNgQÆÉÈé±ÆªÅ«éÆ¢¤±ÆÉÈèÜ·B
PROCEDURE DIVISION USING INXÔ INûÀÔ INmyCIF RETURNING RESULT.
±±ÅÍAINXÔAINûÀÔAINmyCIFªüÍø
RESULTªßèlÉÈèÜ·B
END METHOD.
±±ÜŪ1ÂÌ\bhÆ¢¤±ÆÉÈèÜ·B
END FACTORY.
±±ÜŪFACTORYÅANXÌCX^Xâ\bhÌè`ªIíèÜ·B
¬ÍEEE
OBJECT.ÉͶÜÁÄ
END OBJECT.ÜÅ
±±ÍCX^XÉÖ·éè`ªÅ·BCX^XÏÆCX^X\bhªè`³êÜ·ªA
DATA DIVISION.
¢«ÈèDATA DIVISION©çͶÜÁĢܷªA±êªCX^XÏðLq·éêÅ·B»Ì9s ½èºÉàDATA
DIVISIONª èÜ·ª±êÍ\bhÌàÉ éDATA DIVISIONÅ\bhÌÇÏâ\bhÌøðè`·éàÌÅ·B¡ñÌuüàvuoàvÅÍLINKAGE-SECTIONÈÌÅøÌTvÆ¢¤±ÆÉÈèÜ·B
WORKING-STORAGE SECTION.
01 INSTANCE-DATA.
03 XÔ
03 ûÀÔ
03 x¥Â\c
03 myCIF USAGE IS OBJECT REFERENCE Úq.
CX^XÏƵÄÍXÔAûÀÔAx¥Â\cAmyCIFªè`³êĢܷB±êÍÊaàNXÌCX^X²ÆɱêçÌCX^XÏÌæªmÛ³êÄ¢éÆ¢¤±ÆÉÈéÌÅ·B
PROCEDURE DIVISION.
±êªCX^X\bhÌè`ÌnÜèÅ·B
METHOD-ID. üà OVERRIDE.
±±ÌOVERRIDEÆÍãÊNXÉ ½é¬®«aàÉàüà\bhªè`³êÄ¢ÄA¬®«aà©çh¶µÄ쬵½ÊaàNXÍÈÉàè`µÈÄମ«aàÌüà\bhðÁÄ¢é±ÆÉÍÈèÜ·EEEªA½Æ¦Îªá¤Æ¢Á½RÅÊaàpÉìè¼·(±êðÕÖ¢è`ƾ¢Ü·)½ßÉOVERRIDEƢĢéÌÅ·B
Æoà\bhàè`³êĢܷB
END CLASS.
±±ÅCLASSè`ªIíéÆ¢¤í¯Å·B
ÈPÅ·ËEEE¿åÁÆ·¢Å·¯Ç(Î)
(1998/5/17)
COBOLÉÍ6ÂÌRpCO[vªpÓ³êÜ·B
Eprogram-prototype
Efunction-prototype
Eprogram-definition
Efunction-definition
Eclass-definition
Einterface-definition
ÅAÊí©©¯éCOBOLÍprogram-definitionÆÈèAOOCOBOLÌêÍclass-definitionÆ¢¤±ÆÉÈèÜ·B6ÂÍ»ê¼êRpCPÊƵÄʨŷ©çIuWFNgÌi(NXè`)Æ»Ìiðgp·éNCAgvO(Êí©©¯éCOBOL)ÆÍʨÉÈèÜ·B
C++Ìæ¤Éclassè`Æmain()ƪ¤¶·é«ûÍoÈ¢±ÆÉÈèÜ·B
á)classè`Æmain()ª¤¶
class OrdinaryAccount{
}
void main(){
OrdinaryAccount myAccount;
}
ܽC++ÅÍ1ÂÌ¿°½t@CÉCÓÌÌclassè`ªÂ\Å·ªAOOCOBOLÅÍ1ÂÌvOÉ1ÂÌclassè`µ©oܹñB
µ§É¾¤ÆEEEãLRpCO[vÍ
[{program-definitionâclass-definitionÈÇ}¥¥¥]
Æè`³êÄ¢éÌÅ1ÂÌt@CÉÍANXè`ð3ÂÆ©mainÉ·éNCAgvOð2ÂÆ©ð í¹ÄLqÅ«»¤Å·B
à¾ãAprogram-definitioṉÆðvOè`COBOLAclass-definitioṉÆðNXè`COBOLÆÄÔ±ÆÉ·éÆA
vOè`COBOLÌvO\¢Í
[IDENTIFICATION DIVISION.]
PROGRAM-ID. program-name-1 [AS literal-1][IS {[COMMON] PROGRAM].
EEE
ÆÈè
NXè`COBOLÌvO\¢Í
[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ÉÍLqÅ«Ü·)©çvOÀsJn_ÆÈéCͶݵȢƢ¤±ÆÉÈèÜ·B
ÍNXè`Ì\¢ðDIVISION²ÆTϵĢ«Üµå¤B
PROGRAM-IDÌãíèÉCLASS-IDðgp·éBÆ¢¤±ÆÍC++Ìæ¤ÉNXè`Æmain()ƪ¯êvOÉÍLqūȢƢ¤±ÆÅ·B
p³ÌêÍINHERITSÅwèµÜ·B½dp³ÍÂ\ÅANX¼ÌwèͯêÌ\bh¼ª\ê½êÉæÉLqµÄ éNXÌà̪LøÆÈèÜ·B
CLASS-ID. Êaà INHERITS ¬®«aà .
ENVIRONMENT DIVISION.
NXðÄp·éêÍCONFIGURATION SECTIONÌREPOSITORYiÉNXðLqµÜ·BHASAÖWÌNX¾¯ÅÍÈISAÖWƵÄÌeNXàwè·éKvª èÜ·B
REPOSITORY.
CLASS ¬®«aà.
CLASS Úq IS 'CIF'.
Úqªinternal nameÅACIF ªexternal nameÆÈèÜ·B
ÊíÌCOBOLâIuWFNgÌNCAgAvP[VªNXè`COBOLÌIuWFNgðgpµ½¢êàREPOSITORYiðLqµÈ¯êÎÈèܹñB±ÌRIPOSITORYÍIR(InterfaceRepository)ÆÄÎêĢܷB
DATA DIVISION.
è`Å«éêÍ3© èÜ·B
EFACTORYiÌDATA DIVISION
±±Åè`³êéÆNXÏÆÈèÜ·B
EOBJECTiÌDATA DIVISION
±±Åè`³êéÆCX^XÏÆÈèÜ·B
EMETHODè`ÌÌDATA DIVISION
±±Åè`³êéÆ\bhÌÅÌÇÏÆÈèÜ·B
LOCAL-STORAGE SECTION.
i±@\ÍÈ¢
WORKING-STORAGE SECTION.
i±@\ è:\bhðEXITµÄàlÍcÁĢܷBÄx¯¶\bhÉENTERµ½êOñÌlªcÁĢܷB
LINKAGE SECTION.
øâßèlðè`µÄ¨«Ü·B
NXÌÄp
01 vÊaà USAGE IS OBJECT REFERENCE.
01 vÀaà USAGE IS OBJECT REFERENCE Àaà.
f[^ÚƵÄIuWFNgðp·éêAOOCOBOLÅÍOBJECT REFERENCEðgpµÜ·BC++Ìæ¤ÉCX^X»ÌàÌð¼ÚßñÅg¤±ÆÍūܹñBIuWFNgÍFACTORYÌnew\bhÌæ¤ÈCX^X¶¬\bhÉæÁÄ쬵Ĩ«A»ÌCX^Xð³·æ¤ÉOBJECT
REFERENCEðú»µÜ·B
OBJECT REFERENCEÉÍtypedÆuntypedª èAtypedÅÍwè³ê½NX¾¯ÅÍȺÊÌNXðwµ¦·±ÆªÂ\Å·BuntypedÌêÍÇÌæ¤ÈNXÅàwµ¦·±ÆªÅ«Ü·B
PROCEDURE DIVISION.
\bhè`
OOCOBOLÌ\bhÍC++ž¤Æ±ëÌvirtual©ÂpublicÆÈèÜ·B
METHOD-ID. üà OVERRIDE.
ãÊNXÌ\bhð«·¦éê(ÕÁè`)ÍAOVERRIDEðwèµÜ·Bܽe\bhÍ\bh¼(áÅÍuüàv)Æ©ª©gÌDATA
DIVISIONÆPROCEDURE DIVISIONðÁĢܷBDATA DIVISIONÍY\bhÌÇÏðè`µÜ·B\bhÖÌøâßèlà±±Åè`µÜ·B
IuWFNgQÆ(OBJECT REFERENCE)ÌÝèû@
å«Í2Êè èÜ·B
(1)FACTORYÌnew\bhÌßèlƵÄÝè·éB
01 vÊ USAGE IS OBJECT REFERENCE Êaà.
EEE
INVOKE Êaà "new" RETURNING vÊ.
vÊÉͶ¬³ê½ÊaàNXÌCX^XÖÌIuWFNgQƪãü³êĢܷB
(2)SET¶ÅÝè·éB
ESET A TO B.
IuWFNgQÆAðIuWFNgQÆBªwµÄ¢éàÌÉÝè·é
ESET A TO NULL.
IuWFNgQÆAðNULLÉÝè·é(DZàwµ¦µÄ¢È¢æ¤É·é)
ESET A TO SELF.
IuWFNgQÆAð©ÈðQÆ·éæ¤ÉÝè·é
MessagePassing requestû@(IuWFNgQÆÉpÌdû)
2ÂÌLqû@ª èÜ·B
EINVOKE Êaà "üà" USING PARAM.
EÊaà::üà(PARAM).
invokeÅÍ\bh¼îñðÏÉi[·é±ÆàÂ\Å·BeÅ êÎstatic
linkÆÈèAdatanameÅ êÎdynamic linkÆÈèÜ·B
¡Èã