[BACK]Return to printSVector.modified.sm1 CVS log [TXT][DIR] Up to [local] / OpenXM / src / k097 / lib

Annotation of OpenXM/src/k097/lib/printSVector.modified.sm1, Revision 1.1.1.1

1.1       maekawa     1: %%% supporting code for printSVector.
                      2: /greaterThanOrEqual {
                      3:   /arg2 set /arg1 set
                      4:   arg1 arg2 gt { 1 }
                      5:   { arg1 arg2 eq {1} {0} ifelse} ifelse
                      6: } def
                      7:
                      8: /lengthUniv {
                      9:  length (universalNumber) dc
                     10: } def
                     11:
                     12: /getUniv {
                     13:  (integer) dc get
                     14: } def  %% Do not forget to thow away /.
                     15:
                     16: [(printSVector)
                     17:  [( vector printSVector   outputs the <<vector>> in a pretty way.)
                     18:   ( The elements of the vector must be strings.)
                     19:  ]
                     20: ] putUsages
                     21:
                     22: %%% compiled code by d0, 1996, 8/17.
                     23: /printSVector {
                     24:  /arg1 set
                     25: [ %%start of local variables
                     26: /keys /i /j /n /max /width /m /k /kk /tmp0 ] pushVariables [ %%local variables
                     27: /keys arg1 def
                     28: /n
                     29: keys lengthUniv
                     30:  def
                     31: /max (0)..  def
                     32: /i (0)..  def
                     33: %%for init.
                     34: %%for
                     35: { i n  lt
                     36:  {  } {exit} ifelse
                     37: [ {%%increment
                     38: /i  i (1).. add def
                     39: } %%end of increment{A}
                     40: {%%start of B part{B}
                     41: keys i  getUniv lengthUniv
                     42: max  gt
                     43:  %% if-condition
                     44:   { %%ifbody
                     45: /max
                     46: keys i   getUniv lengthUniv
                     47:  def
                     48:   }%%end if if body
                     49:   { %%if- else part
                     50:   } ifelse
                     51: } %% end of B part. {B}
                     52:  2 1 roll] {exec} map
                     53: } loop %%end of for
                     54: /max max (3)..  add
                     55:  def
                     56: /width (80)..  def
                     57: /m (0)..  def
                     58:
                     59: %%while
                     60: { m max  mul
                     61: (80)..  lt
                     62:  { } {exit} ifelse
                     63:  /m m (1)..  add
                     64:  def
                     65: } loop
                     66: /k (0)..  def
                     67: /kk (0)..  def
                     68: /i (0)..  def
                     69: %%for init.
                     70: %%for
                     71: { i n  lt
                     72:  {  } {exit} ifelse
                     73: [ {%%increment
                     74: /i  i (1).. add def
                     75: } %%end of increment{A}
                     76: {%%start of B part{B}
                     77: keys i getUniv messagen
                     78: /kk kk (1)..  add
                     79:  def
                     80: /k k
                     81: keys i getUniv lengthUniv
                     82:  add
                     83:  def
                     84: /tmp0 max
                     85: keys i  getUniv lengthUniv
                     86:  sub
                     87:  def
                     88: /j (0)..  def
                     89: %%for init.
                     90: %%for
                     91: { j tmp0  lt
                     92:  {  } {exit} ifelse
                     93: [ {%%increment
                     94: /j  j (1).. add def
                     95: } %%end of increment{A}
                     96: {%%start of B part{B}
                     97: /k k (1)..  add
                     98:  def
                     99: kk m  lt
                    100:  %% if-condition
                    101:   { %%ifbody
                    102: ( ) messagen
                    103:   }%%end if if body
                    104:   { %%if- else part
                    105:   } ifelse
                    106: } %% end of B part. {B}
                    107:  2 1 roll] {exec} map
                    108: } loop %%end of for
                    109: kk m  greaterThanOrEqual
                    110:  %% if-condition
                    111:   { %%ifbody
                    112: /kk (0)..  def
                    113: /k (0)..  def
                    114: newline
                    115:   }%%end if if body
                    116:   { %%if- else part
                    117:   } ifelse
                    118: } %% end of B part. {B}
                    119:  2 1 roll] {exec} map
                    120: } loop %%end of for
                    121: newline
                    122: /ExitPoint ]pop popVariables %%pop the local variables
                    123: } def
                    124: %%end of function
                    125:

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>