CHOpsP2V3ClientImpl.Mesa
Copyright Ó 1989, 1991 by Xerox Corporation. All rights reserved.
Generated by Willie-sue.pa at February 13, 1989 2:49:37 pm PST
using Sirocco [2.0] of February 10, 1989 6:26:26 pm PST
DIRECTORY
CrRPC,
CHNameP2V0,
AuthenticationP14V2,
BulkDataP0V1,
CHOpsP2V3;
CHOpsP2V3ClientImpl: CEDAR PROGRAM
IMPORTS CrRPC
EXPORTS CHOpsP2V3 ~ {
OPEN CHOpsP2V3;
Errors
ArgumentError: PUBLIC ArgumentErrorType ~ CODE;
PropertyError: PUBLIC PropertyErrorType ~ CODE;
CallError: PUBLIC CallErrorType ~ CODE;
UpdateError: PUBLIC UpdateErrorType ~ CODE;
AuthenticationError: PUBLIC AuthenticationErrorType ~ CODE;
WrongServer: PUBLIC WrongServerType ~ CODE;
GetErrorProc
GetError: CrRPC.GetErrorProc ~ {
SELECT errNum FROM
2 => {
problem: ArgumentProblem;
which: WhichArgument;
problem ¬ VAL[CrRPC.GetCard16[s]];
which ¬ VAL[CrRPC.GetCard16[s]];
ERROR ArgumentError[problem, which]
};
3 => {
problem: PropertyProblem;
distinguishedObject: CHNameP2V0.ThreePartName;
problem ¬ VAL[CrRPC.GetCard16[s]];
distinguishedObject.organization ¬ CrRPC.GetRope[s];
distinguishedObject.domain ¬ CrRPC.GetRope[s];
distinguishedObject.object ¬ CrRPC.GetRope[s];
ERROR PropertyError[problem, distinguishedObject]
};
1 => {
problem: CallProblem;
problem ¬ VAL[CrRPC.GetCard16[s]];
ERROR CallError[problem]
};
4 => {
problem: UpdateProblem;
found: BOOLEAN;
which: WhichArgument;
distinguishedObject: CHNameP2V0.ThreePartName;
problem ¬ VAL[CrRPC.GetCard16[s]];
found ¬ CrRPC.GetBool[s];
which ¬ VAL[CrRPC.GetCard16[s]];
distinguishedObject.organization ¬ CrRPC.GetRope[s];
distinguishedObject.domain ¬ CrRPC.GetRope[s];
distinguishedObject.object ¬ CrRPC.GetRope[s];
ERROR UpdateError[problem, found, which, distinguishedObject]
};
6 => {
problem: AuthenticationP14V2.Problem;
problem ¬ VAL[CrRPC.GetCard16[s]];
ERROR AuthenticationError[problem]
};
5 => {
hint: CHNameP2V0.ThreePartName;
hint.organization ¬ CrRPC.GetRope[s];
hint.domain ¬ CrRPC.GetRope[s];
hint.object ¬ CrRPC.GetRope[s];
ERROR WrongServer[hint]
};
ENDCASE => {
ERROR CrRPC.Error[h, remoteError, "Unexpected Remote Error"];
};
};
Remote Procedures --
CreateAlias: PUBLIC CreateAliasType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutRope[s, alias.organization];
CrRPC.PutRope[s, alias.domain];
CrRPC.PutRope[s, alias.object];
CrRPC.PutRope[s, sameAs.organization];
CrRPC.PutRope[s, sameAs.domain];
CrRPC.PutRope[s, sameAs.object];
CrRPC.PutCard16[s, ORD[agent.credentials.type]];
MProc1[h, s, agent.credentials.value];
MProc1[h, s, agent.verifier];
};
GetResults: CrRPC.GetResultsProc ~ {
distinguishedObject.organization ¬ CrRPC.GetRope[s];
distinguishedObject.domain ¬ CrRPC.GetRope[s];
distinguishedObject.object ¬ CrRPC.GetRope[s];
};
CrRPC.Call[h~h, remotePgm~2, remotePgmVersion~3, remoteProc~10 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
DeleteProperty: PUBLIC DeletePropertyType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutRope[s, name.organization];
CrRPC.PutRope[s, name.domain];
CrRPC.PutRope[s, name.object];
CrRPC.PutCard32[s, property];
CrRPC.PutCard16[s, ORD[agent.credentials.type]];
MProc1[h, s, agent.credentials.value];
MProc1[h, s, agent.verifier];
};
GetResults: CrRPC.GetResultsProc ~ {
distinguishedObject.organization ¬ CrRPC.GetRope[s];
distinguishedObject.domain ¬ CrRPC.GetRope[s];
distinguishedObject.object ¬ CrRPC.GetRope[s];
};
CrRPC.Call[h~h, remotePgm~2, remotePgmVersion~3, remoteProc~14 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
CreateObject: PUBLIC CreateObjectType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutRope[s, name.organization];
CrRPC.PutRope[s, name.domain];
CrRPC.PutRope[s, name.object];
CrRPC.PutCard16[s, ORD[agent.credentials.type]];
MProc1[h, s, agent.credentials.value];
MProc1[h, s, agent.verifier];
};
GetResults: CrRPC.GetResultsProc ~ {
NULL
};
CrRPC.Call[h~h, remotePgm~2, remotePgmVersion~3, remoteProc~2 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
ListAliases: PUBLIC ListAliasesType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutRope[s, pattern.organization];
CrRPC.PutRope[s, pattern.domain];
CrRPC.PutRope[s, pattern.object];
CrRPC.PutBulkDataSink[h, s, list];
CrRPC.PutCard16[s, ORD[agent.credentials.type]];
MProc1[h, s, agent.credentials.value];
MProc1[h, s, agent.verifier];
};
GetResults: CrRPC.GetResultsProc ~ {
NULL
};
CrRPC.Call[h~h, remotePgm~2, remotePgmVersion~3, remoteProc~8 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
ListDomainsServed: PUBLIC ListDomainsServedType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutBulkDataSink[h, s, domains];
CrRPC.PutCard16[s, ORD[agent.credentials.type]];
MProc1[h, s, agent.credentials.value];
MProc1[h, s, agent.verifier];
};
GetResults: CrRPC.GetResultsProc ~ {
NULL
};
CrRPC.Call[h~h, remotePgm~2, remotePgmVersion~3, remoteProc~1 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
DeleteSelf: PUBLIC DeleteSelfType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutRope[s, name.organization];
CrRPC.PutRope[s, name.domain];
CrRPC.PutRope[s, name.object];
CrRPC.PutCard32[s, property];
CrRPC.PutCard16[s, ORD[agent.credentials.type]];
MProc1[h, s, agent.credentials.value];
MProc1[h, s, agent.verifier];
};
GetResults: CrRPC.GetResultsProc ~ {
distinguishedObject.organization ¬ CrRPC.GetRope[s];
distinguishedObject.domain ¬ CrRPC.GetRope[s];
distinguishedObject.object ¬ CrRPC.GetRope[s];
};
CrRPC.Call[h~h, remotePgm~2, remotePgmVersion~3, remoteProc~22 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
RetrieveItem: PUBLIC RetrieveItemType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutRope[s, pattern.organization];
CrRPC.PutRope[s, pattern.domain];
CrRPC.PutRope[s, pattern.object];
CrRPC.PutCard32[s, property];
CrRPC.PutCard16[s, ORD[agent.credentials.type]];
MProc1[h, s, agent.credentials.value];
MProc1[h, s, agent.verifier];
};
GetResults: CrRPC.GetResultsProc ~ {
distinguishedObject.organization ¬ CrRPC.GetRope[s];
distinguishedObject.domain ¬ CrRPC.GetRope[s];
distinguishedObject.object ¬ CrRPC.GetRope[s];
value ¬ UProc2[h, s];
};
CrRPC.Call[h~h, remotePgm~2, remotePgmVersion~3, remoteProc~16 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
ListOrganizations: PUBLIC ListOrganizationsType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutRope[s, pattern];
CrRPC.PutBulkDataSink[h, s, list];
CrRPC.PutCard16[s, ORD[agent.credentials.type]];
MProc1[h, s, agent.credentials.value];
MProc1[h, s, agent.verifier];
};
GetResults: CrRPC.GetResultsProc ~ {
NULL
};
CrRPC.Call[h~h, remotePgm~2, remotePgmVersion~3, remoteProc~5 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
ListProperties: PUBLIC ListPropertiesType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutRope[s, pattern.organization];
CrRPC.PutRope[s, pattern.domain];
CrRPC.PutRope[s, pattern.object];
CrRPC.PutCard16[s, ORD[agent.credentials.type]];
MProc1[h, s, agent.credentials.value];
MProc1[h, s, agent.verifier];
};
GetResults: CrRPC.GetResultsProc ~ {
distinguishedObject.organization ¬ CrRPC.GetRope[s];
distinguishedObject.domain ¬ CrRPC.GetRope[s];
distinguishedObject.object ¬ CrRPC.GetRope[s];
properties ¬ UProc3[h, s];
};
CrRPC.Call[h~h, remotePgm~2, remotePgmVersion~3, remoteProc~15 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
ListDomains: PUBLIC ListDomainsType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutRope[s, pattern.organization];
CrRPC.PutRope[s, pattern.domain];
CrRPC.PutBulkDataSink[h, s, list];
CrRPC.PutCard16[s, ORD[agent.credentials.type]];
MProc1[h, s, agent.credentials.value];
MProc1[h, s, agent.verifier];
};
GetResults: CrRPC.GetResultsProc ~ {
NULL
};
CrRPC.Call[h~h, remotePgm~2, remotePgmVersion~3, remoteProc~6 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
RetrieveMembers: PUBLIC RetrieveMembersType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutRope[s, pattern.organization];
CrRPC.PutRope[s, pattern.domain];
CrRPC.PutRope[s, pattern.object];
CrRPC.PutCard32[s, property];
CrRPC.PutBulkDataSink[h, s, membership];
CrRPC.PutCard16[s, ORD[agent.credentials.type]];
MProc1[h, s, agent.credentials.value];
MProc1[h, s, agent.verifier];
};
GetResults: CrRPC.GetResultsProc ~ {
distinguishedObject.organization ¬ CrRPC.GetRope[s];
distinguishedObject.domain ¬ CrRPC.GetRope[s];
distinguishedObject.object ¬ CrRPC.GetRope[s];
};
CrRPC.Call[h~h, remotePgm~2, remotePgmVersion~3, remoteProc~18 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
IsMember: PUBLIC IsMemberType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutRope[s, memberOf.organization];
CrRPC.PutRope[s, memberOf.domain];
CrRPC.PutRope[s, memberOf.object];
CrRPC.PutCard32[s, property];
CrRPC.PutCard32[s, secondaryProperty];
CrRPC.PutRope[s, name.organization];
CrRPC.PutRope[s, name.domain];
CrRPC.PutRope[s, name.object];
CrRPC.PutCard16[s, ORD[agent.credentials.type]];
MProc1[h, s, agent.credentials.value];
MProc1[h, s, agent.verifier];
};
GetResults: CrRPC.GetResultsProc ~ {
isMember ¬ CrRPC.GetBool[s];
distinguishedObject.organization ¬ CrRPC.GetRope[s];
distinguishedObject.domain ¬ CrRPC.GetRope[s];
distinguishedObject.object ¬ CrRPC.GetRope[s];
};
CrRPC.Call[h~h, remotePgm~2, remotePgmVersion~3, remoteProc~23 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
ListAliasesOf: PUBLIC ListAliasesOfType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutRope[s, pattern.organization];
CrRPC.PutRope[s, pattern.domain];
CrRPC.PutRope[s, pattern.object];
CrRPC.PutBulkDataSink[h, s, list];
CrRPC.PutCard16[s, ORD[agent.credentials.type]];
MProc1[h, s, agent.credentials.value];
MProc1[h, s, agent.verifier];
};
GetResults: CrRPC.GetResultsProc ~ {
distinguishedObject.organization ¬ CrRPC.GetRope[s];
distinguishedObject.domain ¬ CrRPC.GetRope[s];
distinguishedObject.object ¬ CrRPC.GetRope[s];
};
CrRPC.Call[h~h, remotePgm~2, remotePgmVersion~3, remoteProc~9 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
ChangeItem: PUBLIC ChangeItemType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutRope[s, name.organization];
CrRPC.PutRope[s, name.domain];
CrRPC.PutRope[s, name.object];
CrRPC.PutCard32[s, property];
MProc4[h, s, newValue];
CrRPC.PutCard16[s, ORD[agent.credentials.type]];
MProc1[h, s, agent.credentials.value];
MProc1[h, s, agent.verifier];
};
GetResults: CrRPC.GetResultsProc ~ {
distinguishedObject.organization ¬ CrRPC.GetRope[s];
distinguishedObject.domain ¬ CrRPC.GetRope[s];
distinguishedObject.object ¬ CrRPC.GetRope[s];
};
CrRPC.Call[h~h, remotePgm~2, remotePgmVersion~3, remoteProc~17 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
DeleteMember: PUBLIC DeleteMemberType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutRope[s, name.organization];
CrRPC.PutRope[s, name.domain];
CrRPC.PutRope[s, name.object];
CrRPC.PutCard32[s, property];
CrRPC.PutRope[s, member.organization];
CrRPC.PutRope[s, member.domain];
CrRPC.PutRope[s, member.object];
CrRPC.PutCard16[s, ORD[agent.credentials.type]];
MProc1[h, s, agent.credentials.value];
MProc1[h, s, agent.verifier];
};
GetResults: CrRPC.GetResultsProc ~ {
distinguishedObject.organization ¬ CrRPC.GetRope[s];
distinguishedObject.domain ¬ CrRPC.GetRope[s];
distinguishedObject.object ¬ CrRPC.GetRope[s];
};
CrRPC.Call[h~h, remotePgm~2, remotePgmVersion~3, remoteProc~21 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
AddSelf: PUBLIC AddSelfType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutRope[s, name.organization];
CrRPC.PutRope[s, name.domain];
CrRPC.PutRope[s, name.object];
CrRPC.PutCard32[s, property];
CrRPC.PutCard16[s, ORD[agent.credentials.type]];
MProc1[h, s, agent.credentials.value];
MProc1[h, s, agent.verifier];
};
GetResults: CrRPC.GetResultsProc ~ {
distinguishedObject.organization ¬ CrRPC.GetRope[s];
distinguishedObject.domain ¬ CrRPC.GetRope[s];
distinguishedObject.object ¬ CrRPC.GetRope[s];
};
CrRPC.Call[h~h, remotePgm~2, remotePgmVersion~3, remoteProc~20 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
RetrieveAddresses: PUBLIC RetrieveAddressesType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
};
GetResults: CrRPC.GetResultsProc ~ {
address ¬ UProc5[h, s];
};
CrRPC.Call[h~h, remotePgm~2, remotePgmVersion~3, remoteProc~0 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
DeleteAlias: PUBLIC DeleteAliasType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutRope[s, alias.organization];
CrRPC.PutRope[s, alias.domain];
CrRPC.PutRope[s, alias.object];
CrRPC.PutCard16[s, ORD[agent.credentials.type]];
MProc1[h, s, agent.credentials.value];
MProc1[h, s, agent.verifier];
};
GetResults: CrRPC.GetResultsProc ~ {
distinguishedObject.organization ¬ CrRPC.GetRope[s];
distinguishedObject.domain ¬ CrRPC.GetRope[s];
distinguishedObject.object ¬ CrRPC.GetRope[s];
};
CrRPC.Call[h~h, remotePgm~2, remotePgmVersion~3, remoteProc~11 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
LookupObject: PUBLIC LookupObjectType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutRope[s, name.organization];
CrRPC.PutRope[s, name.domain];
CrRPC.PutRope[s, name.object];
CrRPC.PutCard16[s, ORD[agent.credentials.type]];
MProc1[h, s, agent.credentials.value];
MProc1[h, s, agent.verifier];
};
GetResults: CrRPC.GetResultsProc ~ {
distinguishedObject.organization ¬ CrRPC.GetRope[s];
distinguishedObject.domain ¬ CrRPC.GetRope[s];
distinguishedObject.object ¬ CrRPC.GetRope[s];
};
CrRPC.Call[h~h, remotePgm~2, remotePgmVersion~3, remoteProc~4 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
AddGroupProperty: PUBLIC AddGroupPropertyType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutRope[s, name.organization];
CrRPC.PutRope[s, name.domain];
CrRPC.PutRope[s, name.object];
CrRPC.PutCard32[s, newProperty];
CrRPC.PutBulkDataSource[h, s, membership];
CrRPC.PutCard16[s, ORD[agent.credentials.type]];
MProc1[h, s, agent.credentials.value];
MProc1[h, s, agent.verifier];
};
GetResults: CrRPC.GetResultsProc ~ {
distinguishedObject.organization ¬ CrRPC.GetRope[s];
distinguishedObject.domain ¬ CrRPC.GetRope[s];
distinguishedObject.object ¬ CrRPC.GetRope[s];
};
CrRPC.Call[h~h, remotePgm~2, remotePgmVersion~3, remoteProc~12 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
DeleteObject: PUBLIC DeleteObjectType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutRope[s, name.organization];
CrRPC.PutRope[s, name.domain];
CrRPC.PutRope[s, name.object];
CrRPC.PutCard16[s, ORD[agent.credentials.type]];
MProc1[h, s, agent.credentials.value];
MProc1[h, s, agent.verifier];
};
GetResults: CrRPC.GetResultsProc ~ {
NULL
};
CrRPC.Call[h~h, remotePgm~2, remotePgmVersion~3, remoteProc~3 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
AddItemProperty: PUBLIC AddItemPropertyType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutRope[s, name.organization];
CrRPC.PutRope[s, name.domain];
CrRPC.PutRope[s, name.object];
CrRPC.PutCard32[s, newProperty];
MProc4[h, s, value];
CrRPC.PutCard16[s, ORD[agent.credentials.type]];
MProc1[h, s, agent.credentials.value];
MProc1[h, s, agent.verifier];
};
GetResults: CrRPC.GetResultsProc ~ {
distinguishedObject.organization ¬ CrRPC.GetRope[s];
distinguishedObject.domain ¬ CrRPC.GetRope[s];
distinguishedObject.object ¬ CrRPC.GetRope[s];
};
CrRPC.Call[h~h, remotePgm~2, remotePgmVersion~3, remoteProc~13 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
AddMember: PUBLIC AddMemberType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutRope[s, name.organization];
CrRPC.PutRope[s, name.domain];
CrRPC.PutRope[s, name.object];
CrRPC.PutCard32[s, property];
CrRPC.PutRope[s, newMember.organization];
CrRPC.PutRope[s, newMember.domain];
CrRPC.PutRope[s, newMember.object];
CrRPC.PutCard16[s, ORD[agent.credentials.type]];
MProc1[h, s, agent.credentials.value];
MProc1[h, s, agent.verifier];
};
GetResults: CrRPC.GetResultsProc ~ {
distinguishedObject.organization ¬ CrRPC.GetRope[s];
distinguishedObject.domain ¬ CrRPC.GetRope[s];
distinguishedObject.object ¬ CrRPC.GetRope[s];
};
CrRPC.Call[h~h, remotePgm~2, remotePgmVersion~3, remoteProc~19 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
ListObjects: PUBLIC ListObjectsType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutRope[s, pattern.organization];
CrRPC.PutRope[s, pattern.domain];
CrRPC.PutRope[s, pattern.object];
CrRPC.PutCard32[s, property];
CrRPC.PutBulkDataSink[h, s, list];
CrRPC.PutCard16[s, ORD[agent.credentials.type]];
MProc1[h, s, agent.credentials.value];
MProc1[h, s, agent.verifier];
};
GetResults: CrRPC.GetResultsProc ~ {
NULL
};
CrRPC.Call[h~h, remotePgm~2, remotePgmVersion~3, remoteProc~7 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
Unmarshal / Marshal Procs --
MProc1: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: AuthenticationP14V2.SeqWords] ~ {
CrRPC.PutCard16[s, val.length];
FOR i6: CARDINAL IN [0..val.length) DO
CrRPC.PutCard16[s, val.body[i6]];
ENDLOOP;
};
MProc4: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: Item] ~ {
CrRPC.PutCard16[s, val.length];
FOR i7: CARDINAL IN [0..val.length) DO
CrRPC.PutCard16[s, val.body[i7]];
ENDLOOP;
};
UProc2: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: Item] ~ {
{
length9: CARDINAL ~ CrRPC.GetCard16[s];
res ¬ NEW[ItemObject[length9]];
FOR i8: CARDINAL IN [0..length9) DO
res.body[i8] ¬ CrRPC.GetCard16[s];
ENDLOOP;
};
};
UProc3: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: Properties] ~ {
{
length11: CARDINAL ~ CrRPC.GetCard16[s];
res ¬ NEW[PropertiesObject[length11]];
FOR i10: CARDINAL IN [0..length11) DO
res.body[i10] ¬ CrRPC.GetCard32[s];
ENDLOOP;
};
};
UProc5: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: NetworkAddressList] ~ {
{
length13: CARDINAL ~ CrRPC.GetCard16[s];
res ¬ NEW[NetworkAddressListObject[length13]];
FOR i12: CARDINAL IN [0..length13) DO
FOR i14: CARDINAL IN [0..6) DO
res.body[i12][i14] ¬ CrRPC.GetCard16[s];
ENDLOOP;
ENDLOOP;
};
};
}...