| |
September 2002 PL/I, das Spezifikation Abbildet: Bewegliches GegenstandcAdaptercDiagramm 2-31 2 dcloutlong reparierte bin(31) byaddr; ... appsrv.ctrvalue=appsrv.ctrvalue+inlong; outlong=appsrv.ctvalue; ENDE SRVADD; Die Anwendung konnte den Bediensteten dynamisch wie folgt initialisieren. dclbase_epvtype(pos_servantbase_epv); dclcounter_epvtype(poa_counter_epv); dclcounter_pepvtype(poa_counter_pepv); dclmy_basetype(poa_counter); my_servant type(appservant) des dcl; ... /* initialisieren Sie base_epv*/ base_epv.ctl=sysnull(); base_epv.finalize=sysnull(); base_epv.default_poa=my_default_poa; ... /* initialisieren Sie counter_epv*/ counter_epv.ctl=sysnull(); counter_epv.add=SRVADD; ... /* initialisieren Sie counter_pepv*/ counter_pepv.base_epv=addr(base_epv); counter_pepv.counter_epv=addr(counter_epv); /* initialisieren Sie my_base*/ my_base.ctl=sysnull(); my_base.pepv=addr(counter_pepv); /* initialisieren Sie my_servant */ my_servant.base=addr(my_base); my_servant.ctrvalue=0; Bevor sie diesen Bediensteten registriert oder aktiviert, benennt die Anwendung: Anrufpoa_Counter_init(my_servant); Wenn die Anwendung ein spezielles Zerstörungsverfahren für my_servant erfordert soll sie stellen Sie den Wert des pos_servantbase_epv ein ' s beenden Mitglied entweder vorher oder nachdem poa_Counter_init benannt worden ist base_epv.finalize=proc_my_finalizer; |  |
|
| |
|
|