%%% supporting code for printSVector. /greaterThanOrEqual { /arg2 set /arg1 set arg1 arg2 gt { 1 } { arg1 arg2 eq {1} {0} ifelse} ifelse } def /lengthUniv { length (universalNumber) dc } def /getUniv { (integer) dc get } def %% Do not forget to thow away /. [(printSVector) [( vector printSVector outputs the <> in a pretty way.) ( The elements of the vector must be strings.) ] ] putUsages %%% compiled code by d0, 1996, 8/17. /printSVector { /arg1 set [ %%start of local variables /keys /i /j /n /max /width /m /k /kk /tmp0 ] pushVariables [ %%local variables /keys arg1 def /n keys lengthUniv def /max (0).. def /i (0).. def %%for init. %%for { i n lt { } {exit} ifelse [ {%%increment /i i (1).. add def } %%end of increment{A} {%%start of B part{B} keys i getUniv lengthUniv max gt %% if-condition { %%ifbody /max keys i getUniv lengthUniv def }%%end if if body { %%if- else part } ifelse } %% end of B part. {B} 2 1 roll] {exec} map } loop %%end of for /max max (3).. add def /width (80).. def /m (0).. def %%while { m max mul (80).. lt { } {exit} ifelse /m m (1).. add def } loop /k (0).. def /kk (0).. def /i (0).. def %%for init. %%for { i n lt { } {exit} ifelse [ {%%increment /i i (1).. add def } %%end of increment{A} {%%start of B part{B} keys i getUniv messagen /kk kk (1).. add def /k k keys i getUniv lengthUniv add def /tmp0 max keys i getUniv lengthUniv sub def /j (0).. def %%for init. %%for { j tmp0 lt { } {exit} ifelse [ {%%increment /j j (1).. add def } %%end of increment{A} {%%start of B part{B} /k k (1).. add def kk m lt %% if-condition { %%ifbody ( ) messagen }%%end if if body { %%if- else part } ifelse } %% end of B part. {B} 2 1 roll] {exec} map } loop %%end of for kk m greaterThanOrEqual %% if-condition { %%ifbody /kk (0).. def /k (0).. def newline }%%end if if body { %%if- else part } ifelse } %% end of B part. {B} 2 1 roll] {exec} map } loop %%end of for newline /ExitPoint ]pop popVariables %%pop the local variables } def %%end of function