home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a040 / 2.ddi / SHRWARE4.ARC / MSASETB.INC < prev    next >
Encoding:
Text File  |  1988-06-03  |  3.0 KB  |  130 lines

  1. <<* MSASETB.INC *>>
  2. <<*
  3. integer PageIndent,PageWidth,SCREENWIDTH,panmax
  4. integer headlen,datalen
  5. logical IsBigWid
  6. *>>
  7. <<#
  8.  
  9. procedure GetItemLen  <<*sets: headlen,datalen*>>
  10. begin
  11.   IsBigWid := false
  12.   <<* -Compute DATA display width*>>
  13.   if fldtyp = 'L'   <<*Logical display is different*>>
  14.     datalen := 3
  15.   else
  16.     datalen := fldwid
  17.   endif
  18.   if datalen > PageWidth   <<*SUBSTR candidate*>>
  19.     datalen := PageWidth
  20.     IsBigWid := true
  21.   endif
  22.   <<* -Compute HEADING display width*>>
  23.   headlen := len( fldnam )  <<*Start with fldnam length*>>
  24.   if headlen < datalen
  25.     headlen := datalen
  26.   endif
  27. end <<*GetItemLen*>>
  28.  
  29.  
  30. function JumpToPage( pagemax : integer ) : integer
  31. integer lentotal,pagitem
  32. logical done
  33. begin
  34.   pagitem := 1
  35.   select field 1
  36.   while (pagitem <> pagemax) and not eof(fields)
  37.     lentotal := PageIndent  <<*Start with this*>>
  38.     done := false
  39.     while not (done or eof(fields))
  40.       GetItemLen  <<*sets: headlen,datalen*>>
  41.       if lentotal + headlen + 1 <= SCREENWIDTH
  42.         lentotal := lentotal + headlen + 1   <<*plus SPACE*>>
  43.         skip field
  44.       else
  45.         pagitem := pagitem + 1
  46.         done := true
  47.       endif
  48.     endwhile
  49.   endwhile
  50.   RETURN pagitem
  51. end <<*JumpToPage*>>
  52.  
  53.  
  54. function BrowseHeading : string
  55. logical done
  56. integer lentotal
  57. string  line,token
  58. begin
  59.   done := false
  60.   lentotal := PageIndent
  61.   while not (done or eof(fields))
  62.     GetItemLen  <<*---set: headlen,datalen---*>>
  63.     <<*---Create heading from field name---*>>
  64.     if len(fldnam) < headlen
  65.       token := upper(fldnam) + replicate( '-',headlen-len(fldnam) )
  66.     else
  67.       token := upper(fldnam)
  68.     endif
  69.     if lentotal + headlen + 1 <= SCREENWIDTH
  70.       lentotal := lentotal + headlen + 1  <<*plus SPACE*>>
  71.       if line = ''
  72.         line := token
  73.       else
  74.         line := line + ' ' + token
  75.       endif
  76.       skip field
  77.     else
  78.       done := true
  79.     endif
  80.   endwhile
  81.   RETURN line
  82. end <<*BrowseHeading*>>
  83.  
  84.  
  85. function BrowseList : string
  86. string  line,token
  87. logical done
  88. integer lentotal
  89. begin
  90.   done := false
  91.   lentotal := PageIndent
  92.   while not (done or eof(fields))
  93.     GetItemLen  <<*set: headlen,datalen*>>
  94.     if IsBigWid  <<*fldwid > PageWidth*>>
  95.       token := 'SUBSTR(' + fldnam + ',1,' + str(PageWidth) + ')'
  96.     else
  97.       token := fldnam
  98.     endif
  99.     if (headlen > datalen)
  100.       token := token + ',"' + replicate( ' ',headlen-datalen-1 ) + '"'
  101.     endif
  102.     if lentotal + headlen + 1 <= SCREENWIDTH
  103.       lentotal := lentotal + headlen + 1  <<*plus SPACE*>>
  104.       if line = ''
  105.         line := token
  106.       else
  107.         line := line + ',' + token
  108.       endif
  109.       skip field
  110.     else
  111.       done := true
  112.     endif
  113.   endwhile
  114.   RETURN line
  115. end <<*BrowseList*>>
  116.  
  117.  
  118. procedure InitBrowse
  119. begin
  120.   <<*---set the BROWSE filter---*>>
  121.   select all fields
  122.   select fields on (fldtyp $ 'CDLN') and (fldals <> 'M')
  123.   PageIndent := 9
  124.   PageWidth := SCREENWIDTH - PageIndent - 1
  125.   panmax := JumpToPage( 32000 )
  126. end <<*InitBrowse*>>
  127.  
  128. <<* EOF: MSASETB.INC *>>
  129. #>>
  130.