%!PS-Adobe-1.0 %%Creator: devps (Pipeline Associates, Inc.) %%CreationDate: Fri Sep 13 13:03:55 1996 %%Pages: (atend) %%DocumentFonts: (atend) /devps 180 dict def devps begin /res 10.000000 def /y_offset 843 def /X{exch}bind def /mm {transform round X round X itransform} bind def /r{rmoveto}bind def /m{moveto}bind def /l{lineto}bind def /rl{rlineto}bind def /st{stroke}bind def /gs{gsave}bind def /gr{grestore}bind def /cp{currentpoint}bind def /np{newpath}bind def /ct{curveto}bind def systemdict /setpacking known { /savepacking currentpacking def true setpacking } if /m0{0 0 moveto}bind def /xc{//res div}bind def /yc{//res neg div //y_offset add}bind def /lc{yc X xc X l st}bind def /mc{yc X xc X m}bind def /el{gs /a X def a div 1 X scale cp np a xc 2 div 0 360 arc st gr}bind def /ar{cp 7 2 roll np xc 5 1 roll atan 3 1 roll atan X arc st}bind def /sp{yc X xc X 6 2 roll yc X xc X 6 2 roll yc X xc X 6 2 roll ct}bind def /V{//res neg div //y_offset add currentpoint pop X m}bind def /H{//res div 0 transform X round X itransform pop currentpoint X pop moveto}bind def /h{//res div 0 r}bind def /v{//res neg div 0 X r}bind def /S{X H show}bind def /A{H //res div 1 index stringwidth pop sub 1 index length div 0 3 2 roll ashow}bind def /psize 10 def /height 0 def /cheight { height 0 ne { height } { psize } ifelse } bind def /slant 0 def /FF{findfont X dup 30 div 0 mm pop setlinewidth /psize X def [psize 0 cheight slant sin slant cos div mul cheight 0 0] makefont setfont}bind def /shade{gs /dy X def /dx X def np m 0 /dy rl /dx 0 rl 0 /dy neg rl /dx neg 0 rl closepath .9 setgray fill gr}bind def 1 setlinecap /resolution res 72 mul def /startFig { /SavedState save def userdict maxlength dict begin currentpoint transform DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix itransform moveto /ury exch def /urx exch def /lly exch def /llx exch def /y exch 72 mul resolution div def /x exch 72 mul resolution div def currentpoint /cy exch def /cx exch def /sx x urx llx sub div def /sy y ury lly sub div def sx sy scale cx sx div llx sub cy sy div ury sub translate /DefFigCTM matrix currentmatrix def /initmatrix { DefFigCTM setmatrix } def /defaultmatrix { DefFigCTM exch copy } def /initgraphics { DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix DefFigCTM setmatrix } def /showpage { initgraphics } def }bind def /clipFig { currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll exch lineto exch lineto exch lineto closepath clip newpath moveto }bind def /doclip { llx lly urx ury clipFig } def /endFig { end SavedState restore }bind def /globalstart { fontnum psize slant height resolution currentpoint pagesave restore gsave }bind def /globalend { grestore moveto /resolution exch def /height exch def /slant exch def /psize exch def /fontnum exch def F /pagesave save def }bind def /fontnum 1 def systemdict /setpacking known { savepacking setpacking} if end /BP{ save mark devps begin m0 /DocumentInitState [ matrix currentmatrix currentlinewidth currentlinecap currentlinejoin currentdash currentgray currentmiterlimit ] cvx def }bind def /EP{ end cleartomark restore showpage}def /Encoding-1 256 array def 0 1 255 {Encoding-1 exch /.notdef put} for Encoding-1 8#301 StandardEncoding 8#101 26 getinterval putinterval %A-B Encoding-1 8#341 StandardEncoding 8#141 26 getinterval putinterval %a-b Encoding-1 8#241 StandardEncoding 8#301 16 getinterval putinterval %accents Encoding-1 8#373 StandardEncoding 8#365 1 getinterval putinterval %dotlessi Encoding-1 dup 8#41 /copyright put dup 8#42 /registered put dup 8#43 /trademark put dup 8#44 /logicalnot put dup 8#45 /Eth put dup 8#46 /eth put dup 8#47 /Thorn put dup 8#50 /thorn put dup 8#51 /brokenbar put dup 8#52 /degree put dup 8#53 /divide put dup 8#54 /multiply put dup 8#55 /minus put dup 8#56 /onehalf put dup 8#57 /onequarter put dup 8#60 /threequarters put dup 8#101 /Aacute put dup 8#102 /Acircumflex put dup 8#103 /Adieresis put dup 8#104 /Agrave put dup 8#105 /Aring put dup 8#106 /Atilde put dup 8#107 /Ccedilla put dup 8#110 /Eacute put dup 8#111 /Ecircumflex put dup 8#112 /Edieresis put dup 8#113 /Egrave put dup 8#114 /Iacute put dup 8#115 /Icircumflex put dup 8#116 /Idieresis put dup 8#117 /Igrave put dup 8#120 /Ntilde put dup 8#121 /Oacute put dup 8#122 /Ocircumflex put dup 8#123 /Odieresis put dup 8#124 /Ograve put dup 8#125 /Otilde put dup 8#126 /Scaron put dup 8#127 /Uacute put dup 8#130 /Ucircumflex put dup 8#131 /Udieresis put dup 8#132 /Ugrave put dup 8#133 /Ydieresis put dup 8#134 /Zcaron put dup 8#135 /aacute put dup 8#136 /acircumflex put dup 8#137 /adieresis put dup 8#140 /agrave put dup 8#141 /aring put dup 8#142 /atilde put dup 8#143 /ccedilla put dup 8#144 /eacute put dup 8#145 /ecircumflex put dup 8#146 /edieresis put dup 8#147 /egrave put dup 8#150 /iacute put dup 8#151 /icircumflex put dup 8#152 /idieresis put dup 8#153 /igrave put dup 8#154 /ntilde put dup 8#155 /oacute put dup 8#156 /ocircumflex put dup 8#157 /odieresis put dup 8#160 /ograve put dup 8#161 /otilde put dup 8#162 /scaron put dup 8#163 /uacute put dup 8#164 /ucircumflex put dup 8#165 /udieresis put dup 8#166 /ugrave put dup 8#167 /ydieresis put dup 8#170 /zcaron put pop /Enc-dict 30 dict def Enc-dict /tmpstr1 50 string put Enc-dict /tmpstr2 50 string put Enc-dict /tmpstr3 50 string dup (Encoding-) exch cvs pop put /AEnc-def { % arguments: the original font's name, encoding nr Enc-dict begin tmpstr2 cvs /Enc-no exch def % Remember the number in a string dup /OrigName exch def % remember the name findfont dup maxlength dict /newdict exch def % get dictionary for new font { exch dup /FID ne { exch newdict 3 1 roll put } { pop pop } % Ignore FID ifelse } forall newdict begin /Encoding tmpstr3 9 Enc-no putinterval tmpstr3 0 9 Enc-no length add getinterval cvn load def % Replace encoding currentdict /UniqueID known { /UniqueID UniqueID Enc-no cvi 49999 mul add def } if % Derive New UniqueID end % newdict /FNlength OrigName tmpstr1 cvs length def % convert name, remember length FNlength 1 add Enc-no length add string dup 0 OrigName tmpstr1 cvs putinterval dup FNlength (-) putinterval dup FNlength 1 add Enc-no putinterval dup 0 tmpstr1 0 FNlength getinterval putinterval % Add old name cvn dup newdict /FontName 3 2 roll put newdict definefont end % Enc-dict } def /Times-Roman 1 AEnc-def pop /R-1{/Times-Roman-1 FF}def /Times-Bold 1 AEnc-def pop /B-1{/Times-Bold-1 FF}def /R{/Times-Roman FF}def /B{/Times-Bold FF}def /I{/Times-Italic FF}def %%EndProlog %%Page: 1 1 BP /slant 0 def /height 0 def 480 V 10 R 720(JOIN)S 947(\()S 989(1)S 1047(\))S 2696(Eighth)S (Edition)296 2989 A 4900(JOIN)S 5127(\()S 5169(1)S 5227(\))S 960 V 9 R 720(N)S 722(NA)S 790(AM)S 858(ME)S 940(E)S 1080 V 10 R 1080(join)S 10 R-1 1261(-)S 10 R 1343(relational)S 1749(database)S 2121(operator)S 1248 V 9 R 720(S)S 722(SY)S 774(YN)S 842(NO)S 910(OP)S 978(PS)S 1030(SI)S 1082(IS)S 1115(S)S 1368 V 10 B 1080(join)S 10 R 1286([)S 10 B-1 1320(-)S 10 B 1377(a)S 10 I 1427(n)S 10 R 1477(])S 1549([)S 10 B-1 1583(-)S 10 B 1640(e)S 10 I 1723(s)S 10 R 1770(])S 1842([)S 10 B-1 1876(-)S 10 B 1933(o)S 10 I 2021(list)S 10 R 2152(])S 2224([)S 10 B-1 2258(-)S 10 B 2315(t)S 10 I 2349(c)S 10 R 2394(])S 2466(\256le1)S 2683(\256le2)S 1536 V 9 R 720(D)S 722(DE)S 790(ES)S 848(SC)S 900(CR)S 962(RI)S 1024(IP)S 1057(PT)S 1109(TI)S 1167(IO)S 1200(ON)S 1268(N)S 1656 V 10 B 1080(Join)S 10 R 1289(forms,)S 1574(on)S 1699(the)S 1847(standard)S 2213(output,)S 2519(a)S 2590(join)S 2772(of)S 2882(the)S 3031(two)S 3208(relations)S 3581(speci\256ed)S 3965(by)S 4091(the)S 4240(lines)S 4456(of)S 10 I 4566(\256le1)S 10 R 4765(and)S 10 I 4936(\256le2)S 10 R 5117(.)S 5193(If)S 1776 V 10 I 1080(\256le1)S 10 R 1278(is)S 1370(`)S 10 R-1 1404(-)S 10 R 1461(',)S 1545(the)S 1693(standard)S (input)206 2059 A 2290(is)S 2382(used.)S 1944 V 10 I 1080(File1)S 10 R 1319(and)S 10 I 1490(\256le2)S 10 R 1689(must)S 1910(be)S 2031(sorted)S 2303(in)S 2407(increasing)S 2847(ASCII)S 3137(collating)S 3515(sequence)S 3910(on)S 4037(the)S 4187(\256elds)S 4432(on)S 4559(which)S 4832(they)S 5032(are)S 5183(to)S 2064 V 1080(be)S 1200(joined,)S 1501(normally)S 1889(the)S 2037(\256rst)S 2219(in)S (each)185 2322 A 2532(line.)S 2232 V 1080(There)S 1342(is)S 1435(one)S 1606(line)S 1783(in)S 1887(the)S 2036(output)S 2318(for)S (each)185 2462 A 2673(pair)S 2856(of)S 2966(lines)S 3182(in)S 10 I 3286(\256le1)S 10 R 3485(and)S 10 I 3657(\256le2)S 10 R 3857(that)S 4035(have)S 4252(identical)S 4626(join)S 4809(\256elds.)S 5104(The)S 2352 V 1080(output)S 1368(line)S 1551(normally)S 1946(consists)S 2296(of)S 2412(the)S 2567(common)S 2950(\256eld,)S 3186(then)S 3391(the)S 3546(rest)S 3724(of)S 3840(the)S 3995(line)S 4178(from)S 10 I 4405(\256le1)S 10 R 4586(,)S 4642(then)S 4846(the)S 5000(rest)S 5177(of)S 2472 V 1080(the)S 1228(line)S 1404(from)S 10 I 1625(\256le2)S 10 R 1806(.)S 2640 V 1080(Fields)S 1356(are)S 1510(normally)S 1904(separated)S 2316(by)S 2447(blank,)S 2726(tab)S 2880(or)S 2995(newline.)S 3395(In)S 3510(this)S 3686(case,)S (multiple)335 3916 A 4282(separators)S (count)223 4722 A 4976(as)S 5091(one,)S 2760 V 1080(and)S 1250(leading)S 1571(separators)S 2005(are)S 2154(discarded.)S 2928 V 1080(These)S 1346(options)S 1666(are)S (recognized:)470 1815 A 3096 V 10 B-1 1080(-)S 10 B 1137(a)S 10 I 1187(n)S 10 R 1440(In)S (addition)329 1552 A 1909(to)S 2015(the)S 2166(normal)S 2479(output,)S (produce)324 2788 A 3140(a)S 3213(line)S 3392(for)S (each)185 3538 A (unpairable)425 3751 A 4204(line)S 4383(in)S 4490(\256le)S 10 I 4648(n)S 10 R 4706(,)S 4760(where)S 10 I 5036(n)S 10 R 5115(is)S 5211(1)S 3216 V 1440(or)S 1549(2.)S 3384 V 10 B-1 1080(-)S 10 B 1137(e)S 10 I 1207(s)S 10 R (Replace)325 1440 A 1790(empty)S 2066(output)S 2347(\256elds)S 2590(by)S 2715(string)S 10 I 2969(s)S 10 R 3016(.)S 3552 V 10 B-1 1080(-)S 10 B 1137(o)S 10 I 1212(list)S 10 R 1440(Each)S 1680(output)S 1975(line)S 2165(comprises)S 2612(the)S 2774(\256elds)S 3031(speci\256ed)S 3428(in)S 10 I 3545(list)S 10 R 3676(,)S (each)185 3740 A 3964(element)S 4322(of)S 4445(which)S 4730(has)S 4903(the)S 5065(form)S 3672 V 10 I 1440(n)S 10 R 1498(.)S 10 I 1523(m)S 10 R 1604(,)S 1654(where)S 10 I 1926(n)S 10 R 2001(is)S 2093(a)S 2163(\256le)S 2317(number)S 2649(and)S 10 I 2819(m)S 10 R 2917(is)S 3009(a)S 3079(\256eld)S 3283(number.)S 3840 V 10 B-1 1080(-)S 10 B 1137(t)S 10 I 1171(c)S 10 R 1440(Use)S 1622(character)S 10 I 2018(c)S 10 R 2088(as)S 2197(a)S 2267(separator)S 2662(\(tab)S 2844(character\).)S 3324(Every)S 3590(appearance)S 4069(of)S 10 I 4178(c)S 10 R 4248(in)S 4351(a)S 4421(line)S 4597(is)S 4689(signi\256cant.)S 4008 V 9 R 720(S)S 722(SE)S 774(EE)S 832(E)S 913(A)S 915(AL)S 983(LS)S 1041(SO)S 1093(O)S 4128 V 10 B 1080(sort)S 10 R 1248(\(1\),)S 10 B 1416(comm)S 10 R 1679(\(1\),)S 10 B 1847(awk)S 10 R 2026(\(1\).)S 4296 V 9 R 720(B)S 722(BU)S 784(UG)S 852(GS)S 920(S)S 4416 V 10 R 1080(With)S 1306(default)S 1612(\256eld)S 1817(separation,)S 2282(the)S 2431(collating)S 2809(sequence)S 3204(is)S 3297(that)S 3474(of)S 10 B 3584(sort)S 10 B-1 3778(-)S 10 B 3835(b)S 10 R 3891(;)S 3945(with)S 10 B-1 4150(-)S 10 B 4207(t)S 10 R 4241(,)S 4292(the)S 4441(sequence)S 4836(is)S 4929(that)S 5106(of)S 5216(a)S 4536 V 1080(plain)S 1306(sort.)S 4704 V 1080(The)S (conventions)485 1262 A 1772(of)S 10 B 1881(join)S 10 R 2049(,)S 10 B 2099(sort)S 10 R 2267(,)S 10 B 2317(comm)S 10 R 2580(,)S 10 B 2630(uniq)S 10 R 2826(,)S 10 B 2876(look)S 10 R 3085(and)S 10 B 3255(awk)S 10 R 3434(\(1\))S 3577(are)S 3726(wildly)S (incongruous.)521 4008 A 7903 V 720(Page)S 941(1)S 2654(\()S 2696(April)S 2934(29,)S (1985)200 3084 A 3292(\))S 4455(September)S 4911(13,)S (1996)200 5061 A 8143 V EP %%Trailer %%DocumentFonts: Times-Roman Times-Bold Times-Italic %%Pages: 1