... driver.1
The pile is a partial CGI script because it is not runnable by itself and requires a piledriver for execution.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... chapter2
The MIC Style Guidlines provide much useful insights into using MIC.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... arbitrary1.1
Arbitrary as long as they comply to the MIC-Datatype Interface Specification; see C
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... fieldspace1.2
A logical grouping of data fields covered later.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... MIC1.3
Introduced in MIC 2.0, and refined in version 2.1.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... pile.1.4
Note that the MIC spec does not require the user to have these subroutines in their piles, nor are they required for the proper functioning of the interface or the program.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... .fs1.5
Suffixes are case-insensitive.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... inputs2.1
It is possible, however, to have fields that are completely affected by programmatic inputs (i.e., the program takes their values from other fields, etc.)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... handled2.2
Any proper implementation of a data type system should have a type that accepts all inputs.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... it.3.1
Do not escape the control file, however, since it is pure Perl code.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... fieldspace.3.2
Fieldspace definitions elsewhere will actually be potent, but it is considered bad style.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... pile.3.3
If, for some reason, you wish to maintain state between page calls, then you not want to undef your globals. This should be done very carefully, however, and is rarely ever needed or preferred to alternative methods.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... `MIC.'4.1
If a form tag has the MICfieldspace parameter, then it will be specially processed by MIC; it is not prepended, however, since it is not MIC specific tag.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... page4.2
Contained in the $content variable
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... twice.4.3
That is why the use of vpage is discouraged in favor of vinstatiated.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... proccessed4.4
The MICif tag, and all logic tags, are, in fact, strictly potent at runtime.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... scripting.4.5
The special variable $cgi is available for this and other purposes.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... inside.4.6
Nested groups have been tested to some extent at the time of writing, but it must be acknowledged that there are a couple known minor bugs with nested groups. The behavior and code appear, however, basically sound and the known bugs should be easy to fix (they are already analyzed) when the need arises. That is not to say that more extensive tests/usage will not turn up more fundamental problems, though.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... field.4.7
At this point, the term field might become a bit confusing. Field does not necessarily refer to a blank field like a text input device in HTML. A field may be associated with any input device; e.g., a radiobutton, checkbox, select list, etc..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... undefined.4.8
One of MIC's security features keeps the standard fields from being potent by registering which fields have the possibility of change.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... tag4.9
Future versions of MIC will allow one to overide the default specified in the MICgroup with a value specified in the MICdynamicdisplay.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... MICdynamics.4.10
At the time of this writing, nesting is only a partially tested feature with some known bugs.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... type.''4.11
Datatype is a concept used by MIC which may be supported to varying degrees with the data encapsulators one is using in their MIC system. The idea is that user data is expected to be of a type, which may be something like integer, credit card number, or free form.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... verified.4.12
That is all fields needed for the current page, all fields in error, all fields which have changed, and all fields being carried along.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... verbatim4.13
Or effectively so.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... information.4.14
The syntax src="branch::hello" would also be acceptable.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... flag5.1
If running in fast CGI mode
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... fields.5.2
It is not always the case that it is easier or more desirable to report dynamic field errors in a non-contextual manner, but it is more often true than with static fields.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... document.5.3
This should be remedied in future versions of MIC.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... piledriver.6.1
Implemented by Error.pm
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... handle\_exceptions().6.2
Unless the type of error is Error::Simple, in which case it is assumed to be generated by a die or syntax error; piledrivers may handle these themselves.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... structure.7.1
This should most probably be an absolute directory set by some constant that can be modified as needed.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... information.7.2
Absolute pages are allowed too, but generally discouraged as less maintainable.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... page.7.3
In this case, the fieldspace will be instantiated for verification purposes.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... definitions.7.4
The entire set of static fields costitutes such a group.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... page8.1
The methods of propagation are of no concern to the MIC user and may be various.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... nameC.1
A virtual name being a field name prepended by zero or more group names in order of relationship with a `::' separating each group name.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... `Michael'E.1
In no particular order
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.