home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a046 / 5.img / TEMPLATE / SSBSETB.INC < prev    next >
Encoding:
Text File  |  1992-04-01  |  3.1 KB  |  131 lines

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