Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

csplit(C)


     NEWFORM(C)                                 UNIX System V



     Name
          newform - changes the format of a text file


     Syntax
          newform [-s] [-itabspec] [-otabspec] [-bn] [-en] [-pn]
          [-an] [-f] [-cchar] [-ln] [file... ]


     Description
          newform reads lines from the named files,  or  the  standard
          input if no input file is named, and reproduces the lines on
          the standard output.  Lines are  reformatted  in  accordance
          with command line options in effect.

          Except for -s, command line options may appear in any order,
          may  be  repeated,  and  may  be  intermingled  with  files.
          Command line options are processed in the order typed.  This
          means  that  option  sequences like ``-e15 -l60'' will yield
          results different from ``-l60 -e15''.  Options  are  applied
          to all files on the command line.

          -itabspec Input tab specification: expands tabs  to  spaces,
                    according   to   the   tab  specifications  given.
                    Tabspec recognizes  all  tab  specification  forms
                    described  below.  In addition, tabspec may be --,
                    in   which   newform   assumes   that   the    tab
                    specification  is  to  be  found in the first line
                    read from the standard input.  If  no  tabspec  is
                    given,  tabspec  defaults  to -8.  A tabspec of -0
                    expects no  tabs;  if  any  are  found,  they  are
                    treated as -1.

          -otabspec Output tab specification: replaces spaces by tabs,
                    according  to  the  tab specifications given.  The
                    tab specifications are the same as for  -itabspec.
                    If no tabspec is given, tabspec defaults to -8.  A
                    tabspec  of  -0  means  that  no  spaces  will  be
                    converted to tabs on output.

          -ln       Sets the effective line length  to  n  characters.
                    If n is not typed, -l defaults to 72.  The default
                    line  length  without  the   -l   option   is   80
                    characters.   Note  that  tabs  and backspaces are
                    considered to be one character (use -i  to  expand
                    tabs to spaces).

          -bn       Truncates n characters from the beginning  of  the
                    line  when  the  line  length  is greater than the
                    effective line length (see -ln).  The  default  is
                    to  truncate the number of characters necessary to
                    obtain the effective  line  length.   The  default
                    value  is  used  when  -b with no n is used.  This
                    option can be used to delete the sequence  numbers
                    from a COBOL program as follows:

                              newform -l1 -b7 file-name


          The option -l1 must be used to set the effective line length
          shorter  than  any  existing line in the file so that the -b
          option is activated.

          -en       Truncates n characters from the end of the line.

          -ck       Changes the prefix/append character to k.  Default
                    character  for  k  is  a space (see options -p and
                    -c).

          -pn       Prefixes n characters (see -ck) to  the  beginning
                    of  a  line  when the line length is less than the
                    effective line length.  The default is  to  prefix
                    the  number  of characters necessary to obtain the
                    effective line length.

          -an       Appends n characters to the end of  a  line.   The
                    default  is  to  append  the  number of characters
                    necessary to get the effective line length.

          -f        Writes the tab specification format  line  on  the
                    standard output before any other lines are output.
                    The tab specification format line which is printed
                    will  correspond  to  the  format specified in the
                    last -o option.  If no -o option is specified, the
                    line  which  is  printed  will contain the default
                    specification of -8.

          -s        Shears off leading characters on each line  up  to
                    the  first  tab  and places up to 8 of the sheared
                    characters at the end of the line.  If more than 8
                    characters   (not  counting  the  first  tab)  are
                    sheared, the eighth character is replaced by  a  *
                    and   any  characters  to  the  right  of  it  are
                    discarded.  The first tab is always discarded.

                    An error message and program exit  will  occur  if
                    this  option  is  used  on a file without a tab on
                    each line.  The characters sheared off  are  saved
                    internally  until  all other options specified are
                    applied to that line.   The  characters  are  then
                    added at the end of the processed line.

        Tabs
          Four types of tab specification are  accepted  for  tabspec:
          ``canned,''  repetitive,  arbitrary,  and  file.  The lowest
          column number is 1. For tabs, column 1 always refers to  the
          leftmost column on a terminal, even one whose column markers
          begin at 0, e.g. the DASI 300, DASI 300S, and DASI 450.

          The ``canned'' tabs are given as -code where code  (and  its
          meaning) is from the following list:

          -a        1,10,16,36,72
                    Assembler, IBM S/370, first format

          -a2       1,10,16,40,72
                    Assembler, IBM S/370, second format

          -c        1,8,12,16,20,55
                    COBOL, normal format

          -c2       1,6,10,14,49
                    COBOL compact format (columns 1-6 omitted).  Using
                    this  code,  the first typed character corresponds
                    to card column 7, one space gets you to column  8,
                    and  a tab reaches column 12. Files using this tab
                    setup should include  a  format  specification  as
                    follows:

                       <:t-c2 m6 s66 d:>

          -c3       1,6,10,14,18,22,26,30,34,38,42,46,50,54,58,62,67
                    COBOL compact format (columns 1-6  omitted),  with
                    more tabs than COBOL -c2.  This is the recommended
                    format   for   COBOL.   The   appropriate   format
                    specification is:

                       <:t-c3 m6 s66 d:>

          -f        1,7,11,15,19,23

                    FORTRAN

          -p        1,5,9,13,17,21,25,29,33,37,41,45,53,57,61
                    PL/I

          -s        1,10,55

                    SNOBOL

          -u        1,12,20,44
                    UNIVAC 1100 Assembler

          In addition to these ``canned'' formats, three  other  types
          exist:

          -n        A  repetitive  specification  requests   tabs   at
                    columns  1+n, 1+2*n, etc. Note that such a setting
                    leaves a left margin  of  n  columns  on  TermiNet
                    terminals  only.   Of particular importance is the
                    value  -8:  this  represents   the   UNIX   system
                    ``standard''  tab  setting, and is the most likely
                    tab  setting  to  found  at  a  terminal.   It  is
                    required  for  use  with  nroff(CT)  -h option for
                    high-speed output.  Another special  case  is  the
                    value -0, implying no tabs at all.

          n1,n2,... The arbitrary format permits the user to type  any
                    chosen  set  of  number,  separated  by commas, in
                    ascending order. Up to 40 numbers are allowed.  If
                    any number (except the first one) is preceded by a
                    plus sign, it is taken as an increment to be added
                    to  the  previous  value.   Thus,  the  tab  lists
                    1,10,20,30   and   1,10,+10,+10   are   considered
                    identical.

          - -file
                    If the name of a file is given, newform reads  the
                    first  line  of  the  file, searching for a format
                    specification.  If it finds one there, it sets the
                    tab  stops according to it, otherwise it sets them
                    as -8.  This type of specification may be used  to
                    make  sure  that  a  tabbed  file  is printed with
                    correct tab settings.

          Any of the following may be  used  also;  if  a  given  flag
          occurs more than once, the last value given takes effect:

          -Ttype
                    newform usually needs to know the type of terminal
                    in  order to set tabs and always needs to know the
                    type to set margins.  type is  a  name  listed  in
                    term(CT).   If  no  -T  flag  is supplied, newform
                    searches for the $TERM value  in  the  environment
                    (see  environ(M)).   If  no  type  can  be  found,
                    newform tries a sequence that will work  for  many
                    terminals.

          +mn       The  margin  argument  may  be   used   for   some
                    terminals.  It  causes all tabs to be moved over n
                    columns by making column n+1 the left margin.   If
                    +m  is  given  without  a  value  of  n, the value
                    assumed is 10. For a TermiNet, the first value  in
                    the  tab list should be 1, or the margin will move
                    even further to the right.  The normal  (leftmost)
                    margin  on most terminals is obtained by +m0.  The
                    margin for most terminals is reset only  when  the
                    +m flag is given explicitly.


     Example
          In the following example, newform converts a file named text
          with leading digits, one or more tabs, and text on each line
          to a file beginning with the text  and  the  leading  digits
          placed  at  the  end  of each line in column 73 (-s option).
          All tabs after the first one  are  expanded  to  spaces  (-i
          option).   To  reach  the  line  length of 72 characters (-l
          option), spaces are appended to each line up  to  column  72
          (-a option) or lines are truncated at column 72 (-e option).
          To reformat the sample file text in this manner, enter:

          newform -s -i -l -a -e text


     Exit Codes
          0 - normal execution
          1 - for any error


     See Also
          csplit(C)


     Diagnostics

          All diagnostics are fatal.
          usage: ...                 newform was called with a bad
                                      option.

          not -s format              There was no tab on one line.

          can't open file             Self-explanatory.

          internal line too long
                                       A line exceeds  512  characters
                                       after  being  expanded  in  the
                                       internal work buffer.

          tabspec in error
                                       A    tab    specification    is
                                       incorrectly    formatted,    or
                                       specified  tab  stops  are  not
                                       ascending.

          tabspec indirection illegal
                                       A tabspec read from a file  (or
                                       standard input) may not contain
                                       a tabspec  referencing  another
                                       file (or standard input).


     Notes
          newform normally only keeps track  of  physical  characters;
          however,  for the -i and -o options, newform will keep track
          of backspaces in order to line up tabs  in  the  appropriate
          logical columns.

          newform will not prompt the user if a tabspec is to be  read
          from the standard input (by use of -i,-- or -o--).

          If the -f option is used, and the last -o  option  specified
          was  ``-o--'' , and was preceded by either ``-o--'' or a ``-
          i--'' , the tab specification format line will be incorrect.



     (printed 8/28/89)                                  NEWFORM(C)

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026