Adobe: PROGRAM 75 VERSION 2 = BEGIN DEPENDS UPON BulkData (0) VERSION 1, CHName (2) VERSION 0, Time (15) VERSION 2; nullTime: Time.Time = Time.earliestTime; -- seconds EmptyRecord: TYPE = RECORD [ ]; CommunicationError: ERROR [ ] = 0; UnknownSystem: ERROR [ ] = 1; CantDetermineLocOfARs: ERROR [ ] = 2; IllegalLogin: ERROR [ ] = 3; SystemAlreadyExists: ERROR [ ] = 4; FileNotFound: ERROR [ ] = 5; ServerUnreachable: ERROR [ ] = 6; ServerDown: ERROR [ ] = 7; NoAdobeServiceAtServer: ERROR [ ] = 8; CourierTimedOut: ERROR [ ] = 9; ParameterInconsistency: ERROR [ ] = 10; ObsoleteVersion: ERROR [ ] = 11; SystemNotRegistered: ERROR [ ] = 12; SysDescChanging: ERROR [ ] = 13; Others: ERROR [ ] = 14; TooManyConnections: ERROR [ ] = 15; Spare1: ERROR [ ] = 16; Spare2: ERROR [ ] = 17; Xxx: ERROR [ ] = 31; Error: ERROR [ why: Problem ] = 99; Problem: TYPE = { communicationError(0), unknownSystem(1), cantDetermineLocOfARs(2), illegalLogin(3), systemAlreadyExists(4), fileNotFound(5), serverUnreachable(6), serverDown(7), noAdobeServiceAtServer(8), courierTimedOut(9), parameterInconsistency(10), obsoleteVersion(11), systemNotRegistered(12), sysDescChanging(13), others(14), tooManyConnections(15), spare1(16), spare2(17), xxx(31) }; ServerName: TYPE = CHName.Name; Database: TYPE = STRING; ARVersion: TYPE = LONG CARDINAL; ARNumber: TYPE = LONG CARDINAL; SubmitNumber: TYPE = LONG CARDINAL; Numeric: TYPE = LONG CARDINAL; DependsOnIndex: TYPE = CARDINAL; BoundedString: TYPE = RECORD [string: STRING, max: CARDINAL]; StartOrStop: TYPE = { start(0), stop(1) }; Reference: TYPE = SEQUENCE OF UNSPECIFIED; DatabaseSequence: TYPE = SEQUENCE OF STRING; Target: TYPE = RECORD [--server: ServerName,-- system: Database]; StaticTarget: TYPE = RECORD [target: Target, version: ARVersion]; LocationTarget: TYPE = RECORD [host: STRING, directory: STRING]; Description: TYPE = RECORD [ name: STRING, -- name of the ARSystem host: STRING, -- file server where the ARs are stored directory: STRING, -- directory where the ARs are stored refCount: CARDINAL, -- number of active Adobe tools using this system version: ARVersion, -- description version fieldList: FieldList ]; FieldItemValue: TYPE = FieldItem; FieldList: TYPE = SEQUENCE OF FieldItem; FieldType: TYPE = { ar(0), time(1), numeric(2), bounded(3), enumerated(4), string(5) }; FieldItem: TYPE = CHOICE FieldType OF { ar => ARField, --(0), time => TimeField, --(1), numeric => NumericField, --(2), bounded => BoundedField, --(3), enumerated => EnumeratedField, --(4), string => StringField --(5) }; ARField: TYPE = RECORD [ name: STRING, tools: ToolData, ar: EmptyRecord ]; TimeField: TYPE = RECORD [ name: STRING, tools: ToolData, time: EmptyRecord ]; NumericField: TYPE = RECORD [ name: STRING, tools: ToolData, numeric: EmptyRecord ]; BoundedField: TYPE = RECORD [ name: STRING, tools: ToolData, bounded: CARDINAL ]; EnumeratedField: TYPE = RECORD [ name: STRING, tools: ToolData, field: DependsOnIndex, possibilities: KeyedPossibilitiesList ]; StringField: TYPE = RECORD [ name: STRING, tools: ToolData, string: EmptyRecord ]; KeyedPossibilitiesList: TYPE = SEQUENCE OF PossibilityList; PossibilityList: TYPE = RECORD [ keyedDependency: DependsOnIndex, enumRecs: EnumerationList ]; EnumerationList: TYPE = SEQUENCE OF TaggedItem; TaggedItem: TYPE = RECORD [ tag: STRING, item: CARDINAL ]; ToolType: TYPE = { edit(0), submit(1), report(2), query(3), sort(4), queryList(5) }; ToolData: TYPE = ARRAY 6 OF InfoStuff; InfoStuff: TYPE = RECORD [ default: STRING, required: BOOLEAN, place: Coordinate, width: CARDINAL ]; Coordinate: TYPE = RECORD [ ord: INTEGER, co: INTEGER ]; ChangeList: TYPE = SEQUENCE OF ChangeItem; ChangeItem: TYPE = RECORD [name: STRING, value: ChangeItemValue]; ChangeType: TYPE = { modify(0), add(1), remove(2) }; ChangeItemValue: TYPE = CHOICE ChangeType OF { add => FieldItemValue, --(0), modify => FieldItemValue, --(1), remove => EmptyRecord --(2) }; QueryList: TYPE = SEQUENCE OF QueryItem; QueryItem: TYPE = RECORD [name: STRING, value: QueryItemValue]; Relation: TYPE = { equal(0), notEqual(1), lessThan(2), lessThanOrEqual(3), greaterThan(4), greaterThanOrEqual(5), in(6), notIn(7) }; QueryItemValue: TYPE = RECORD [op: Relation, value: FieldItemValue]; SetOfARs: TYPE = SEQUENCE OF RunOfARs; RunOfARs: TYPE = RECORD [ ar: ARNumber, runLength: LONG CARDINAL ]; GetResidentSystems: PROCEDURE [ ] RETURNS [ systems: DatabaseSequence ] REPORTS [ Error ] = 17; GetVersion: PROCEDURE [ target: Target ] RETURNS [ version: ARVersion ] REPORTS [ Error ] = 12; ReadLastARNumber: PROCEDURE [ target: Target ] RETURNS [ lastAR: ARNumber ] REPORTS [ Error ] = 2; GetSystemDescription: PROCEDURE [ target: Target ] RETURNS [ description: Description ] REPORTS [ Error ] = 14; PutSystemDescription: PROCEDURE [ target: Target, description: Description ] REPORTS [ Error ] = 13; GetSystemDefaultUserFile: PROCEDURE [ target: Target, to: BulkData.Sink ] RETURNS [ bytesInFile: CARDINAL ] REPORTS [ Error ] = 16; PutSystemDefaultUserFile: PROCEDURE [ target: Target, from: BulkData.Source ] REPORTS [ Error ] = 15; GetStartOrStopTime: PROCEDURE [ target: Target, which: StartOrStop ] RETURNS [ startOrStopTime: Time.Time ] REPORTS [ Error ] = 20; PutStartOrStopTime: PROCEDURE [ target: Target, which: StartOrStop, startOrStopTime: Time.Time ] REPORTS [ Error ] = 19; GetLocationOfARs: PROCEDURE [ target: Target ] RETURNS [ referenceToARs: Reference ] REPORTS [ Error ] = 9; ChangeLocationOfARs: PROCEDURE [ target: Target, newLocation: LocationTarget ] REPORTS [ Error ] = 10; <> GetNextSubmitNumber: PROCEDURE [ target: Target ] RETURNS [ submitNumber: SubmitNumber ] REPORTS [ Error ] = 0; PutSubmitNumber: PROCEDURE [ target: Target, submitNumber: SubmitNumber ] REPORTS [ Error ] = 1; MakeAcceleratorFileForField: PROCEDURE [ target: Target, fieldName: STRING, fieldList: FieldList] REPORTS [ Error ] = 22; UpdateAccelerators: PROCEDURE [ target: Target, arSet: SetOfARs ] REPORTS [ Error ] = 5; CompletedUpdate: PROCEDURE [ target: Target, arNumber: ARNumber ] REPORTS [ Error ] = 8; AboutToStore: PROCEDURE [ instance: StaticTarget, arNumber: ARNumber ] REPORTS [ Error ] = 6; ChangeFieldList: PROCEDURE [ instance: StaticTarget, changes: ChangeList ] REPORTS [ Error ] = 11; <> GetAcceleratorInfo: PROCEDURE [ instance: StaticTarget, arSet: SetOfARs, fieldList: FieldList, to: BulkData.Sink ] REPORTS [ Error ] = 21; LookupARs: PROCEDURE [ instance: StaticTarget, query: QueryItem, boundSet: SetOfARs ] RETURNS [ arSet: SetOfARs ] REPORTS [ Error ] = 4; UpdateAcceleratorField: PROCEDURE [ instance: StaticTarget, arNumber: ARNumber, field: FieldItem ] REPORTS [ Error ] = 7; VerifyVersion: PROCEDURE [ instance: StaticTarget ] RETURNS [ok: BOOLEAN] REPORTS [ Error ] = 18; SubmitFailed: PROCEDURE [ target: Target, arNumber: ARNumber, version: ARVersion ] REPORTS [ Error ] = 3; END. Ί Adobe2.cr Copyright Σ 1990, 1992 by Xerox Corporation. All rights reserved. Bill Jackson (bj), March 27, 1990 2:02:58 pm PST Derived from Adobe of Mesa 14.0 ref: [Peabody:OSBU North:Xerox]14.0>Adobe>Private> Note: The Services implementation of this protocol does not conform to the Courier Presentation level specificiations. This Courier program is an attempt to define the closest possible protocol which does conform. Starting with the code generated by Sirocco for this program, a small number of hand edits allow it to interact with the exisiting software. Filing (10) VERSION 5; Common Definitions Signals and Errors Operational Semantics The following 3 procedures are to be called when storing (i.e. submit or checkin) an AR; AboutToStore and CompletedUpdate are provided to protect against lost AR edits; The sequence should be: AboutToStore[...]; ARAccess.SubmitAR[...] or ARAccess.CheckInAR[...]; UpdateAcceleratorField[...]; -- for each field that changed; ... UpdateAcceleratorField[...]; CompletedUpdate[...]; Simple Types Reference: TYPE = NSFile.Reference; Types Database Description Fields Enumerated length is encoded as a smashed value in the ToolData! length is encoded improperly and appears both before the field of EnumeratedField for the first case, and before the last keyedDependency in a PossibilityList! Tool(s) Info Changes Queries Action Request Set(s) Procedures Procedures Procedures Procedures Procedures Κ  –(cedarcode) style•NewlineDelimiter ™codešœ ™ Kšœ Οeœ7™BK™0K™K™ K™9K™K™K™ίK˜—šΟnœΟkœŸœŸ˜#šŸœŸ˜ Kšœ Ÿœ˜Jšœ Ÿœ˜Kšœ Ÿœ˜Jšœ Ÿœ™—headšΟz™Kšœ)Οc ˜3Kšœ ŸœŸœ˜—š ™JšžœŸœ ˜"Jšž œŸœ ˜JšžœŸœ ˜%Jšž œŸœ ˜JšžœŸœ ˜#Jšž œŸœ ˜JšžœŸœ ˜!Jšž œŸœ ˜JšžœŸœ ˜&JšžœŸœ ˜JšžœŸœ ˜'JšžœŸœ ˜ JšžœŸœ ˜$JšžœŸœ ˜ JšžœŸœ ˜JšžœŸœ ˜#JšžœŸœ ˜JšžœŸœ ˜JšžœŸœ ˜JšžœŸœ˜#Kšœ Ÿœϋ˜ˆ—š ™šœͺ™ͺ™K™K™4šœ‘™=K™—K™K™———š  ™ Kšœ Ÿœ˜Kšœ ŸœŸœ˜Kšœ ŸœŸœŸœ˜ Kšœ ŸœŸœŸœ˜KšœŸœŸœŸœ˜#K˜Kšœ ŸœŸœŸœ˜KšœŸœŸœ˜ Kš œŸœŸœ ŸœŸœ˜=K˜Kšœ Ÿœ˜*K˜Kš œ ŸœŸœŸœŸ œ˜*Kšœ Ÿœ™#—š ™Kš œŸœŸœŸœŸœ˜,K˜KšœŸœŸœ‘œ˜AKšœŸœŸœ&˜AKš œŸœŸœŸœ Ÿœ˜@—š ™šœ ŸœŸœ˜KšœŸœ‘˜%KšœŸœ‘'˜5Kšœ Ÿœ‘%˜8Kšœ Ÿœ‘1˜EKšœ‘˜*Kšœ˜Kšœ˜——š ™KšœŸœ ˜!K˜Kšœ ŸœŸœŸœ ˜(Kšœ ŸœH˜Wšœ ŸœŸœ Ÿœ˜'Kšœ‘˜Kšœ‘˜Kšœ‘˜ Kšœ‘˜ Kšœ ‘˜&Kšœ‘˜Kšœ˜K˜—šœ ŸœŸœ˜KšœŸœ˜ Jšœ˜Jšœ˜Kšœ˜K˜—šœ ŸœŸœ˜KšœŸœ˜ Jšœ˜Jšœ˜Kšœ˜K˜—šœŸœŸœ˜KšœŸœ˜ Jšœ˜Jšœ˜Kšœ˜K˜—šœŸœŸœ˜KšœŸœ˜ Jšœ˜Jšœ Ÿ˜Kšœ˜K˜—šœŸœŸœ˜ KšœŸœ˜ Jšœ˜Jšœ˜Jšœ%˜%Kšœ˜K˜—šœ ŸœŸœ˜KšœŸœ˜ Jšœ˜Jšœ˜Kšœ˜——š  ™ šœŸœŸœŸœ˜;Kšœ5™5K˜—šœŸœŸœ˜ Kšœ ˜ Kšœ˜K˜K˜—šœŸœŸœŸœ ˜/KšœŸ™ŸK™—šœ ŸœŸœ˜KšœŸœ˜ KšœŸ˜K˜——š  ™ Kšœ ŸœF˜TK˜Kšœ ŸœŸœŸœ ˜&šœ ŸœŸœ˜Kšœ Ÿœ˜Kšœ Ÿœ˜K˜KšœŸ˜K˜K˜—šœ ŸœŸœ˜KšœŸœ˜ KšœŸ˜ K˜——š ™Kšœ ŸœŸœŸœ ˜*Kšœ ŸœŸœŸœ˜AKšœ Ÿœ$˜4šœŸœŸœ Ÿœ˜.Kšœ‘˜Kšœ‘˜!Kšœ‘˜K˜——š ™Kšœ ŸœŸœŸœ ˜(Kšœ ŸœŸœŸœ˜?Kšœ Ÿœv˜„JšœŸœŸœ'˜D—š ™Kšœ ŸœŸœŸœ ˜&šœ ŸœŸœ˜Kšœ ˜ Kšœ ŸœŸ˜Kšœ˜——š  ™ KšžœŸ œŸœŸœ˜_—š  ™ Kšž œŸ œŸœŸœ˜_K˜Kš žœŸ œŸœŸœŸœ Οtœ˜b—š  ™ KšžœŸ œŸœŸœ˜oKšžœŸ œ.Ÿœ˜dK˜Kš žœŸ œ'ŸœŸ œŸœ˜ƒKšžœŸ œ+Ÿœ˜eK˜KšžœŸ œ(Ÿœ Ÿœ˜ƒKšžœŸ œDŸœ˜xK˜KšžœŸ œŸœŸœ˜kKšžœŸ œ1Ÿœ%˜{K˜Kš žœŸ œŸœŸœŸœ˜oKšžœŸ œ0Ÿœ˜`K˜KšžœŸ œŸœŸœ˜yKšžœŸ œ%Ÿœ˜XK˜KšžœŸ œ(Ÿœ˜X—š  ™ Kšž œŸ œ0Ÿœ˜]KšžœŸ œ1Ÿœ!˜sKšžœŸ œVŸœ˜ŠKšž œŸ œBŸœŸœ˜ˆKšžœŸ œBŸœ˜yKš ž œŸ œŸœŸœŸœ˜a—š  ™ Kšž œŸ œ<Ÿœ˜i—KšŸœ˜—J˜—…—*`