\documentclass[nocolor,memo]{j3}
\renewcommand{\hdate}{2 January 2004}
\renewcommand{\vers}{J3/04-169}
\usepackage{lineno}
\usepackage{longtable}
\usepackage{xr}
\externaldocument{007}
\input pdftest
\begin{document}
\vspace{-10pt}
\begin{tabbing}
Subject: \hspace*{0.25in}\=Optional arguments for subprograms that define
operations or assignment\\
From: \>Van Snyder\\
Reference: \>03-258r1, sections 2.3.3\\
\end{tabbing}
\pagewiselinenumbers
\leftlinenumbers
\linenumbers*
\section{Number}
TBD
\section{Title}
Optional arguments for subprograms that define operations or assignment.
\section{Submitted By}
J3
\section{Status}
For consideration.
\section{Basic Functionality}
Allow optional arguments for subprograms that define operations or
assignment.
\section{Rationale}
One sometimes has procedures that have optional arguments that one would
like to use to define assignment or operations. These cannot be used
because of restrictions on the number of arguments such procedures are
required to have. One could wrap these with additional procedures that
have the required number of arguments, but this increases code bulk.
Studies have shown that the most important factor contributing to
development and maintenance expense is code bulk.
\section{Estimated Impact}
Minor.
\section{Detailed Specification}
Allow procedures that define assignment or operations to have optional
arguments. Require a procedure that defines assignment to have at least
two arguments, with any after the first two required to be optional ---
and the first two could be optional, too. Require a procedure that
defines an operation to have at least one argument, and if it has more
than two, those after the second one are required to be optional --- and
the first two could be optional, too. If a procedure for which all
arguments after the first one are optional defines an operation, the
operator can be used as either a binary operator or as an unary operator.
The generic resolution rules already handle optional arguments.
\section{History}
\label{lastpage}
\end{document}