Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ newform(C) — OpenDesktop 3.0.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

csplit(C)


 newform(C)                      19 June 1992                      newform(C)


 Name

    newform - change the format of a text file

 Syntax

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

 Description

    The newform command 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.

    -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 speci-
              fied are applied to that line.  The characters are then added
              at the end of the processed line.

    -itabspec Input tab specification: expands tabs to spaces, according to
              the tab specifications given.  tabspec recognizes all tab spec-
              ification 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.

    -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 filename

              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.

    -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 for-
              mat line which is printed will correspond to the format speci-
              fied in the last -o option.  If no -o option is specified, the
              line which is printed will contain the default specification of
              -8.

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

    -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).

    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, for example 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 found at a termi-
              nal.  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 num-
              bers are allowed.  If any number (except the first one) is pre-
              ceded 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 set-
              tings.

    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 trun-
    cated 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.


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