home *** CD-ROM | disk | FTP | other *** search
/ Micro R&D 1 / MicroRD-CD-ROM-Vol1-1994.iso / os20 / cli / newlist82.lha / Docs / FormatTutorial.doc < prev    next >
Text File  |  1993-09-23  |  4KB  |  144 lines

  1. $VER: Newlist8.2 (25-Sep-93) Format help
  2.  
  3.  
  4.    For those of you that do not know how to format a printf() statement for
  5.    use with -F, -C, -M, and -D, this little segment should help.
  6.  
  7.    --------- A Tutorial on How to Make Custom Printf Formats ---------
  8.  
  9.    To form a custom format, you simply make a string of the flags you
  10.    want to appear:
  11.  
  12.              ie    nl  -F " %n %v"
  13.  
  14.    The above format will display the filename and then the filesize.
  15.  
  16.              ie    Aliases.info 597
  17.                    Commodore.README 353
  18.  
  19.    Notice how the information is NOT in a columnar format.  This is because
  20.    the filename (%n) is of variable length.  To make the filename of
  21.    fixed length, you must give the flag %n a numeric qualifier specifying
  22.    how large you want the data to be.  This qualifier goes after the %
  23.    and before the meta-character (in this case n).
  24.  
  25.             ie     nl  -F "%20n %v"
  26.                             ^
  27.                             length is 20
  28.  
  29.    The above format says to make the name 20 characters no matter
  30.    how short the name is.  The output will be like:
  31.  
  32.             ie              Aliases.info 597
  33.                         Commodore.README 353
  34.                     ^
  35.                     Starts here
  36.  
  37.    Notice how the output is right justified.  To make the data left
  38.    justified, put a minus sign (-) in front of the numeric qualifier.
  39.  
  40.            ie     nl  -F "%-20n %v"
  41.  
  42.    The output will now look like:
  43.  
  44.            ie     Aliases.info         597
  45.                   Commodore.README     353
  46.                   ^
  47.                   Starts here
  48.  
  49.    One disadvantage of the numeric qualifer is that if a file length
  50.    is larger than the fixed length, the output will not be columnized
  51.    anymore.
  52.  
  53.           ie  nl  -F " %-13n %6v"
  54.  
  55.  
  56.            Times.doc.info   597     <- This name is 14 (larger than 13).
  57.            History       18107         As a result, the output is slightly
  58.            Aliases        2676         messed up.
  59.  
  60.    To fix the problem, you should make the qualifier large.  Commodore
  61.    restricts the file length to something like 30 chars, so %-30n will
  62.    ALWAYS work.  I prefer to use %-22n since itis small enough for the
  63.    display, yet large enough for most big names.
  64.  
  65.    Or truncation:
  66.  
  67.    If you want to restrict a field to be only X characters long, you
  68.    can give a .x qualifier where x is a number.  For example:
  69.  
  70.              nl -F " %.5n"
  71.  
  72.    will output:
  73.  
  74.              Times
  75.              Histo
  76.              Alias
  77.  
  78.    Note how the filenames got truncated to 5 chars.  This truncating
  79.    field is very handy for making pseudo-abbreviations.  For example:
  80.    
  81.             nl -D "%.3D"    will make day name abbreviations
  82.                              (Saturday truncated to Sat)
  83.  
  84.  
  85.    You may also mix justification qualifiers with the length restriction
  86.    qualifier.  For example:
  87.  
  88.              nl -F " %7.5n"
  89.  
  90.    This says to make the names to be ONLY 5 chars long, then right justify
  91.    this to be 7 chars (add 2 spaces in front).
  92.  
  93. ----
  94.  
  95.    Now we are not quite done.  '%v' is also a variable length field.
  96.    Sometimes it will be 1 or 2 digits (<=99 bytes) or it may be
  97.    very long (100000 bytes etc.).  In order for our format to work
  98.    in every case (when files are very big), we should put a large
  99.    qualifier in %v.  I would use %6v or %7v to handle even the biggest
  100.    files.
  101.  
  102.    The output will be like:
  103.  
  104.       555
  105.       666666
  106.  
  107.    If you would like to have the numeric places held by a 0, then insert
  108.    a zero after the %.
  109.  
  110.    ie  nl "%07v"
  111.             ^
  112.             Note that it's NOT  %7v
  113.   
  114.       0000555
  115.       0666666
  116.  
  117. ----
  118.  
  119.    One final note:  a patron of mine was having problems with his string
  120.    outputs.  He was doing the following:
  121.  
  122.             nl -D "%09D"
  123.                     ^
  124.                     the culprit!
  125.  
  126.         w/  000Friday
  127.             0Saturday      as outputs.
  128.  
  129.    The reason for the 0's in front of the day name is because of the 0 in 
  130.    %09.  That 0 tells it to pad the spaces with the 0 character.  Thus you
  131.    only want to do this with digit type stuff. To correct the problem above:
  132.  
  133.             nl -D "%9D"     <- Notice no leading 0.
  134.  
  135.          w/    Friday
  136.              Saturday      as outputs.
  137.  
  138.    Hope that this helps.
  139.    Review the formats in the included alias file 
  140.      or consult a C book for info about printf().
  141.  
  142.    Phil Dietz
  143.  
  144.