1HIGHER-LEVELNSPROTOCOLFUNCTIONSThefollowingisadescriptionoftheInterlisp-DfacilitiesforusingXeroxSPPandCourierprotocolsandtheservicesbasedonthem.Thesectionsonnamingconventions,Printing,andFilingareofgeneralinteresttousersofNetworkSystemsservers.TheremainingsectionsdescribeinterfacesofinteresttothosewhowishtoprogramotherapplicationsontopofeitherCourierorSPP.1.1NameandAddressConventionsAddressesofhostsintheNSworldconsistofthreeparts,anetworknumber,amachinenumber,andasocketnumber.ThesethreepartsareembodiedintheInterlisp-DdatatypeNSADDRESS.ObjectsoftypeNSADDRESSprintas"net#h1.h2.h3#socket",whereallthenumbersareprintedinoctalradix,andthe48-bithostnumberisbrokenintothree16-bitfields.MostfunctionsthatacceptanaddressargumentwillaccepteitheranNSADDRESSobjectorastringthatistheprintedrepresentationoftheaddress.Higher-levelfunctionsaccepthostargumentsintheformofasymbolicnameforthehost.TheNSworldhasahierarchicalnamespace.Eachobjectnameisinthreeparts:theOrganization,theDomain,andtheObjectparts.Therecanbemanydomainsinasingleorganization,andmanyobjectsinasingledomain.ThenamespaceismaintainedbytheClearinghouse,adistributednetworkdatabaseservice.AClearinghousenameisstandardlynotatedasobject:domain:organization.Thepartsorganizationordomain:organizationmaybeomittediftheyarethedefault(seebelow).Alphabeticcaseisnotsignificant.Internally,namesarerepresentedasobjectsofdatatypeNSNAME,butmostfunctionsacceptthetextualrepresentationaswell,eitherasalitatomorastring.ObjectsoftypeNSNAMEprintasobject:domain:organization,withfieldsomittedwhentheyareequaltothedefault.ADomainisstandardlyrepresentedasanNSNAMEinwhichtheobjectpartisnull.IffrequentuseistobemadeofanNSname,itisgenerallypreferabletoconvertittoanNSNAMEonce,bycallingPARSE.NSNAME,thenpassingtheresultantobjecttoallfunctionsdesiringit.CH.DEFAULT.ORGANIZATION[Variable]ThisisastringspecifyingthedefaultClearinghouseorganization.CH.DEFAULT.DOMAIN[Variable]ThisisastringspecifyingthedefaultClearinghousedomain.IfitorthevariableCH.DEFAULT.ORGANIZATIONisNIL,theyaresetbyLispsystemcode(whentheyareneeded)tobethefirstdomainservedbythenearestClearinghouseserver.Insmallorganizationswithjustonedomain,itisreasonabletojustleavethesevariablesNILandhavethesystemsetthemappropriately.Inorganizationswithmorethanonedomain,itiswisetosettheminthesiteinitializationfile,soasnottobedependentonexactlywhichClearinghouseserversareupatanytime.(PARSE.NSNAMENAME#PARTSDEFAULTDOMAIN)[Function]When#PARTSis3(orNIL),parsesNAME,alitatomorstring,intoitsthreeparts,returninganobjectoftypeNSNAME.Ifthedomainororganizationisomitted,defaultsaresupplied,eitherfromDEFAULTDOMAIN(anNSNAMEwhosedomainandorganizationfieldsonlyareused)orfromthevariablesCH.DEFAULT.DOMAINandCH.DEFAULT.ORGANIZATION.If#PARTSis2,NAMEisinterpretedasadomainname,andanNSNAMEwithnullobjectisreturned.Inthiscase,ifNAMEisafull3-partname,theobjectpartisstrippedoff. q?` p q?` g_p b;q b; \u Tw %;-\ur\u-\u Yp { O &- +\-k047:!?DGLI}I}Yp WX a !& .N36J:$BhDG"G"I G @!B% ()<,2`49 :?EGGG E }}EsE ErEdK !%(#)a+05 8:<ArE C nxB$&?(p+-3.037T9c;>? ACGIIC A &/!$%'e*.q00AtA 8AArA8;";"AtA?ArA@yCE3E3AtAHArAIRIRA ?  j <!9$ ,/v37}89=BC2EIlIl? >u z z>ut>u !>ur>u"# *X/~49C>u ;~ S  j$.%%;~t;~);~r;~);~t;~-;~r;~.K;~t;~ 5;~r;~67698=5AD I}I}2 0 [0s00 -E-r-0 5-,m %',Y 5% <,s,<, )&;)&r)&0 5)&'m %',Y 5%:J;<>]@EE'&s)&r&*K++&s&.&r&.1357:l>AEHH&$Z!#N%*.027g @3D$ !  )$)%Q& -+.14v7=Y=Y!s!?!r!@6BEHH! @/ u &<)',/17%8M9@&BEsE  ut (s)r**f0 6FuYr !$$s&r'++u/ r/05M6:=?5BF F y<"##&&s+r,H,-0&46 >+?iDII}"9%q%qu /r0 2\2\s7fr7;@C JJ{&6"$R')/D/D{s{={r{=@l@l{s)r*Pur[u#3r#$ +-).&269f;);)s@3r@CvFJJv" %%&X&Xvuv)vrv*(+f,c.268<?R@EGv # q?`2If#PARTSis1,NAMEisinterpretedasanorganizationname,andasimplestringisreturned.Inthiscase,ifNAMEisa2-or3-partname,theorganizationisextractedfromit.IfNAMEisalreadyanobjectoftypeNSNAME,thenitisreturnedasis(if#PARTSis3),oritsdomainand/ororganizationpartsareextracted(if#PARTSis1or2).(NSNAME.TO.STRINGNSNAMEFULLNAMEFLG)[Function]ConvertsNSNAME,anobjectoftypeNSNAME,toitsstringrepresentation.IfFULLNAMEFLGistrue,thefullprintednameisreturned;otherwise,fieldsthatareequaltothedefaultareomitted.ProgrammerswhowishtomanipulateNSADDRESSandNSNAMEobjectsdirectlyshouldloadtheLibrarypackageETHERRECORDS.1.2ClearinghouseFunctionsThissectiondescribesfunctionsthatmaybeusedtoaccessinformationintheClearinghouse.(START.CLEARINGHOUSERESTARTFLG)[Function]PerformsanexpandingringbroadcastinordertofindthenearestClearinghouseserver,whoseaddressitreturns.IfaClearinghousehasalreadybeenlocated,thisfunctionsimplyreturnsitsaddressimmediately,unlessRESTARTFLGistrue,inwhichcasethecacheofClearinghouseinformationisinvalidatedandanewbroadcastisperformed.START.CLEARINGHOUSEisnormallyperformedautomaticallybythesystemthefirsttimeitneedsClearinghouseinformation;however,itmaybenecessarytocallitexplicitly(withRESTARTFLGset)ifthelocalClearinghouseservergoesdown.CH.NET.HINT[Variable]Anumberorlistofnumbers,givingahintastowhichnetworkthenearestClearinghouseserverison.WhenSTART.CLEARINGHOUSElooksforaClearinghouseserver,itprobesthenetwork(s)givenbyCH.NET.HINTfirst,performingtheexpandingringbroadcastonlyifitfailsthere.IfthenearestClearinghouseserverisnotonthedirectlyconnectednetwork,settingCH.NET.HINTtothepropernetworknumberinthelocalINITfilecanspeedupSTART.CLEARINGHOUSEconsiderably.(SHOW.CLEARINGHOUSEENTIRE.CLEARINGHOUSE?DONT.GRAPH)[Function]ThisfunctiondisplaysthestructureofthecachedClearinghouseinformationinawindow.Oncecreated,itwillberedisplayedwheneverthecacheisupdated,untilthewindowisclosed.ThestructureisshownusingtheLibrarypackageGRAPHER.IfENTIRE.CLEARINGHOUSE?istrue,thenthisfunctionprobestheClearinghousetodiscovertheentiredomain:organizationstructureoftheInternet,andgraphstheresult.IfDONT.GRAPHistrue,thestructureisnotgraphed,butrathertheresultsarereturnedasanestedlistindicatingthestructure.(LOOKUP.NS.SERVERNAMETYPEFULLFLG)[Function]Returnstheaddress,asanNSADDRESS,fortheobjectNAME.TYPEisthepropertyunderwhichtheaddressisstored,whichdefaultstoADDRESS.LIST.Theinformationiscachedsothatitneednotberecomputedoneachcall;thecacheisclearedbyrestartingtheClearinghouse.IfFULLFLGistrue,returnsalistwhosefirstelementisthecanonicalnameofNAMEandwhosetailistheaddresslist.ThefollowingfunctionsperformvarioussortsofretrievaloperationsondatabaseentriesintheClearinghouse.Here,"TheClearinghouse"referstothecollectiveserviceofferedbyalltheClearinghouseserversonaninternet;Lispinternallydealswithwhichactualserver(s)itneedstocontacttoobtainthedesriedinformation.Theargument(s)describingtheobjectsunderconsiderationcanbestringsorNSNAME's,andinmostcasescanGv fr hs hbrbubbrb[bub#3brb#$ +-). 6:v<=B0EGGb`~c] #%%`~u`~(`~r`~(*(+%,.<2684 ?AFJJ`~^^\\u\o\r\!#k'R(++\s\0\r\1x4o56@@\u\Ex\r\EGHJ}J}\ZN! )4,m.4J55ZuZ:ZrZ;@xZsZ@~Z WWuW\ ' WsW'WrW(O(0 6FWVBBVuV!FVrV!#')+, , VsV1VrV13F48AB C^C^VTu fTrT $ &:(-8027 >9AD\FJJTS"S %S P 3  } }PsP( PrP(d**PsP/PrP0O49}=@BGGP NNsN NrNpNqNvN H  \w )HrHH E Ii"?$'(,m 35B7s @>EsE@DE BBuB #BsB#BrB$B$0 6FBAOX$'K-C.2H368=; FJ=J=AO?Z %\%' ( 037:?B@GG?>Id!% -11>Iu>I 94>Ir>I9:=?WC4EH%H%>I<> $ +-( 467:K@CA HjHH<;Cs&;Cr;C&(--4] <>g@DGII;C9r '> / 458:x@[AD6E^E^984 U84u84 '584r84')+(-Y0n 9:=@C84s84C84 5G 15Gr5G0 55G3 ",(+,/1(26;=B_B_328 n#L$&'**28s28:28r28;G>@A JJ280 K"| ),.k.k0s0 70r08; BD1JJ0/ VN"8#k$'Q+,W.3 ;?@C9EGBGB/ -e!'3+h+h-s- 4-r-46}8<BGHH-,,s,D,r,!$3')),s,9,r,: A,s,A, )$)$u)$*6 1)$s)$2)$r)$23S6 <)$'#& +-/P3 <~ CESFPFP'&K$%(N* 1&7*9[<>5CFHH&$!.!$/)*/249>>$s$Dw$r$D$!!u!''!r!'(+.136z:< EGBGB! "!.P35f7=?CEIJFJF "u r!#$0&a+-*/p47B; =QApCIJJ #&+ +s+ //u/ %^/s/&5/r/&&0 6F/"$m&0&0s-r.o0~266u:r:;;m;mu>ir>?B0GGuR %=&{*.355s ?2r?@9B J7J7B w!$'( 09257:=>CEMEM  '(0))u.r/)0g3t78;?AFGJJ !!u%r%n'+.$/b16M8`  {Fm"%&+ 2F49=?HAy JJJ   f ! '+02N46@ ? CnEFG G  ]G =v"S&%+y,0S16`7;>$B JhJJ   q! $ -/y1<5f66 s < r =@ADH JiJi  o q?`3containthewildcard"*",whichmatchesasubsequenceofzeroormorecharacters.Wildcardsarepermittedonlyinthemostspecificfieldofaname(e.g.,intheobjectpartofafullthree-partname).Whenanoperationintendedforasingleobjectisinsteadgivenapattern,theoperationisusuallyperformedonthefirstmatchingobjectinthedatabase,whichmayormaynotbeinteresting.(CH.LOOKUP.OBJECTOBJECTPATTERN)[Function]LooksupOBJECTPATTERNintheClearinghousedatabase,returningitscanonicalname(asanNSNAME)iffound,NILotherwise.IfOBJECTPATTERNcontainsa"*",returnsthefirstmatchingname.(CH.LIST.ORGANIZATIONSORGANIZATIONPATTERN)[Function]ReturnsalistoforganizationnamesintheClearinghousedatabasematchingORGANIZATIONPATTERN.Thedefaultpatternis"*",whichmatchesanything.(CH.LIST.DOMAINSDOMAINPATTERN)[Function]Returnsalistofdomainnames(two-partNSNAME's)intheClearinghousedatabasematchingDOMAINPATTERN.Thedefaultpatternis"*",whichmatchesanythinginthedefaultorganization.(CH.LIST.OBJECTSOBJECTPATTERNPROPERTY)[Function]ReturnsalistofobjectnamesmatchingOBJECTPATTERNandhavingthepropertyPROPERTY.PROPERTYisanumberorasymbolicnameforaClearinghouseproperty;thelatterincludeUSER,PRINT.SERVICE,FILE.SERVICE,MEMBERS,ADDRESS.LISTandALL.Forexample,(CH.LIST.OBJECTS"*:PARC:Xerox"(QUOTEUSER))returnsalistofthenamesofusersinthedomainPARC:Xerox.(CH.LIST.OBJECTS"*lisp*:PARC:Xerox"(QUOTEMEMBERS))returnsalistofallgroupnamesinPARC:Xeroxcontainingthesubstring"lisp".(CH.LIST.ALIASESOBJECTNAMEPATTERN)[Function]ReturnsalistofallobjectsintheClearinghousedatabasethatarealiasesandmatchOBJECTNAMEPATTERN.(CH.LIST.ALIASES.OFOBJECT)[Function]ReturnsalistofallobjectsintheClearinghousedatabasethatarealiasesofOBJECT.(CH.RETRIEVE.ITEMOBJECTPROPERTYINTERPRETATION)[Function]RetrievesthevalueofthePROPERTYpropertyofOBJECT.Returnsalistoftwoelements,thecanonicalnameoftheobjectandthevalue.IfINTERPRETATIONisgiven,itisaClearinghousetype(seesectionX.XX)withwhichtointerpretthebitsthatcomeback;otherwise,thevalueissimplyoftheform(SEQUENCEUNSPECIFIED),alistof16-bitintegersrepresentingthevalue.(CH.RETRIEVE.MEMBERSOBJECTPROPERTY---)[Function]RetrievesthemembersofthegroupOBJECT,asalistofNSNAME's.PROPERTYisClearinghouseGrouppropertyunderwhichthemembersarestored;theusualpropertyusedforthispurposeisMEMBERS.(CH.ISMEMBERGROUPNAMEPROPERTYSECONDARYPROPERTYNAME)[Function]TestswhetherNAMEisamemberofGROUPNAME'sPROPERTYproperty.Thisisapotentiallycomplexoperation;seethedescriptionofprocedureIsMemberintheClearinghouseProtocoldocumentationfordetails.Ji  frIhsJjh brBbsbbrbyV"s#p +7,/1,4 ;";zACJJb `u ^tt!$&9(j,Q/013 :>z>BD~JtJt`u ^~E,j#q$n)T+1{27:=?AD~JJJJ^ ]o [N+"m$&v ,]os]o-]o ZZuZ "ZsZ#ZrZ#$P0 6FZXvvXuX &-XrX&(*6 38>@GF'IIXWs__WssWsiWsrWs :!m%%WssWs('WsrWs( ./%0z0zWsuWs :1WsrWs:?@AgWssWsB>WsrWsCH!JRJRWsUK"UsU"U REERuR+RsR,RrR,-60 6FRQn ? '+-u/ 8r=CCQnOu% OrO%(d,1i23WOsO4.OrO59k>DOsOD O L;;LuL "~LsL#ULrL#$0 6FLKr ?% )"..KrsKr3KrrKr57%9V B"GGKrInnIuI &IrI'`* .34L4IsI5IrI73;@-EG,I]I]IHZ "HZsHZ"HZ Em;;EmuEm "8(\EmsEm)3EmrEm))0 6FEmC ?$&(;..CuC 7CrC8:>AFFCB^uB^rB^B^uB^c#B^rB^#%&+,-3<689 BHJJB^@@s@"@r@""@s@ -@r@.Z.Z@s@ 8n@r@99@s@>@r@??@s@ I@r@JJ@?O++?Os?O?Or?O ?O@BQDJJ! ="D#&),p.2r244 =u = >k =r =>@CEFDGAGA = n"O$)Y-04a5;U=?BFII7 ""#()+/ / 7s77s A7r7B7C4EBFJJ7 #7%h(s( u :&'s(r()N0 6F2y$l%((++2u20W2r21235772s2<(2r2=> > 2u2D/2r2DEE2 n#)",038:?WADJ`J`#0#A$$#s#*`#r#*#s#*# 6 6u6# 046s646r65J56 <6u"r"$&%#*a++u3hr44u:r;@A0DEXFUFU' <" (+#-T 415< < 's'B'r'CDFF' n$ -/4 q 4  q?`o41.3NSPrintingThissectiondescribesthefacilitiesthatareavailableforprintingInterpressmastersonNSPrintservers.(NSPRINTPRINTERFILEOPTIONS)[Function]ThisfunctionprintsanInterpressmasteronPRINTER,whichisaClearinghousenamerepresentedasastringorNSNAME.IfPRINTERisNIL,NSPRINTusesthefirstprintserverregisteredinthedefaultdomain.FILEisthenameofanInterpressfiletobeprinted.OPTIONSisalistinpropertylistformatthatcontrolsdetailsoftheprinting.Possiblepropertiesareasfollows:DOCUMENT.NAMEThedocumentnametoappearontheheaderpage(astring).Defaultisthefullnameofthefile.DOCUMENT.CREATION.DATEThecreationdatetoappearontheheaderpage(aLispintegerdate,suchasreturnedbyIDATE).Thedefaultvalueisthecreationdateofthefile.SENDER.NAMEThenameofthesendertoappearontheheaderpage(astring).Thedefaultvalueisthenameoftheuser.RECIPIENT.NAMEThenameoftherecipienttoappearontheheaderpage(astring).Thedefaultisnone.#COPIESThenumberofcopiestobeprinted.Thedefaultvalueis1.MEDIUMThemediumonwhichthemasteristobeprinted.Ifomitted,thisdefaultstothevalueofNSPRINT.DEFAULT.MEDIUM,asfollows:NILmeanstousetheprinter'sdefault;Tmeanstousethefirstmediumreportedavailablebytheprinter;anyothervaluemustbeaCouriervalueoftypeMEDIUM.Theformatofthistypeisalist(PAPER(KNOWN.SIZETYPE))or(PAPER(OTHER.SIZE(WIDTHLENGTH))).ThepaperTYPEisoneofUS.LETTER,US.LEGAL,A0throughA10,ISO.B0throughISO.B10,andJIS.B0throughJIS.B10.STAPLE?Trueifthedocumentshouldbestapled.#SIDES1or2toindicatethatthedocumentshouldbeprintedononeortwosides,respectively.ThedefaultisthevalueofEMPRESS#SIDES.PRIORITYThepriorityofthisprintrequest,oneofLOW,NORMAL,orHIGH.Thedefaultistheprinter'sdefault.(NSPRINTER.STATUSPRINTER)[Function]Thisfunctionreturnsalistdescribingtheprinter'scurrentstatus---whetheritisavailableorbusy,andwhatkindofpaperisloaded.(NSPRINTER.PROPERTIESPRINTER)[Function]Thisfunctionreturnsalistdescribingtheprinter'scapabilitiesatthemoment---typeofpaperloaded,whetheritcanprinttwo-sided,etc.1.4NSFilingLispaccessesXeroxNSfileserversusingtheNSFilingProtocol.Formostoperations,theprogrammersimplytreatstheNSfileserverasanyotherhostordevice.OPENFILE,GETFILEINFO,DIRECTORYallworkappropriatelywhenthefilenamespecifiesanNSfileserverhostname,e.g.,4 g2q hs h bq  \wbrbb ^ I0 _ #$(*/ 5:<>BF|^s^F^ \\u\ \s\\r\ 9 0 6F\Z"$R *.00ZuZ5ZrZ6h:E;< ELHHZY [ X#%%YsY*YrY+M+,,YuY2YrY2o33YsY62YrY66YsY@RBGHBHBUTn "$&%*RTnsTn*XTnQ !QrQ!"=""%k+/605 69=m@AFqFFQ O%&)+m.024OsO4OM)MrM)t)*$*3,146B:BFGJqJqM K|%@(n+p,2[4)4)K|sK|8\K|rK|99<@DvEGGK| I%(*E,v.IsI.IG GrG 7 "%k(*,02n68:?%B=CH)HHG Ew#}'+n,.2n36*8EwsEw8EwB "dBrB"##l%='+w-/3461:<`>BFGvGvB @%J%(K,.1B@s@1H@>>r>3 #}(y*./1D6>69?=A0BnCu>s>C{>;$;$r;$\ #}(*.o04679b>\>@ EEGG;$ 9%'O),..9s9@9r9AC0H3HH9 8 s#Y8 r8 #')F+-2778 s8 88 r8 9=/>@C'EE8 6&+o0249ABCEE4 3qs& 003qu3q33qs3q5s3qr3q57a7a3qs3q=B GVGV3q 1!1u1&*1s1-]1r1. .d1 441u171r189Q;=Y=Y1s1D1r1EE1 0Ys'0Yr0Y(<(<0Ys0Y)0Yr0Y*B/H/H0Ys0Y10Yr0Y2}2}0Ys0Y70Yr0Y7<<0Ys0YB0Yr0YCvEE0Y .s%.r.&6+<+<.s.1.r.1t.s.1z.++r+3 $%4'e-138-+s+83+((r(\ !#r$z%*-/5:H< @BEFII( 'g$Y +,I.3i46:R;;'gs'g F'gr'gG'gs'gG%'g$zZ$zr$z b #}(?),</t4p68x8x$zs$z:$zr$z;;$zs$z@$zr$zAgBB$zs$zFY$zr$zGG`J J $z "%K&(-2m"s"2s"  u / s  r ^0 6F u#V$S&a ,.448BCE JJu81!_$_%)*/#s/) nnu!s"br"#0 6Fy#V$S&a ,.44 ;<> GIsIsyT$%;'* 1539q3? 0  \w)0r0/0 +  \!$&G*!/025 <> FqJJ+  z ,!#n'(1(1 s . r // s 8 r 99 s A r AmC.F{F{  1["$e&(,/3p6#6# s q?`z5{PHYLEX:PARC:XEROX}LIBRARY>GRAPHER.DCOM;1.NotethatallNSFileServerhostnamesmustcontainacolon,evenifthedomainandorganizationfieldsaredefaulted,inorderthattheybedistinguishablefromothertypesofhostnames(e.g.,Pupservernames).NotealsothatspacesareallowablecharactersinNSnames.Thus,ifanNSfilenamecontainsspaces(inthefilenameortheservername)andispresentedasalitatom,thespacesmustbequotedwith%.However,allthestandardfileoperationsalsoworkwhenthenameispresentedasastring,inwhichcasethereisnoproblemwithspaces.ThefollowingarefeaturesspecifictoNSfileservers.(BREAK.NSFILING.CONNECTIONHOST)[Function]ClosesanyopenconnectionstoNSfileserverHOST.FILING.ENUMERATION.DEPTH[Variable]ThefullNSFilingProtocolsupportsatruehierarchicalnamespaceforfiles.ThisleavessomeambiguityabouthowdeepthefunctionDIRECTORYshouldenumeratefiles.ThedepthiscontrolledbythevariableFILING.ENUMERATION.DEPTH,whichiseitheranumber,specifyingthenumberoflevelsdeeptoenumerate,orT,meaningenumeratetoalllevels.Intheformercase,whentheenumerationreachesthespecifieddepth,onlythesubdirectorynamerootedatthatlevelislisted,andnoneofitsdescendantsislisted.WhenFILING.ENUMERATION.DEPTHisT,allfilesarelisted,andnosubdirectorynamesarelisted.FILING.ENUMERATION.DEPTHisinitiallyT.IndependentofFILING.ENUMERATION.DEPTH,arequesttoenumeratethetop-levelofafileserver'shierarchylistsonlythetoplevel,i.e.,assumesadepthof1.Forexample,(DIRECTORY'{PHYLEX:})listsexactlythetop-leveldirectoriesoftheserverPHYLEX:.1.5SPPStreamInterfaceThissectiondescribesthestreaminterfacetotheSequencedPacketProtocol.SPPisthetransportprotocolforCourier,whichinturnisthetransportlayerforFilingandPrinting.(SPP.OPENHOSTSOCKETPROBEPNAMEWHENCLOSEDFN)[Function]ThisfunctionisusedtoopenabidirectionalSPPstream.Therearetwocases:userandserver.User:IfHOSTisspecified,anSPPconnectionisinitiatedtoHOST,anNSADDRESSorstringrepresentinganNSaddress.Ifthesocketpartoftheaddressisnull(zero),itisdefaultedtoSOCKET.IfbothHOSTandPROBEParespecified,thentheconnectionisprobedforaresponsebeforereturningthestream;NILisreturnedifHOSTdoesn'trespond.Server:IfHOSTisNIL,apassiveconnectioniscreatedwhichlistensforanincomingconnectiontolocalsocketSOCKET.SPP.OPENreturnstheinputsideofthebidirectionalstream;thefunctionSPPOUTPUTSTREAMisusedtoobtaintheoutputside.ThestandardstreamoperationsBIN,READP,EOFP(ontheinputside),andBOUT,FORCEOUTPUT(ontheoutputside),aredefinedonthesestreams,asisCLOSEF,whichcanbeappliedtoeitherstreamtoclosetheconnection.NAMEisamnemonicnamefortheconnectionprocess,mainlyusefulfordebugging.WHENCLOSEDFNisanoptionalfunctionorlistoffunctionstocallwhenthestreamisclosed,eitherbytheuserortheserver.(SPPOUTPUTSTREAMSTREAM)[Function]6#  frIhsJjh b/1mbrb22t58Z:<[?C"EJJb `u -9"$ ,1/1 89=?BD]D]`u ^"Z.!%(+y/W4<47:x=A!CGI1I1^ ]o /[YO!#'Z,0246:< >QB/F9HJJ]o [Y "'))[s[*[r[+x+135;0=j CFII[ Z` z<z !"&b)",|-/47;Z` W| {U" (XW|sW|(^W| T TuT#TsT$TrT%%Z0 6FTS3 v ')A+-11SuS4SrS5"SsS5(S PPrPt0 5PNK!',c-`0 7J:>a@pCCFJJNM J#&),/1v1vMsM9MrM9]=D:GOGJPJPMK{_ !#%**K{sK{?K{rK{?CDHIIK{I ":$k)g*.13: :%;;IsIJJIHccTN $'+~- 5:.<_AEHHHcF $(<),F/\04k6:7;=n DFIJCJCFE]E]sE].E]rE]/ 0I0IE]sE]1 E]rE]136O8u@ HVHVE]C !!CsC5-CrC56;;CsC;|=CXHJJ3~ 10 c }#%),'1A1s11G1 /ZZ/u/#Y -A/s/./r/.p.0 6F/- #$'( 03`78P<">H@DGMII-++)>)u))r)u &(W+ 138L99)u)<)r)=?q?q)s)G)r)GXHH)'H !#%++Y,.2579M>?EAF G3HqHq'& & u& "& r& #V$''& u& *& r& +A--& u& 2d& r& 24 :=? FGG& $/>;#'-/44$s$7$r$7m8>?H?H$u$Bz$r$BG_G_$"" ; u  r  !X!X s # r $%* 026:>@BVH+H+  i!%%u*r*s*Zr"5$f'*,.E 6:<B9B9s#;r#$')^-q/367:9?MC JJs'rs rs"r"n$&*j-0m0ms3r4y4ys =r>@_BFJJJJo"')g**s/r0_4<68\=>BPFHHp "pup"prr#>&(+ 16;1?A( HH^H^ u  r " #).Y/139S:=.@BG&HdHd  "%}')D-!s-' ;; u  s  r 80 6F  N q?`6AppliedtotheinputstreamofanSPPconnection,thisfunctionreturnsthecorrespondingoutputstream.SPP.USER.TIMEOUT[Variable]Specifiesthetime,inmilliseconds,towaitbeforedecidingthatahostisn'tresponding.(SPP.SENDEOMSTREAM)[Function]Transmitsthedatabufferedsofaronthisoutputstream,ifany,withtheEndofMessagebitset.Ifthereisnothingbuffered,sendsazero-lengthpacketwithEndofMessagebitset.(SPP.DSTYPESTREAMDSTYPE)[Function]Accessesthecurrentdatastreamtypeoftheconnection.IfDSTYPEisNIL,returnsthedatastreamtypeofthecurrentpacketbeingread.IfDSTYPEisnon-NIL,setsthedatastreamtypeofallsubsequentpacketssentonthisconnection,untilthenextcalltoSPP.DSTYPE.Sincethisaffectsthecurrentpartially-filledpacket,thestreamshouldprobablybeflushed(viaFORCEOUTPUT)beforethisfunctioniscalled.(SPP.EOMPSTREAM)[Function]ThisfunctionreturnsTorNILdependingonwhetherornotanEndofMessageindicationhasbeenreached.Thisisonlytrueafterthelastbyteofdatainthemessagehasbeenread.Byconvention,EOFPistrueofastreamthatisatEOM.(SPP.CLEAREOMSTREAMNOERRORFLG)[Function]ClearstheEndofMessageindicationonSTREAM.ThisisnecessaryinordertoreadbeyondtheEOM.CausesanerrorifthestreamisnotcurrentlyattheEndofMessage,unlessNOERRORFLGistrue.(SPP.SENDATTENTIONSTREAMATTENTIONBYTE)[Function]SendsanSPP"attention"packet,onewiththeAttentionbitsetandcontainingthesinglebyteofdataATTENTIONBYTE.1.6CourierRemoteProcedureCallProtocolCourieristheXeroxNetworkSystemsRemoteProcedureCallprotocol.ItusestheSequencedPacketProtocolforreliabletransport.Courierusesprocedurecallasametaphorfortheexchangeofarequestfromauserprocessanditspositivereplyfromaserverprocess;exceptionsorerrorconditionsarethemetaphorforanegativereply.Afamilyofremoteproceduresandtheerrorstheycanraiseconstitutearemoteprogram.Aremoteprogramgenerallyrepresentsacompleteservice,suchastheFilingorPrintingprogramsdescribedearlierinthischapter.FormoredetailaboutCourier,thereaderisreferredtothepublishedspecificationoftheCourierprotocol.Thefollowingdocumentationassumessomefamiliaritywiththeprotocol.ItdescribeshowtodefineaCourierprogramanduseittocommunicatewitharemotesystemelementthatimplementsaserverforthatprogram.Thissectiondoesnotdiscusshowtoconstructsuchaserver.1.6.1DefiningCourierProgramsACourierprogramdefinitionisafilepackagetypeandcommand,COURIERPROGRAMS.Thus,youcanuseGETDEF,PUTDEF,andEDITDEFtomanipulatethem,orusethefilepackagecommand(COURIERPROGRAMSname1name2...)tosavethem.ThefunctionCOURIERPROGRAMcanbeusedtodefineaCourierprograminitially.(COURIERPROGRAMNAME...)[NLambdaNoSpreadFunction]ThisfunctionisusedtodefineCourierprograms.Thesyntaxis6F fr hs hbr<m"'((*v-6 4U6<@BBb`~ c#'`~s`~'`~ ]d]r]0 5]\+\!#* +,/b38;}ACEcJJWV .!%+/R0O 7M;w>bA,BH IIV TTsTT Q QuQQsQ{QrQ+0 6FQP  <" ),u.01 7O788P uP =P rP =??P sP AP rP BOFIIP N a B!#(,0\335L5LNuN9NrN:,;j>)NsN@NrNA^AD)FZFZNL a B!# */21361 =P@fBExGISISLKrs KrrKr #&*&,W09>%@VDHHKrIA"%:%:IsI .wIrI/H3g5; <^@#IsI@)I FZZFuF(FsFFrFW0 6FFEm#V#VEmsEm$-EmrEm$&&EmsEm(EmrEm(/1b68:[<>@sEEEmC  "N'*+.1]4j68;=X@.ACIICB^Z! ((B^sB^,1B^rB^,-0|237E9;"<@1B^sB^@7B^ ?q ?qu?q "?qs?q#?qr?q#$A0 6F?q=!1& ,..=u=3b=r=44i7S8>t?CyDGG=c DGG6f4]>!!4u4 +h4r4+4q4+4 /  \wD("?'W/r/']/ ,G: %,$.4s468;AFF, *9H Y!=$*X,.4/1547C9t?A@AFmIJJ* ) bz! "%+ 136a <>A&G)I8J5J5) '196 %( *;.03@6L .CHHH! " {  $+ *-/5F56<?s@DEE " 6. #&',K058< ?r@oDMF\HH VW! #%^+./2q2 V dwPVrVVV Q S7  %1(*1"1"QsQ=QrQ>j>BhDGMIIQ srsrhsr* &*P+.-0^27== 9s;E"O%9r9&'*Y. .b1 6R6R9s9 B9r9BlDFII9  t}z^ s dd u " s  r #{0 6=5B  4 #$(-346:; 4s 4; 4 q?`87(COURIERPROGRAMNAME(PROGRAMNUMBERVERSIONNUMBER).DEFINITIONS)ThetailDEFINITIONSisapropertylistwherethepropertiesareselectedfromTYPES,PROCEDURES,ERRORSandINHERITS;thevaluesarelistsofpairsoftheform(LABEL.DEFINITION).Thesearedescribedinmoredetailasfollows:TheTYPESsectionliststhesymbolically-definedtypesusedtorepresenttheargumentsandresultsofproceduresanderrorsinthisCourierprogram.Eachelementinthissectionisoftheform(TYPENAMETYPEDEFINITION),e.g.,(PRIORITYINTEGER).TheTYPEDEFINITIONcanbeapredefinedtype(seenextsection),anothertypedefinedinthisTYPESsection,oraqualifiedtypenametakenfromanotherCourierprogram;theselatterarewrittenasadottedpair(PROGRAMNAME.TYPENAME).ThePROCEDURESsectionliststheremoteproceduresdefinedbythisCourierprogram.AproceduredefinitionisastylizedreductionoftheCourierdefinitionsyntaxdefinedintheCourierProtocolspecification:(PROCEDURENAMENUMBERARGUMENTSRETURNSRESULTTYPESREPORTSERRORNAMES)ARGUMENTSisalistoftypenames,oneperargumenttotheremoteprocedure,orNILiftheproceduretakesnoarguments.RESULTTYPESisalistoftypenames,oneforeachvaluetobereturned.ERRORNAMESisalistofnamesoferrorsthatcanberaisedbythisprocedure;eachsucherrormustbelistedintheprogram'sERRORSsection.TheatomsRETURNSandREPORTSarenoisewordstoaidreadability.TheERRORSsectionliststheerrorsthatcanberaisedbyproceduresinthisprogram.Anerrordefinitionisoftheform(ERRORNAMENUMBERARGUMENTS),whereARGUMENTSisalistoftypenames,oneforeachargument,ifany,reportedbytheerror.TheINHERITSsectionisanoptionallistofotherCourierprograms,someofwhosedefinitionsare"inherited"bythisprogram.Morespecifically,ifatype,procedureorerrorreferencedinthecurrentprogramdefinitionisnotdefinedinthisprogram,thesystemsearchesforadefinitionofitineachoftheinheritedprogramsinturn,andusesthefirstsuchdefinitionfound.TheINHERITSsectionisusefulwhendefiningvariantsofagivenCourierprogram.Forexample,ifonewantedtotryoutversion4ofCourierprogramBAR,andversion4differedfromversion3ofprogramBARonlyinasmallnumberofprocedureortypedefinitions,onecoulddefineaprogramNEWBARwithanINHERITSsectionof(BAR)andonlyneedtolistthefewchangeddefinitionsinsideNEWBAR.1.6.2CourierTypeDefinitionsThissectiondescribeshowtheCouriertypesdescribedintheCourierProtocoldocumentareexpressedinaLispCourierprogramdefinition,andhowvaluesofeachtypearerepresented.EachtypeinaCourierprogram'sTYPESsectionmustultimatelybedefinedintermsofoneofthefollowing"base"types,althoughthedefinitioncanbeindirectthrougharbitrarilymanylevels.Thatis,atypecanbedefinedintermsofanyothertypeknownbyanextantCourierdefinition.Thenamesofthebasetypesare"global";theyneednoqualification,nordotypenamesmentionedinthesameCourierprogram.TorefertoatypenotdefinedinthesameCourierprogram(ortoanynon-basetypewhenthereisnoprogramcontext),onewritesaQualified; 4 g,sIhJjhb5$$b5ub5'b5sb5(a)8b5ub5 4b5sb544b5ub5 ?@b5sb5@b5`yP'`u` "`s`#g`r`#m`]Kzz]u] #5]r]#$%+1-?1(3Y 9;@CC]s]H)]r]HH]\0s \0r\0\0s\0$\0r\0%''\0s\0.[\0r\0/,1]5[7:;>@VBEF8\0u\0J \0r\0JbJb\0ZQQZuZ \ZrZ#%+-L04J5:|ZWKKWsW~WrW"A$'37:;A_CJ J WV4+J %(2+-y/4::>C%DGGV4T K #?#TuT*,TrT**TuT 4TrT58g8gTsT@GTrTH4HHTS%KKS%uS% #RS%rS%#&'( /2f57="ADIIS%Q"QsQQrQ#%x&u,2"58=BHHQP`$%&*-N-PuP 7 PrP7c88PuP>PrP?\PM2KKM2sM2 !M2rM2" &t)+7/ 6;Q=?DuJ*JJM2KQ $g%&+d1[259 @D&HJuJuKJ#" *J#sJ#*J#GjyGjuGj "GjsGj""GjuGj( GjsGj((GjuGj03GjsGj09GjFyP'Z1&&FuF .FsF/6d6dFuF >FsF?_FuF?eFC%C%rC%J "$&+l-006)79>Q DFFC%sC%IC%rC%IlJJC%A#"q$I ++u+uAuA 3ArA4 5I6F8T9<A-CEHHA@_# #x#x@u@ +@r@+-2./0=157h;/=@+AEGJJ@> k m#o&)+/'0299>s>>>r>>tC6CF7J J >=s=r=dd=s=%E=r=%'+&/02 9H=:KK:s:U:r:#%'+.A02a638 >@UBH|HH:8 " #^$')8s8*85y5u55s55u5$5s5%%5u5-5s5-5r5.6522u2!2r2"3#q$n&|(*/U136=4>gA2FH^JJ21111.MKK.Ms.M .Mr.M [$&',/038?BD H H .M, <b &l(:*0a04I ;r<=@G+HH,+> x!$)(. 465t7<> @{F1HbHb+>) !"0#- )C*+-v0x2449?A@DnFII)(8|~ $(v(8%TKK%Ts%T %Tr%T [$&)-r279):&=BHDHH%T#"n'(*,1^2f38>3>3#s#@#r#AhCHII#"<#w$& +h+h" r ?/CE%E% s IX r II $+C "%'u, 3M77$s$<($r$<$q$<$ ^ dwD ^r^^ Y I $N*F+-28 >Z@FHI I Y    "&(u+w.X0~ 8 8e;>@ AEE S..SsSaSrS$] "$c)2*.N/2V36;@<CIIS  % ;[4 : &r*-.W1n3469?;?AQDFxHH D cDg*! 'o'*p.02A5-8:@CcFHiHiD  _7-#%T'*/5m57:<`=]@>BGSHH > %tXE%c(D+/$0b2:7= ?C[DXDX >t >J J > q?`W8name,intheform(PROGRAM.TYPE).Ingeneral,aQualifiednameislegalinanyplacethatcallsforaCouriertype.1.6.2.1Pre-definedTypesPre-defined(atomic)typesareexpressedasuppercaselitatomsfromthefollowingset:BOOLEANValuesarerepresentedbyTandNIL.INTEGERValuesarerepresentedassmallintegersintherange[-32768..32767].CARDINALValuesarerepresentedassmallintegersintherange[0..65535].UNSPECIFIEDSameasCARDINAL.LONGINTEGERValuesarerepresentedasFIXP's.LONGCARDINALSameasLONGINTEGER.NotethatInterlisp-Ddoesnot(currently)haveadatatypethattrulyrepresentsa32-bitunsignedinteger.STRINGValuesarerepresentedasLispstrings.Inaddition,thefollowingtypesnotinthedocumenthavebeenaddedforconvenience:TIMERepresentsadateandtimeinaccordancewiththeNetworkTimeStandard.ThevalueisaFIXPsuchasreturnedbythefunctionIDATE,andisencodedasaLONGCARDINAL.NSADDRESSRepresentsanetworkaddress.ThevalueisanobjectoftypeNSADDRESS(sectionX.XX),andisencodedassixitemsoftypeUNSPECIFIED.NSNAMERepresentsathree-partClearinghousename.ThevalueisanobjectoftypeNSNAME(sectionX.XX),andisencodedasthreeitemsoftypeSTRING.NSNAME2Representsatwo-partClearinghousename,i.e.,adomain.ThevalueisanobjectoftypeNSNAME(sectionX.XX),andisencodedastwoitemsoftypeSTRING.1.6.2.2ConstructedTypesConstructedTypesarecompositeobjectsmadeupofelementsofothertypes.TheyareallexpressedasalistwhoseCARnamesthetypeandwhoseremainingelementsgivedetails.Thefollowingareavailable:(ENUMERATION(NAMEINDEX)...(NAMEINDEX))EachNAMEisanarbitrarylitatomorstring;thecorrespondingINDEXisitsCourierencoding(aCARDINAL).ValuesoftypeENUMERATIONarerepresentedasaNAMEfromthelistofchoices.Forexample,avalueoftype(ENUMERATION(UNKNOWN0)(RED1)(BLUE2))mightbethelitatomRED.(SEQUENCETYPE)ASEQUENCEvalueisrepresentedasalist,eachelementbeingoftypeTYPE.ASEQUENCEoflengthzeroisrepresentedasNIL.NotethatthereisnomaximumlengthforaSEQUENCEintheLispimplementationofCourier.(ARRAYLENGTHTYPE)AnARRAYvalueisrepresentedasalistofLENGTHelements,eachoftypeTYPE.(CHOICE(NAMEINDEXTYPE)...(NAMEINDEXTYPE))TheCHOICEtypeallowsonetoselectamongseveraldifferenttypesatruntime;theINDEXisusedintheencodingtoJ > g t hs h bt brb Ar#bub5brb =!&'-1G2579<?BpDE|J`J`b `k `kq`k `k Zlw ZrZZ W 6r" #).245:<#WsW<)W TTrT- $K&&TsT&TrT'H))TsT,VTrT,TsT,T QQrQ- $K%):.*/15w>QsQ>Q NNrN\ $K%):.*/15w ;`NsN;fN K 1KrK93KsK"lKrK"KsK"K H 1HrH9 $K%%HsH)(HrH*[HsH*aH F FrF`3FsF $FrF%%)?+ 258 >ABHJJFD !$$DtD)DrD*I.DsD.D AArAV $K%(,A > )Z8 c"(+/35 <>s><> ; P;r; X wt!J#&(I /(24D9=4C7CF8II;:):)s:)9:)r:)!&~(L*}//:)s:)3:)r:)4708n=?7@4@4:)8s 8r8! 8s8!8 55r53 wt#()+/&0d2'67:z:z5s5B 5r5BaGEGE54$:$I%'+2,//4$s4$ 84$r4$924$s4$984$ 1717r17V wt $ -p1X14Y79:>@FC'C'17s17H117r17HH17/ "#)-*.13 55/s/:/r/;O/s/;U/ ,,r,- wt# ,0|2399[<?~@BFfGG,+2+2s+2+2r+2#(a*,(1p25n8:s=T=T+2s+2B^+2r+2B+2q+2B+2 %llw h%lr%ln%l "g xU{"4%')4.0I37t7;%=K? EFGII"g  s w r  }&,V/336 D8 s D>  ut3s"=#u&*s,?r,,-G/)2l2lu5r6<7z9=>C1DHHk !!kuk%Skrk%&(-y3.44ksk;\krk<<A'BEEks r 7"] )+,,u/r/35L7Z8=>+@FGGDJJS-SsS %-0 4@6;>TSrS>BsD6FgFgS""srs ZZuVs-r555s r!E$% -5./25:!=?GB(B(uE$rEF+GGNsZNrN=#F&'X .00NsN2NrN3E369<>?FCJLJLNs fr ">$o'Y 127ns7t usrnQvvs!r"%{& -/r0o2}44u8r90?BCFFuI|rIsI  u AFB s !L"# u %), s . r ./@/14M4M s 9W r 9<@C DHH  \Y$(2)/1M1M \u \5 \r \5d69;/=`CDD \ q?`9distinguishthevaluetypes.AvalueoftypeCHOICEisrepresentedinLispasalistoftwoelements,(NAMEVALUE).Forexample,avalueoftype(CHOICE(STATUS0(ENUMERATION(BUSY0)(COMPLETE1)))(MESSAGE1STRING))couldbe(STATUSCOMPLETE)or(MESSAGE"Outofpaper.").(RECORD(FIELDNAMETYPE)...(FIELDNAMETYPE))ValuesoftypeRECORDarerepresentedaslists,withoneelementforeachfieldoftherecord.Thefieldnamesarenotpartofthevalue,butareincludedfordocumentationpurposes.Forprogrammerconvenience,therearetwomacrosthatallowCourierrecordstobeconstructedanddissectedinamannersimilartoLisprecords.ThesecompileintotheappropriatecompositesofCONS,CARandCDR.(COURIER.CREATETYPEFIELDNAME_VALUE...FIELDNAME_VALUE)[Macro]CreatesavalueoftypeTYPE,whichshouldbeafully-qualifiedtypenamethatdesignatesaRECORDtype,e.g.,(MAILTRANSPORT.POSTMARK).EachFIELDNAMEshouldcorrespondtoafieldoftherecord,andallfieldsmustbeincluded.EachVALUEisevaluated;allotherargumentsarenot.Theassignmentarrowsareforreadability,andareoptional.(COURIER.FETCHTYPEFIELDOBJECT)[Macro]AnalogoustotheRecordPackageoperatorfetch.ArgumentTYPEisaswithCOURIER.CREATE;FIELDisthenameofoneofitsfields.COURIER.FETCHextractstheindicatedfieldfromOBJECT.Forreadability,thenoiseword"of"maybeinsertedbetweenFIELDandOBJECT.OnlytheargumentOBJECTisevaluated.Forexample,iftheprogramCLEARINGHOUSEhasatypedeclaration(USERDATA.VALUE(RECORD(LAST.NAME.INDEXCARDINAL)(FILE.SERVICESTRING))),thentheexpression(SETQINFO(COURIER.CREATE(CLEARINGHOUSE.USERDATA.VALUE)LAST.NAME.INDEX_12FILE.SERVICE_"Phylex:PARC:Xerox")wouldsetthevariableINFOtothelist(12"Phylex:PARC:Xerox").Theexpression(COURIER.FETCH(CLEARINGHOUSE.USERDATA.VALUE)FILE.SERVICEofINFO)wouldproduce"Phylex:PARC:Xerox".1.6.2.3UserExtensionstotheTypeLanguageTheprogrammercanaddnewbasetypestotheCourierlanguagebytellingthesystemhowtoreadandwritevaluesofthattype.Theprogrammerchoosesanameforthetype,andgivesthenameaCOURIERDEFproperty.Thenewnamecanthenbeusedanywherethatthetypenameslistedintheprevioussections,suchasCARDINAL,canbeused.Suchextensionsareusefulforuser-definedobjects,suchasdatatypes,thatarenotnaturallyrepresentedbyanypredefinedorconstructedtype.TheNSADDRESSandNSNAMECouriertypesaredefinedbythismechanism.COURIERDEF[PropertyName]TheformatoftheCOURIERDEFpropertyisalistofuptofourelements,(READFNWRITEFNLENGTHFNWRITEREPFN).Thefirsttwoelementsarerequired;ifthelattertwoareomitted,thesystemwillsimulatethemasneeded.Theelementsareasfollows:D \ frIhsJjhbr ^# &'(|+-0b0bbsb5lbrb57 >:?BD%E"G0HHb`uz`uu`u"`ur`u#J#J`uu`u'>`ur`u(f(+:015Q699`us`u9`u]Z$% 058:@DD]\0yP'Z$&-O\0r\0-U\0YC<YCsYC"*FYCrYC*,4,4YCsYC37:{A3YCrYCAYCsYCAYC VVVVuVVVVsVVv !VVuVV(+VVsVV-VVrVV-.L./)3t477VVsVV:>>S@yBEtFI0I0TSGt$_&n /57SG Pc p  k!$(+/.38.9;q BEJJPc N t qL  \#.(2*- 46 ;<rBDDJgH HsH#HrH#\&)H)HHsH 57?HrH?@%ChChHGXuGXrGX"G )0*+.082i69i;*>ACItIIGXEEuEErE1o %'+136P69Q @0DpFHHEDR  "D'rDRsDR'xDR Ae AeuAe!AesAe"AerAe#,#0 4Ae?< %*//?s?41?r?458;;?u?>?r?>@%ADD?>Ms "d>Mr>M#5#5>Mu>M&>Mr>M'(V*./2 35W9299>Ms>M Du>Mr>MDII>M<!$$(s(>( %  #&$2D =/?C%r%C% " "s"# "r"#d"q"#j" lw Z Z&r&  M3"D#%*0n2<6C8t<?ADFII m }TU $%)l+{-03n68@B@F u F  M q?`10READFNThisisafunctionofthreearguments,(STREAMPROGRAMTYPE).ThefunctioniscalledbyCourierwhenitneedstoreadavalueofthistypefromSTREAMaspartofaCouriertransaction.ThefunctionreadsandreturnsthevaluefromSTREAM,possiblyusingsomeofthefunctionsdescribedinsectionX.XX.PROGRAMandTYPEarethenameoftheCourierprogramandthetype.Inthecaseofatomictypes,TYPEisalitatom,andisprovidedfortypediscriminationincasetheprogrammerhassuppliedasinglereadingfunctionforseveraldifferenttypes.Inthecaseofconstructedtypes,TYPEisalist,CARofwhichisthetypename.WRITEFNThisisafunctionoffourarguments,(STREAMVALUEPROGRAMTYPE).ThefunctioniscalledbyCourierwhenitneedstowriteVALUEtoSTREAM.PROGRAMandTYPEareaswiththereadingfunction.ThefunctionshouldwriteVALUEonSTREAM.Theresultreturnedfromthisfunctionisignored.LENGTHFNThisfunctioniscalledwhenCourierwantstowriteavalueofthistypeintheform(SEQUENCEUNSPECIFIED),andthenonlyiftheWRITEREPFNisomitted.Thefunctionisofthreearguments,(VALUEPROGRAMTYPE).Itshouldreturn,asaninteger,thenumberof16-bitwordsthattheWRITEFNwouldrequiretowriteoutthisvalue.Ifvaluesofthistypeareallthesamelength,theLENGTHFNcanbeasimpleintegerinsteadofafunction.SeediscussionofCOURIER.WRITE.SEQUENCE.UNSPECIFIED(sectionX.XX.WRITEREPFNThisfunctioniscalledwhenCourierwantstowriteavalueofthistypeintheform(SEQUENCEUNSPECIFIED).ThefunctiontakesthesameargumentsastheWRITEFN,butmustwritethevaluetothestreamprecededbyitslength.Ifthisfunctionisomitted,CourierinvokestheLENGTHFNtofindouthowlongthevalueis,andtheninvokestheWRITEFN.IftheLENGTHFNisomitted,CourierinvokestheWRITEFNonascratchstreamtofindouthowlongthevalueis.1.6.3PerformingCourierTransactionsThenormaluseofCourieristoopenaconnectionwitharemotesystemelementusingCOURIER.OPEN,performoneormoreremoteprocedurecallsusingCOURIER.CALL,thenclosetheconnectionwithCLOSEF.(COURIER.OPENHOSTNAMESERVERTYPENOERRORFLGNAMEWHENCLOSEDFN)[Function]OpensaCourierconnectiontotheCouriersocketonHOST,andreturnsanSPPstreamthatcanbepassedtoCOURIER.CALL.HOSTcanbeanNSaddress,orasymbolicClearinghousenameintheformofastring,litatomorNSNAME.Inthecaseofasymbolicname,SERVERTYPEspecifiestheClearinghousepropertyunderwhichtheserver'saddressmaybefound;normally,thisisNIL,inwhichcasetheADDRESS.LISTpropertyisused.IfNOERRORFLGistrue,NILisreturnedifaconnectioncannotbemade,ortheserversupportsthewrongversionofCourier.TheCourierconnectionprocessisnamedNAME,ifspecified.WHENCLOSEDFNisafunctionofoneargument,theCourierstream,thatwillbecalledwhentheconnectionisclosed,eitherbyuserorserver.(COURIER.CALLSTREAMPROGRAMPROCEDUREARG1...ARGNNOERRORFLG)[NoSpreadFunction]ThisfunctioncallstheremoteprocedurePROCEDUREoftheCourierprogramPROGRAM.STREAMisthestreamreturnedbyCOURIER.OPEN.TheargumentsshouldbeLispvaluesappropriatefortheCouriertypesofthecorrespondingformalparametersoftheprocedure.Theremustbethesamenumberofactualandformalarguments.IftheF gDu hs hbu`brbh #$%+@,0% 67sbub<BEbrbFGIIb `~&'Y+,15W6:1;>?CDGII`~ ^$ $ ^u^(^r^)2*-h./4 ;D;GJ4J4^ ]x%W'+.:.:]xu]x3]xr]x38LA C=C=X Wl (*0(1%49>@E[E[Wl U&H**\+./02z 9=X=XUuU@TUrU@ABEMEMUsUGUrUH*IIU T]$%( +.T]uT].T]QyQyrQy_ #$%+@,/ 6u6QyuQy<@<FNIJQyrQyJrJJQy O#}(*-/4z89(<>ZAAOuOEOrOEGtGtO Nsu%NsrNs&Q&QNsuNs,NsrNs,u..NsuNs1NsrNs2R4x58;?EwEHxHxNs L&*e--LuL1LrL133LuL8LrL9T9?CjDGgJHJHH G"T$''GsG0# :7GrG:=p@gCQDFFG Ezu (}EzrEz(*/N/2O78:_= DEEzuEzIAIAEz C&)CrC+ +b,05M68=U?DF IIC Bt$'P))BtuBt.BtrBt/>3;79S<>AYE*EFFBt @$&](+-/159x;;@u@B@r@B]DF}GzGz@ ?n%)t-/0~66t8 ?*@@?n =s"=b=r==BFd=u=Fj=: K:r:S #)*C. 16s:%;>?CjDGgJHJH: 9{"T$''9{s9{0# :79{r9{:;>=C.F|HH9{ 7$#*,!.R.R7u737r74g69=@?qBDkFF7 6l%*,.F224S6< =JBGjGj6l 4%''4u4..4r4.025 7:<@uB DGG4 3f%''3fu3f-73fr3f-.>/113fu3f8 3fr3f8x9>CHH3f 1##1u1(j1r1(*+04E58:=@BF4Gq1q1Gw1 , dw g4 ",r,", ) )p '*+04O9U<<)s) F)r)GG) '. !Y$8'''s' 1'r'2v5m8: ADD's'I'r'I's'I' $ $u$ $z ,0n :V$s$;-$r$;;@ F$# 'i(+/355#u#9#r#9<>@BEDII#!Aa!##!s! -+!r!-.2.2!u!1d!r!14579>@AGG!  n"$&)+s,p0n466 s ; r <=<>7@hC(DEE x5  xux 'xrx(-K/| 8H=AEaGGx\ "$).1m22s50r57`;==@.@.s JBrJJi I !"Z"Ziui *Jiri*+..isi1riri138r9: AiEGwGwi!R"0')-2_39%9}<&A GGZE ZuZ$RZrZ%&5 ,,m,mZuZ 6UZrZ678>/?B7HJJZ "%9&*.H0y 7@8~<@B]E(FFTTsTT g gug (P*g+;gg+,.g/gg0 8 gsg8grg989;BFH g5!#(Z..5u555r56079>D.D.5u5I5r5JKK5upr7#x(**s 4r5s58t>C;DGG & !#& *.T/2 :? EGpII & I!s$&o(+02v6H8= CD<EGG   q?`11procedurecallissuccessful,Courierreturnstheresult(s)ofthecallasspecifiedintheRETURNSsectionoftheproceduredefinition.Ifthereisonlyasingleresult,itisreturneddirectly,otherwisealistofresultsisreturned.ProceduresthattakeaBulkDataargument(sourceorsink)aretreatedspecially;seesectionX.XX.Iftheprocedurecallresultsinanerror,oneofthreepossiblecoursesisavailable.ThedefaultbehavioristocauseaLisperror.Tosuppresstheerror,anoptionalkeywordcanbeappendedtotheargumentlist,asifanextraargument.ThisNOERRORFLGargumentcanbetheatomNOERROR,inwhichcaseNILisreturnedastheresultofthecall.IfNOERRORFLGisRETURNERRORS,theresultofthecallisalist(ERRORERRORNAME.ERRORARGS).IfthefailurewasaCourierReject,ratherthanError,thenERRORNAMEistheatomREJECT.Examples:(COURIERPROGRAMPERSONNEL(171)TYPES((PERSON.NAME(RECORD(FIRST.NAMESTRING)(MIDDLEMIDDLE.PART)(LAST.NAMESTRING)))(MIDDLE.PART(CHOICE(NAME0STRING)(INITIAL1STRING)))(BIRTHDAY(RECORD(YEARCARDINAL)(MONTHSTRING)(DAYCARDINAL))))PROCEDURES((GETBIRTHDAY3(PERSON.NAME)RETURNS(BIRTHDAY)REPORTS(NO.SUCH.PERSON)))ERRORS((NO.SUCH.PERSON1)))ThisexpressiondefinesPERSONNELtobeCourierprogramnumber17,versionnumber1.Theexampledefinesthreetypes,PERSON.NAME,MIDDLE.PARTandBIRTHDAY,andoneprocedure,GETBIRTHDAY,whoseprocedurenumberis3.ThefollowingcodecouldbeusedtocalltheremoteGETBIRTHDAYprocedureonthehostwithaddressHOSTADDRESS.(SETQSTREAM(COURIER.OPENHOSTADDRESS))(PROG1(COURIER.CALLSTREAM'PERSONNEL'GETBIRTHDAY(COURIER.CREATE(PERSONNEL.BIRTHDAY)FIRST.NAME_"Eric"MIDDLE_'(INITIAL"C")LAST.NAME_"Cooper"))(CLOSEFSTREAM))COURIER.CALLinthisexamplemightreturnavaluesuchas(1959"January"10).1.6.3.1ExpeditedProcedureCallSomeCourierserverssupport"ExpeditedProcedureCall",whichisawayofperformingasingleCouriertransactionbyaPacketExchangeprotocol,ratherthangoingtotheexpenseofsettingupafullCourierconnection.Expeditedcallsmusthavenobulkdataarguments,andtheirargumentsandresultsmusteachfitintoasinglepacket.(COURIER.EXPEDITED.CALLADDRESSSOCKET#PROGRAMPROCEDUREARG1...ARGNNOERRORFLG)[NoSpreadFunction]G frHhsJjhbrM '+0n279;;l=?HDFQHHb`~s`~r`~!F"%+R 123l68:;?CDEE`~^ !''(*)+/16^\  "#'*50.46\9;@& EH!H!\Z ZW( x"&(r*5-0M152:A>@" FFYIIWV$ !#U&'*.\.06 8<;=BH1JJV$Te ";(4*,-N/2U88;;TuT CTrTD/J(J(TS A ASsS&"SrS&(R,/..SsS1tSrS13 8t9<&?ALC}F/FGGSQu QrQ ( (QsQ *AAPuPI PrPIxJJPNz!!NzsNz!+NzrNz!Nz K"KsK(K Hd#&$H G| yG| F$ y ; )//F$ D y P'Z1d;nE% /D Ct y P'Z1d;nE (0/Ct B y P ;#%+B @ y P'Z1d;nE&(0/@ ?l y Pn!x))?l > y P'Z1d;n"O(6> < y P'Z1d;n *< ;d y ;d : y ; $: 8 y P'Z1 #*98 7\ y7\ 6 yK6 4x 4xr4x 4x 1 d1s11r1!X#'-]2Y4i9=?[?B\GG1 //s/ /r//s/ (/r/)++/s/2[/r/3 58 >>/s/ G/r/HH/ .s B>|3$'+k-.0;146G::.ss.s C.sr.sDSJJ.s ,  ll,s, !,r,",s,", *. +*. ( !x * 4( '~ y P'Z1d;) 2D3;'~ &&oFyP'Z1 !d";# ,O-3 && $ y P'Z1d;nE !x"O(0)2D6w6}$ #v y P'Z1d;nE !x"O*,c 4#v " y P'K"  r`R!a%`&]),.Z.Zs3d;>Or>q> lwcri  ~ "),022572 >1?.BGG  #\':*1-/K1|68'?$AFcFc  j "%( /w25;>B<EuHwJJ  T}s  u #)/7Y9 :D :;> > ?" G s G r HAHJrJr  fd f q?`j12AttemptstoperformaCouriercallusingtheExpeditedProcedureCall.ADDRESSistheNSaddressoftheremotehostandSOCKET#isthesocketonwhichitisknowntolistenforexpeditedcalls.TheremainingargumentsareexactlyaswithCOURIER.CALL.Iftheargumentstotheproceduredonotfitinonepacket,orifthereisnoresponsetothecall,orifthecallreturnstheerrorUSE.COURIER(whichmustbedefinedbyexactlythatnameinPROGRAM),thenthecallisattemptedinsteadbythenormal,non-expeditedmethod---aCourierconnectionisopenedwithADDRESS,andCOURIER.CALLisinvokedontheargumentsgiven.1.6.3.2ExpandingRingBroadcast"ExpandingRingBroadcast"isamethodoflocatingaserverofaparticulartypewhoseaddressisnotknowninadvance.Thesystembroadcastssomesortofrequestpacketonthedirectly-connectednetwork,thenonnetworksonehopaway,thenonnetworkstwohopsaway,etc.,untilapositiveresponseisreceived.ForuseinlocatingaserverforaparticularCourierprogram,astylizedformofExpandingRingBroadcastisdefined.TherequestpacketisessentiallythecallportionofanExpeditedProcedureCallforsomeproceduredefinedintheprogram.TheresponsepacketisaCourierresponse,andtypicallycontainsatleasttheserver'saddressastheresultofthecall.Thedesigneroftheprotocolmust,ofcourse,specifywhichproceduretouseinthebroadcast(usuallyitisprocedurenumberzero)andonwhatsockettheservershouldlistenforbroadcasts.START.CLEARINGHOUSEusesthisproceduretolocatethenearestClearinghouseserver.(COURIER.BROADCAST.CALLDESTSOCKET#PROGRAMPROCEDUREARGSRESULTFNNETHINTMESSAGE)[Function]PerformsanexpandingringbroadcastforserverswillingtoimplementPROCEDUREinCourierprogramPROGRAM.DESTSOCKET#isthesocketonwhichsuchserversofthistypeareknowntolistenforbroadcasts,typicallythesamesocketonwhichtheylistenforexpeditedcalls.ARGSistheargumentlist,ifany,totheprocedure(notethatitisnotspread,unlikewithCOURIER.CALL).Ifahostrespondspositively,thenthefunctionRESULTFNiscalledwithoneargument,theCourierresultsoftheprocedurecall.IfRESULTFNreturnsanon-nullvalue,thevalueisreturnedasthevalueofCOURIER.BROADCAST.CALLandthesearchstopsthere;otherwise,thesearchforaresponsivehostcontinues.IfRESULTFNisnotsupplied(orisNIL),thentheresultsoftheprocedurecallarereturneddirectlyfromCOURIER.BROADCAST.CALL;i.e.,RESULTFNdefaultstotheidentityfunction.NETHINT,ifsupplied,isanetnumberorlistofnetnumbersasahintconcerningwhichnet(s)totryfirstbeforeperformingapureexpanding-ringbroadcast.IfMESSAGEisnon-NIL,itisadescription(string)ofwhatthebroadcastislookingfor,tobeprintedinthepromptwindowtoinformtheuserofwhatishappening.Forexample,START.CLEARINGHOUSEpassesinthemessage"Clearinghouseservers"andthehintCH.NET.HINT.1.6.3.3UsingBulkDataTransferWhenaCourierprogramneedstotransferanarbitraryamountofinformationasanargumentorresultofaCourierprocedure,theprocedureisusuallydefinedtohaveoneargumentoftype"BulkData".Theargumentisa"source"ifitisinformationtransferredfromcallertoserver(asthoughaprocedureargument),a"sink"ifitisinformationtransferredfromservertocaller(asthoughaprocedureresult).Thesetwo"types"areindicatedinaCourierprocedure'sformalargumentlistasBULK.DATA.SOURCEandBULK.DATA.SINK,respectively.ACourierproceduremayhaveatmostonesuchargument.d f fr hs hbrc# $(+F.07K=@AAbubFbrbFHJHJHb`~'!X%(+"+"`~u`~0`~r`~172u48:{>X?@EFJ J `~^""X%+P138_9<<^s^ F^r^GGI;I;^]oP #)Q+)-o/03 79%:X=>@F<GII]o[UO %-'^**[s[ 3[r[468;=BWD%HH[Z`ARRZ`uZ`$Z`rZ`%G(>*o,.4N8:<A JJZ`X "p )7*u/#22XuX7|XrX8,::XsX DXrXE!F_F_XWQ&7)WQqWQ)WQ Qlw&QrQQ N a a"v$()-/`0] 6_9@=>AC6E|IIN M t@5 "$&(*.02>3CFHHM K`W/"%V(x,.127==>{CK H p70-  #'-.3r685>B*HBIIH Gr' "$' +-C/5`;>y@CJ@)CEPJ J E D/`ij$&=(n-1927;;?EGTIID B t !M&I),-1%5"7S;1?{BEEB A oA sA uA > > r> A ~%'N+-E1 :>q> s> >w> ;3;3u;3 '%-747>cCI;3s;3J[;3r;3JK OhOh;39 98$X$'K-C/R389@9@98$u8$Gg8$r8$GI?I?8$6 6u6&6r6'_''6u6 0z6r6024A8>:=@EWFITIT65!~$' -3+5\8<>B]E>HH53""X"X3u3%f3r3%&)-/&1257 9;?BEFGJ:J:3207""""2s2 ,62r2- 2/+!S '*,22/+u/+8-/+r/+89=@tBIBIB/+-!#a%+..0A0A-u-6_-r-6;:<7AEpGG-,%Z "E$v'){){,%s,%;,%r,%AEH_H_,%*u "&)* 03[ 9:;V;V*u*At*r*AC EPJJ*))s)t)r) "&(o*03K5q:?BB)'s)'r'),R,R'u'2p'r'279C;t@ME'u'E'$$r$#$%',.02$4U9;VU@B<CHJ"J"! "$(f*-b.23Y :B:=BB s&r&*,c.33s @UG rGeIIs $r%q%! ?lw;[?r?? : N#)$*`/:0 89;^AWBFHII:  ?#(*-'/57(: =BBfEE 4+(@ " )_,015y7s;<CB J J 4  Bj  #')],.3]4Z:??mC?EJJ . ZW; g$*,.....s.;.r.;>>. s  r f V$*-02B5o7:A>AD  q?`13InaCouriercall,thebulkdataistransmittedinaspecialway,betweentheargumentsandtheresults.Therearetwobasicwaystohandlethisinthecall.Thecallercanspecifyhowthebulkdataistobeinterpreted(howtoreadorwriteit),orthecallercanrequesttobegivenabulkdatastreamastheresultoftheCouriercall.Theformeristhepreferredway;botharedescribedbelow.Inthefirstmethod,thecallerpassesastheactualargumenttotheCouriercall(i.e.,inthepositionintheargumentlistoccupiedbyBULK.DATA.SOURCEorBULK.DATA.SINK)afunctiontoperformthetransfer.Couriersetsupthetransaction,thencallsthesuppliedfunctionwithoneargument,astreamonwhichtowrite(ifasourceargument)orread(ifasink)thebulkdata.Ifthefunctionreturnsnormally,theCouriertransactionproceedsasusual;ifiterrorsout,CouriersendsaBulkDataAborttoabortthetransaction.Inthecaseofasinkargument,ifthevaluereturnedfromthesinkfunctionisnon-NIL,itisreturnedastheresultofCOURIER.CALL;otherwise,theresultofCOURIER.CALListheusualprocedureresult,asdeclaredintheCourierprogram.Forconvenience,aBulkDatasinkargumenttoaCouriercallcanbespecifiedasafullyqualifiedCouriertype,e.g.,(CLEARINGHOUSE.NAME),inwhichcasetheBulkDatastreamisreadasa"streamof"thattype(seeCOURIER.READ.BULKDATA,below).ThesecondmethodforhandlingbulkdataistopassNILasthebulkdata"argument"toCOURIER.CALL.Inthiscase,Couriersetsupthecall,thenreturnsastreamthatisopenforOUTPUT(ifasourceargument)orINPUT(ifasink).Thecallerisresponsiblefortransferringthebulkdataonthestream,thenclosingthestreamtocompletethetransaction.ThevaluereturnedfromCLOSEFistheCourierresult.Thismethodisrequiredifthecaller'scontrolstructureisopen-endedinawaysuchthatthebulkdatacannotbetransferredwithinthescopeofthecalltoCOURIER.CALL.Ineithermethod,thestreamonwhichthebulkdataistransferredisastandardInterlispstream,soBIN,BOUT,COPYBYTESareallappropriate.ManyCourierprogramsdefinea"Streamof"asameansoftransferringanarbitrarynumberofobjects,allofthesametype.AlthoughthisistypicallyspecifiedformallyintheprintedCourierdocumentationasarecursivedefinition,therecursionisinpracticeunnecessaryandunwieldy;instead,thefollowingfunctionshouldbeused.(COURIER.READ.BULKDATASTREAMPROGRAMTYPE)[Function]ReadsfromSTREAMa"StreamofTYPE"forCourierprogramPROGRAM,andreturnsalistoftheobjectsread.Passing(X.Y)asthebulkargumenttoaCouriercallisthusequivalenttopassingthefunction(LAMBDA(STREAM)(COURIER.READ.BULKDATASTREAMXY)).1.6.3.4CourierSubfunctionsforDataTransferThefollowingfunctionsareofinteresttothosewhotransferdatainCourierrepresentations,e.g.,aspartofafunctiontoimplementauser-definedCouriertype.(COURIER.READSTREAMPROGRAMTYPE)[Function]ReadsfromthestreamSTREAMaCouriervalueoftypeTYPEforprogramPROGRAM.IfTYPEisapredefinedtype,thenPROGRAMisirrelevant;otherwise,itisrequiredinordertoqualifyTYPE.(COURIER.WRITESTREAMITEMPROGRAMTYPE)[Function]WritesITEMtothestreamSTREAMasaCouriervalueoftypeTYPEforprogramPROGRAM.(COURIER.READ.SEQUENCESTREAMPROGRAMBASETYPE)[Function]AD frHhsJjh br w*[[1o $z%&+A.C35@E_EIIb `~ P!#$ &*8,1369;=>@^ G=JJ`~ ^ t`D=#% &*Q+N.N1$5e69<>=@nERHH\H\^ ]x <mEh t"(,s]x Z  pWK "&,.H0y5]7:<>GCUDGGZ YhhYsY&YrY'0((YsY 4YrY5Y6V;=BDDuIIIY WK/` w"V$)/+24:;@"AEGWJJW V .\Y!#&)*F+-37=?DDV T F !$o)S,-14/89<? ET Q  Q"(f+-0579QsQ.?lDFWHHQ P PsP .PrP N"&''PsP 1PrP23O58??C2DJJP N t N K p a^~j$c%&+.0|2?79I:F=QBGGK J -JsJ y'"ZJrJ# $(g+'-X0x379%<=>CEHZHZJ H ttHsH!HrH!&!H E p p#F$&((EsE+TErE+--/^2^54 <> > EsE H!ErEHI(I(E D  w[?"6&'+./35&5&DsD:0DrD:<4=1APGIXIXD Bs'BrB+(;y #w% ,.1468=f@]DFFB @5j !%5*--@s@2@r@394w6;?~?BGHH@ ?sR!!"_ )+7,4.1469<@B I^I^?s =8^jj=s= %~=r=%= ; R "%() 0128_=B?CC;s;FZ;r;G G ; 9ws P9wr9w9ws9w9wr9w  9w 6 "$F)7*+/1U 8:O?DFJFJ6 5x4 #p$)/46Y8=-BB5 3 #A !#)*,i1Y 8;QAFdHH3 2c&22s282 /EE/u/"Y(k+g/s/,>/r/,,0 6F/--u-"-r-"#)$**-u---r-.05;;-u-@-r-AD HII-,;l #,)!PP)!s)!!1)!r)!!# %;(;.4/0579.< BCHH)!''s'$,a?EGAI'r'J'q'J#' !lwD EH!&!r!&!  {Fl "%%(i-D016~@BDPGHII G;mj %% 'GsG'G Z ZuZ #ZsZ$ZrZ%%_0 6FZ$@$@u)r)f*c/G24L7-7-u:)r:<AAuGrHiHJJKuKrK41 "&())KuK.KrK/C0 6 =@>h?EFJ J K"urs  u$'s(r)))0 6FOOuOOrO4!&&&&OuO*OrO+L,-26(7::OuO=OrO=?EUEUOunrs EE u "Y(k.e s /< r //0 6F  ; q?`*14ReadsfromthestreamSTREAMaCouriervalueSEQUENCEofvaluesoftypeTYPEforprogramPROGRAM.Equivalentto(COURIER.READSTREAMPROGRAM(SEQUENCEBASETYPE)).(COURIER.WRITE.SEQUENCESTREAMITEMPROGRAMBASETYPE)[Function]Equivalentto(COURIER.WRITESTREAMITEMPROGRAM(SEQUENCEBASETYPE)).SomeCourierprogramstrafficinvalueswhoseinterpretationisleftuptotheclientsoftheprogram;thevaluesaretransferredinCouriertransactionsasvaluesoftype(SEQUENCEUNSPECIFIED).Forexample,theClearinghouseprogramtransfersthevalueofadatabasepropertyasanuninterpretedsequence,leavingituptothecaller,whoknowswhattypeofvaluetheparticularpropertytakes,tointerpretthesequenceofrawbitsassomeotherCourierrepresentation.Thefollowingfunctionsareusefulwhendealingwithsuchvalues.(COURIER.WRITE.REPVALUEPROGRAMTYPE)[Function]Producesalistof16-bitintegers,i.e.,avalueoftype(SEQUENCEUNSPECIFIED),thatrepresentsVALUEwheninterpretedasaCouriervalueoftypeTYPEinPROGRAM.Examples:(COURIER.WRITE.REPTNIL'BOOLEAN)=>(1)(COURIER.WRITE.REP"Thing"NIL'STRING)=>(552150Q64556Q63400Q)(COURIER.WRITE.REP'(1025)NIL'(SEQUENCEINTEGER))=>(21025)(COURIER.READ.REPLIST.OF.WORDSPROGRAMTYPE)[Function]InterpretsLIST.OF.WORDS,alistof16-bitintegers,asaCourierobjectoftypeTYPEintheCourierprogramPROGRAM.(COURIER.WRITE.SEQUENCE.UNSPECIFIEDSTREAMITEMPROGRAMTYPE)[Function]WritestothestreamSTREAMintheform(SEQUENCEUNSPECIFIED)theobjectITEM,whosevalueisreallyaCouriervalueoftypeTYPEforprogramPROGRAM.Equivalentto,butusuallymuchmoreefficientthan,(COURIER.WRITESTREAM(COURIER.WRITE.REPITEMPROGRAMTYPE)NIL'(SEQUENCEUNSPECIFIED)).6F fr hs hbr$@$@bub)brb)f*c/G22bsb9ybrb9;\?Z@CCbubFbrbGI)I)b`u`uu`u!`ur`u"{" )++`us`u 66`uu`u;`us`ucDrHJ&J&R Qe  Xe:M{ \!%a' -268#=?EG IIQe O f K"#%+1a37o:?BEIOsOIO LLuL#$5'1LsL(LrL(`(0 6FLKiXUc $),b-_02d5E5EKisKi= GKirKiHoHoKiIA IuI#IrI#'d .C/059:==IuI@IrI@B_B_IuIH+IrIHI2I2IHZHZsHZHZEm&(E+44EmrEm6EmsEm69yEmB&-O08:8:BrB:JBsB:PBA( Q&2,1A(>;&*.&1 :C%C%>;r>;E5>;s>;F FF>;< Q"%a< 99u9 "a(s+o9s9,F9r9,,0 6F98j 8ju8j %8jr8j&u'r)+ .456;|?c@CC8ju8jF8jr8jG#HH8j6##6u6(6r6)86s6)>6 3#(0(03u3-D0693s3:t3r3:;$; A32nW""2nu2n'2nr2n')o+..2ns2n7> AR2nr2nACGG2n0u0r0WU!# &',014n4n0u07j0r079?/?/0u0D0r0EFF0/_ ^6!& )-2:55/_s/_ B"B"/_u/_F/_s/_GG/_.&&.u.).s.*s*s.u.0?.s.11.u.4.s.59 BYBY.,{ !,{r,{!,{s,{!,{ q?`r TIMESROMAN TIMESROMAN ~GACHA  TIMESROMAN  TIMESROMAN ~GACHA X Z & K1 -= I TV Za mz{ 7j/E'{ERIS}HARMONY>DOC>ETHERNS.TEDIT;2SANNELLA 5-Dec-84 15:20:50