DIRECTORY PS; PSArrayImpl: CEDAR PROGRAM IMPORTS PS ~ BEGIN OPEN PS; ArrayCreate: PUBLIC PROC [size: INT] RETURNS [Array] ~ { IF size<0 THEN ERROR Error[rangecheck]; IF size IN ArrayIndex THEN { ref: ArrayRef ~ NEW[ArrayRep[size]]; RETURN[[ val: [executable: FALSE, variant: array[access: unlimited, start: 0, length: size]], ref: ref ]]; } ELSE ERROR Error[limitcheck]; }; ArraySetAccess: PUBLIC PROC [array: Array, access: Access] RETURNS [Array] ~ { IF array.val.access˜UKšœ˜Kšœ˜—K˜—Kšœœ˜K˜K˜—š ž œœœœœ™9Kšœ™K™K™—šž œœœœ ™