| |
September 2002 PL/I, das Spezifikation Abbildet: Diagramm für Valuetypes 2-21 2 /* PL/I - mainline mit einem Anruf zu boxed_get*/ myString type(string) des dcl; dclmyStringVT mögen StringValue_vtype; ... Anrufvt_StringValue_boxed_get(myStringVT, -addr(mystring)); /* PL/I schließen Akte der Wertkastenverfahren für mit ein * StringValue/ %include VALUEBASE; vt_StringValue_boxed_get: PROC(vtptr, p_vtargs); dclvtptr-PTRBYVALUE; dclp_vtargs-PTRBYADDR; dclvtbased(vtptr) wie StringValue_vtype; dclvt_argsbased(p_vtargs) wie StringValue_boxtype; /* überprüfen Sie auf vergessenes * der Zeiger Gültigkeit,/ benennen Sie STRFREE(vt_args); benennen Sie STRDUPL(vt.result, vt_args); BEENDEN Sie vt_StringValue_boxed_get; vt_StringValue_boxed_set: PROC(vtptr, p_vtargs); dclvtptr-PTRBYVALUE; dclp_vtargs-PTRBYVALUE; dclvtbased(vtptr) wie StringValue_vtype; dclvt_argsbased(p_vtargs) wie StringValue_boxtype; /* überprüfen Sie auf vergessenes * der Zeiger Gültigkeit,/ Anruf STRFREE(vt.result); Anruf STRDUPL(vt_args, vt.result); ENDENVT_StringValue_boxed_set; dcl 1 StringValue_vtype gegründet, PTRINIT(SYSNULL() mit 3 ctl); PTRINIT(SYSNULL() mit 3 pepv), refct 3 regelte bin(31) init(0), type(string)init(sysnull() mit 3 Resultaten); dcl 1 StringValue_pepv_vtype gegründet, 3 StringValue PTRINIT(SYSNULL()); dcl 1 StringValue_epv_vtype gegründet, 3 StringValue_boxed_get Eintragung begrenzt, 3 StringValue_boxed_set die Eintragung begrenzte; |  |
|
| |
|
|