FilingAttributes: PROGRAM 10 VERSION 5 = BEGIN DEPENDS UPON CHName (2) VERSION 0, Time(15) VERSION 2; AttributeType: TYPE = LONG CARDINAL; Attribute: TYPE = RECORD [type: AttributeType, value: AttributeValue]; AttributeSequence: TYPE = SEQUENCE OF Attribute; AttributeValue: TYPE = SEQUENCE OF UNSPECIFIED; Time: TYPE = Time.Time; -- seconds User: TYPE = CHName.Name; AccessSequence: TYPE = SEQUENCE 5 OF AccessType; AccessType: TYPE = { read(0), write(1), owner(2), -- all files add(3), remove(4), -- directories only fullAccess(177777B) }; AccessEntrySequence: TYPE = SEQUENCE OF AccessEntry; Interpretation: TYPE = { interpretationNone(0), boolean(1), cardinal(2), longCardinal(3), time(4), integer(5), longInteger(6), string(7) }; InterpretedAttributeType: TYPE = { checksum(0), childrenUniquelyNamed(1), createdBy(2), createdOn(3), fileID(4), isDirectory(5), isTemporary(6), modifiedBy(7), modifiedOn(8), name(9), numberOfChildren(10), ordering(11), parentID(12), position(13), readBy(14), readOn(15), dataSize(16), type(17), version(18), accessList(19), defaultAccessList(20), pathname(21), unused22(22), unused23(23), unused24(24), unused25(25), storedSize(26), subtreeSize(27), subtreeSizeLimit(28) }; InterpretedAttribute: TYPE = CHOICE InterpretedAttributeType OF { checksum => Checksum, -- (0), childrenUniquelyNamed => ChildrenUniquelyNamed, -- (1), createdBy => CreatedBy, -- (2), createdOn => CreatedOn, -- (3), fileID => FileID, -- (4), isDirectory => IsDirectory, -- (5), isTemporary => IsTemporary, -- (6), modifiedBy => ModifiedBy, -- (7), modifiedOn => ModifiedOn, -- (8), name => Name, -- (9), numberOfChildren => NumberOfChildren, -- (10), ordering => Ordering, -- (11), parentID => ParentID, -- (12), position => Position, -- (13), readBy => ReadBy, -- (14), readOn => ReadOn, -- (15), dataSize => DataSize, -- (16), type => Type, -- (17), version => Version, -- (18), accessList => AccessList, -- (19), defaultAccessList => DefaultAccessList, -- (20), pathname => Pathname, -- (21), unused22 => Unused, -- (22), unused23 => Unused, -- (23), unused24 => Unused, -- (24), unused25 => Unused, -- (25), storedSize => StoredSize, -- (26), subtreeSize => SubtreeSize, -- (27), subtreeSizeLimit => SubtreeSizeLimit -- (28) }; AccessEntry: TYPE = RECORD [key: User, access: AccessSequence]; AccessList: TYPE = RECORD [entries: AccessEntrySequence, defaulted: BOOLEAN]; Checksum: TYPE = CARDINAL; unknownChecksum: Checksum = 177777B; ChildrenUniquelyNamed: TYPE = BOOLEAN; CreatedBy: TYPE = User; CreatedOn: TYPE = Time; DataSize: TYPE = LONG CARDINAL; DefaultAccessList: TYPE = AccessList; FileID: TYPE = ARRAY 5 OF UNSPECIFIED; nullFileID: FileID = [0, 0, 0, 0, 0]; IsDirectory: TYPE = BOOLEAN; IsTemporary: TYPE = BOOLEAN; ModifiedBy: TYPE = User; ModifiedOn: TYPE = Time; name: AttributeType = 9; -- name relative to parent Name: TYPE = STRING; -- must not exceed 100 bytes NumberOfChildren: TYPE = CARDINAL; Ordering: TYPE = RECORD [key: AttributeType, ascending: BOOLEAN, interpretation: Interpretation]; defaultOrdering: Ordering = [key: name, ascending: TRUE, interpretation: string]; byAscendingPosition: Ordering = [key: position, ascending: TRUE, interpretation: interpretationNone]; byDescendingPosition: Ordering = [key: position, ascending: FALSE, interpretation: interpretationNone]; ParentID: TYPE = FileID; Pathname: TYPE = STRING; position: AttributeType = 13; Position: TYPE = SEQUENCE 100 OF UNSPECIFIED; firstPosition: Position = [0]; lastPosition: Position = [177777B]; ReadBy: TYPE = User; ReadOn: TYPE = Time; StoredSize: TYPE = LONG CARDINAL; SubtreeSize: TYPE = LONG CARDINAL; nullSubtreeSizeLimit: SubtreeSizeLimit = 37777777777B; SubtreeSizeLimit: TYPE = LONG CARDINAL; Type: TYPE = LONG CARDINAL; Unused: TYPE = LONG CARDINAL; WellKnownType: TYPE = { tUnspecified(0), tDirectory(1), tText(2), tSerialized(3), tEmpty(4), tAscii(6), tAsciiText(7) }; Version: TYPE = CARDINAL; lowestVersion: Version = 0; highestVersion: Version = 177777B; SerializedFile: TYPE = RECORD [version: LONG CARDINAL, file: SerializedTree]; currentVersion: LONG CARDINAL = 3; StreamOfUnspecified: TYPE = SEQUENCE OF UNSPECIFIED; SerializedContentBytes: TYPE = RECORD [ data: StreamOfUnspecified, lastByteIsSignificant: BOOLEAN ]; SerializedTreeSequence: TYPE = SEQUENCE OF SerializedTree; SerializedTree: TYPE = RECORD [ attributes: AttributeSequence, content: SerializedContentBytes ]; StreamKind: TYPE = { nextSegment(0), lastSegment(1) }; AttributeSequenceSequence: TYPE = SEQUENCE OF AttributeSequence; AttributeSequenceList: TYPE = RECORD [ segment: AttributeSequenceSequence ]; StreamOfAttributeSequence: TYPE = CHOICE StreamKind OF { nextSegment => AttributeSequenceList, -- (0) lastSegment => AttributeSequenceSequence -- (1) }; StringStreamKind: TYPE = { nextLine(0), lastLine(1) }; StreamOfAsciiText: TYPE = CHOICE StringStreamKind OF { nextLine => AsciiStringList, -- (0) lastLine => AsciiString -- (1) }; AsciiStringList: TYPE = RECORD [ line: AsciiString ]; BytePairSequence: TYPE = SEQUENCE OF UNSPECIFIED; AsciiString: TYPE = RECORD [ lastByteIsSignificant: BOOLEAN, data: BytePairSequence ]; END. ΚFilingAttributes5.cr Copyright Σ 1986, 1987, 1988 by Xerox Corporation. All rights reserved. Bill Jackson (bj) April 21, 1987 0:11:52 am PDT Tim Diebert: May 10, 1988 10:43:54 am PDT Attributes Interpreted Attribute Definitions accessList: AttributeType = 19; checksum: AttributeType = 0; childrenUniquelyNamed: AttributeType = 1; createdBy: AttributeType = 2; createdOn: AttributeType = 3; dataSize: AttributeType = 16; defaultAccessList: AttributeType = 20; fileID: AttributeType = 4; isDirectory: AttributeType = 5; isTemporary: AttributeType = 6; modifiedBy: AttributeType = 7; modifiedOn: AttributeType = 8; numberOfChildren: AttributeType = 10; ordering: AttributeType = 11; parentID: AttributeType = 12; pathname: AttributeType = 21; readBy: AttributeType = 14; readOn: AttributeType = 15; storedSize: AttributeType = 26; subtreeSize: AttributeType = 27; subtreeSizeLimit: AttributeType = 28; type: AttributeType = 17; unused: AttributeType = 22, 23, 24, 25; tUnspecified: Type = 0; tDirectory: Type = 1; tText: Type = 2; tSerialized: Type = 3; tEmpty: Type = 4; tAscii: Type = 6; tAsciiText: Type = 7; version: AttributeType = 18; Bulk Data Formats Serialized File Format children: SerializedTreeSequence -- Cyclic Dependency feature of Sirocco! Attribute Series Format restOfStream: StreamOfAttributeSequence -- Cyclic Dependency feature of Sirocco! Line-oriented ASCII test file format restOfText: StreamOfAsciiText -- Cyclic Dependency feature of Sirocco! Κφ˜codešœ™KšœH™HK™/K™)—K™šΟnœΟkœžœž˜.šžœž˜ Kšœ žœ˜Kšœ žœ˜—headšΟz ™ Kšœžœžœžœ˜$Kšœ žœžœ.˜FKšœžœžœžœ ˜0Kš œžœžœžœž œ˜/K˜KšœžœΟc ˜"Kšœžœ˜K˜Kšœžœžœžœ ˜0Kšœ žœ"  œ œ˜|K˜Kšœžœžœžœ ˜4K˜Kšœžœw˜‹—šŸ!™!šœžœΌ˜ΪK˜—šœžœžœžœ˜AKšœ ˜Kšœ0 ˜7Kšœ ˜!Kšœ ˜!Kšœ ˜Kšœ ˜%Kšœ ˜%Kšœ ˜#Kšœ ˜#Kšœ ˜Kšœ' ˜/Kšœ ˜ Kšœ ˜!Kšœ ˜!Kšœ ˜Kšœ ˜Kšœ ˜!Kšœ ˜Kšœ ˜Kšœ ˜$Kšœ) ˜1Kšœ ˜ Kšœ ˜Kšœ ˜Kšœ ˜Kšœ ˜Kšœ ˜$Kšœ ˜&Kšœ& ˜-Kšœ˜—K˜K™Kšœ žœžœ%˜?Kšœ žœžœ+žœ˜MK˜K™Kšœ žœžœ˜K˜$K˜K™)Kšœžœžœ˜&K˜K™Kšœ žœ˜K˜K™Kšœ žœ˜K˜K™Kšœ žœžœžœ˜K˜K™&Kšœžœ˜%K˜K™Kš œžœžœžœž œ˜&K˜%K˜K™Kšœ žœžœ˜K˜K™Kšœ žœžœ˜K˜K™Kšœ žœ˜K˜K™Kšœ žœ˜K˜Kšœ ˜3Kšœžœžœ ˜1K˜K™%Kšœžœžœ˜"K˜K™Kšœ žœžœ!žœ"˜aK˜Kšœ3žœ˜QKšœ;žœ&˜eKšœ<žœ&˜gK˜K™Kšœ žœ ˜K˜K™Kšœ žœžœ˜K˜K˜Kš œ žœžœžœž œ˜-K˜K˜#K˜K™Kšœžœ˜K˜K™Kšœžœ˜K˜K™Kšœ žœžœžœ˜!K˜K™ Kšœ žœžœžœ˜"K˜6K˜K™%Kšœžœžœžœ˜'K˜K™Kšœžœžœžœ˜K˜K™'šœžœžœžœ˜K˜—šœžœe˜xK˜K™K™K™K™K™K™K™—K˜K™Kšœ žœžœ˜K˜K˜"—šŸ™™Kš œžœžœ žœžœ˜MK˜Kšœžœžœ˜"K˜Kšœžœžœžœž ˜4K˜šœžœžœ˜'Kšœ˜Kšœž˜Kšœ˜—K˜Kšœžœžœžœ˜:K˜šœžœžœ˜Kšœ˜Kšœ˜KšœI™IKšœ˜——™Kšœ žœ&˜6Kšœžœžœžœ˜@šœžœžœ˜&Kšœ"˜"KšœP™PK˜K˜—šœžœžœ žœ˜8Kšœ& ˜,Kšœ) ˜/Kšœ˜——™$Kšœžœ ˜6šœžœžœžœ˜6Kšœ ˜#Kšœ ˜Kšœ˜K˜—šœžœžœ˜ Kšœ˜KšœF™FK˜K˜—Kš œžœžœžœž œ˜1šœ žœžœ˜Kšœžœ˜Kšœ˜Kšœ˜—K˜——Kšžœ˜K˜——…—z!: