summaryrefslogtreecommitdiff
path: root/web/clip/ms_dos
diff options
context:
space:
mode:
Diffstat (limited to 'web/clip/ms_dos')
-rw-r--r--web/clip/ms_dos/ada.ini21
-rw-r--r--web/clip/ms_dos/c.ini21
-rw-r--r--web/clip/ms_dos/cl.bat5
-rw-r--r--web/clip/ms_dos/clip.bat8
-rw-r--r--web/clip/ms_dos/clip_msg.dat36
-rw-r--r--web/clip/ms_dos/cliphelp.hlpbin0 -> 12372 bytes
-rw-r--r--web/clip/ms_dos/clp.bat44
-rw-r--r--web/clip/ms_dos/clp_env.bat22
-rw-r--r--web/clip/ms_dos/ex01_a.asc274
-rw-r--r--web/clip/ms_dos/ex01_a.ini26
-rw-r--r--web/clip/ms_dos/ex01_a.pas102
-rw-r--r--web/clip/ms_dos/ex01_a.ps1416
-rw-r--r--web/clip/ms_dos/ex01_b.asc42
-rw-r--r--web/clip/ms_dos/ex01_b.ini27
-rw-r--r--web/clip/ms_dos/ex01_b.pas119
-rw-r--r--web/clip/ms_dos/ex01_b.ps370
-rw-r--r--web/clip/ms_dos/fortran.ini21
-rw-r--r--web/clip/ms_dos/lisp.ini21
-rw-r--r--web/clip/ms_dos/manual.ps5813
-rw-r--r--web/clip/ms_dos/manual.txt854
-rw-r--r--web/clip/ms_dos/modula.ini21
-rw-r--r--web/clip/ms_dos/pascal.ini21
-rw-r--r--web/clip/ms_dos/read_me.ps1812
-rw-r--r--web/clip/ms_dos/read_me.txt191
24 files changed, 11287 insertions, 0 deletions
diff --git a/web/clip/ms_dos/ada.ini b/web/clip/ms_dos/ada.ini
new file mode 100644
index 0000000000..4c9ceb12c5
--- /dev/null
+++ b/web/clip/ms_dos/ada.ini
@@ -0,0 +1,21 @@
+This file contains data that is needed to run CLiP
+And is generated by CLiP_MENU
+Modifying this file at own risk.
+Using CLiP_MENU is definitely recommended.
+
+INTERACTIVE_MODE Mode (INTERACTIVE/DEBUG/HELPFUL/AUTO)
+NO Interactive fault correction (YES/NO)
+BOTH Error message destination (TERMINAL/REPORTFILE/BOTH/NONE)
+-- Left comment string
+-- Right comment string
++ Command character
+ENDOF END string
+# Option marker
+OMITTED The specified modules are (OMITTED/EXTRACTED)
+------------ REPORT FILE -----------
+CLIP.RPT
+------------ INPUT FILES -----------
+------------ MODULES ---------------
+------------ MODULE DIRECTORY ------
+
+------------ END OF INI FILE -------
diff --git a/web/clip/ms_dos/c.ini b/web/clip/ms_dos/c.ini
new file mode 100644
index 0000000000..dad00ccd0a
--- /dev/null
+++ b/web/clip/ms_dos/c.ini
@@ -0,0 +1,21 @@
+This file contains data that is needed to run CLiP
+And is generated by CLiP_MENU
+Modifying this file at own risk.
+Using CLiP_MENU is definitely recommended.
+
+INTERACTIVE_MODE Mode (INTERACTIVE/DEBUG/HELPFUL/AUTO)
+NO Interactive fault correction (YES/NO)
+BOTH Error message destination (TERMINAL/REPORTFILE/BOTH/NONE)
+/* Left comment string
+*/ Right comment string
+* Command character
+ENDOF END string
+# Option marker
+OMITTED The specified modules are (OMITTED/EXTRACTED)
+------------ REPORT FILE -----------
+CLIP.RPT
+------------ INPUT FILES -----------
+------------ MODULES ---------------
+------------ MODULE DIRECTORY ------
+
+------------ END OF INI FILE -------
diff --git a/web/clip/ms_dos/cl.bat b/web/clip/ms_dos/cl.bat
new file mode 100644
index 0000000000..d94e8ca6c3
--- /dev/null
+++ b/web/clip/ms_dos/cl.bat
@@ -0,0 +1,5 @@
+ @echo off
+ echo .....Run CLiP with already existing INI-file.....
+ set clip_dir=C:\CLIP
+ if not ".%1"=="." copy %1 CLIP.INI
+ C:\CLIP\CLIP_2
diff --git a/web/clip/ms_dos/clip.bat b/web/clip/ms_dos/clip.bat
new file mode 100644
index 0000000000..39423f1e29
--- /dev/null
+++ b/web/clip/ms_dos/clip.bat
@@ -0,0 +1,8 @@
+ echo off
+ c:\CLIP\CLIP_1.EXE %1
+ if errorlevel == 1 goto CLIP_2
+ goto ready
+ :CLIP_2
+ set clip_dir=C:\CLIP
+ c:\CLIP\CLIP_2.EXE
+ :ready
diff --git a/web/clip/ms_dos/clip_msg.dat b/web/clip/ms_dos/clip_msg.dat
new file mode 100644
index 0000000000..3359871417
--- /dev/null
+++ b/web/clip/ms_dos/clip_msg.dat
@@ -0,0 +1,36 @@
+ SCAN_FILES (2.2): A line of category L2 is not allowed in passive mode.%
+ SCAN_FILES (2.3): A line of category L3 in not allowed in passive mode.%
+ SCAN_LINE (3a): An CLIP_LPAR is found but not an CLIP_RPAR.%
+ SCAN_LINE (3b): An CLIP_RPAR is found but not an CLIP_LPAR.%
+ SCAN_LINE (4a): Only one CLIP command character is found.
+ Line treated as an L3.%
+ SCAN_LINE (4b): Only one CLIP command character is found.
+ Line treated as an L3.%
+ BUILD_C_S (12): Line cannot be paste to a segment.%
+ BUILD_C_S (22): Stub not correctly closed before end of file.%
+ SCAN_OPTIONS (3.1.1): Missing argument option @. Option ignored.%
+ SCAN_OPTIONS (3.1.2)a: Illegal abbreviation @. Supply more characters.%
+ SCAN_OPTIONS (3.1.2)b: Unknown option @. Option ignored.%
+ SCAN_OPTIONS (3.1.3)a: @ Quoted string not terminated for end of line.
+ Option FILE ignored.%
+ SCAN_OPTIONS (3.1.3)b: @ Quoted string expected. Option FILE ignored.%
+ SCAN_OPTIONS (3.1.4): Illegal argument @ Indent option. Option ignored.%
+ SCAN_OPTIONS (3.1.5)a: Comment @ not yet implemented.%
+ SCAN_OPTIONS (3.1.5)b: Illegal argument @ COMMENT-option. Option ignored.%
+ SCAN_OPTIONS (3.2.1)a: @ quoted string not terminated for end of line.
+ Option FILE ignored.%
+ SCAN_OPTIONS (3.2.1)b: Quoted string expected. Option FILE ignored.%
+ SCAN_OPTIONS (3.2.2): Illegal argument @ Indent option. Option ignored.%
+ SCAN_OPTIONS (3.2.3)a: Comment @ not yet implemented.%
+ SCAN_OPTIONS (3.2.3)b: Illegal argument @ COMMENT-option. Option ignored.%
+ SCAN_OPTIONS (3.2.4): Illegal character @ in line. Option marker expected.%
+ SCAN_OPTIONS (5a): Missing argument @-option . Option ignored.%
+ SCAN_OPTIONS (5b): Stub option @ not allowed in slot. Option ignored.%
+ SCAN_OPTIONS (5c): Slot option @ not allowed in stub. Option ignored.%
+ SCAN_OPTIONS (5d): Any combination of the options FILE, LEADER, TRAILER,
+ SEPARATOR or DEFAULT in one segment is illegal. Defaults assumed.%
+ ANALYSE (4.1): Multiple stubs in single slot. SLOT set to multiple.%
+ ORDER_TWINS (1.5): LEADER, TRAILER and/or SEPARATOR stubs found without
+ ordinary stubs for this slot. Stubs ignored.%
+ GENMOD (2.1): Error opening file @. Module will not be generated.%
+ GENMOD (4.1): Error closing file @.%
diff --git a/web/clip/ms_dos/cliphelp.hlp b/web/clip/ms_dos/cliphelp.hlp
new file mode 100644
index 0000000000..29affb71ae
--- /dev/null
+++ b/web/clip/ms_dos/cliphelp.hlp
Binary files differ
diff --git a/web/clip/ms_dos/clp.bat b/web/clip/ms_dos/clp.bat
new file mode 100644
index 0000000000..c1c6ac2806
--- /dev/null
+++ b/web/clip/ms_dos/clp.bat
@@ -0,0 +1,44 @@
+ @echo off
+ if z%CLIP_SRC%==z goto set_environment
+ if z%CLIP_TRG%==z goto set_environment
+ :create_INI_file
+ echo ..... CLiP the sourcefiles that are given as arguments .....
+ echo ..... Report file is CLIP.RPT .....
+ if exist CLIP.INI del CLIP.INI
+ echo This file contains data that is needed to run CLiP > CLIP.INI
+ echo And is generated by CLiP_1 >> CLIP.INI
+ echo Modifying this file at own risk. >> CLIP.INI
+ echo Using CLiP_1 is definitely recommended. >> CLIP.INI
+ echo >> CLIP.INI
+ echo INTERACTIVE_MODE >> CLIP.INI
+ echo NO >> CLIP.INI
+ echo BOTH >> CLIP.INI
+ echo (* >> CLIP.INI
+ echo *) >> CLIP.INI
+ echo * >> CLIP.INI
+ echo ENDOF >> CLIP.INI
+ echo # >> CLIP.INI
+ echo OMITTED >> CLIP.INI
+ echo ------------ REPORT FILE ----------- >> CLIP.INI
+ echo CLIP.RPT >> CLIP.INI
+ echo ------------ INPUT FILES ----------- >> CLIP.INI
+ if not ".%1"=="." echo %CLIP_SRC%\%1 >> CLIP.INI
+ if not ".%2"=="." echo %CLIP_SRC%\%2 >> CLIP.INI
+ if not ".%3"=="." echo %CLIP_SRC%\%3 >> CLIP.INI
+ if not ".%4"=="." echo %CLIP_SRC%\%4 >> CLIP.INI
+ if not ".%5"=="." echo %CLIP_SRC%\%5 >> CLIP.INI
+ if not ".%6"=="." echo %CLIP_SRC%\%6 >> CLIP.INI
+ if not ".%7"=="." echo %CLIP_SRC%\%7 >> CLIP.INI
+ if not ".%8"=="." echo %CLIP_SRC%\%8 >> CLIP.INI
+ if not ".%9"=="." echo %CLIP_SRC%\%9 >> CLIP.INI
+ echo ------------ MODULES --------------- >> CLIP.INI
+ echo ------------ MODULE DIRECTORY ------ >> CLIP.INI
+ echo %CLIP_TRG%\ >> CLIP.INI
+ echo ------------ END OF INI FILE ------- >> CLIP.INI
+ set clip_dir=C:\CLIP
+ C:\CLIP\CLIP_2
+ goto ready
+ :set_environment
+ echo ..... Please define SOURCE and TARGET directories .....
+ echo ..... You can use CLIP_ENV.BAT for this purpose .....
+ :ready
diff --git a/web/clip/ms_dos/clp_env.bat b/web/clip/ms_dos/clp_env.bat
new file mode 100644
index 0000000000..34b0452d13
--- /dev/null
+++ b/web/clip/ms_dos/clp_env.bat
@@ -0,0 +1,22 @@
+ @echo off
+ if ".%1"=="." goto clear_env
+ if ".%2"=="." goto more_parameters
+ :set_environement
+ set CLIP_SRC=%1
+ set CLIP_TRG=%2
+ echo ..... Set CLiP environment .....
+ echo Source file directory is "%1" .....
+ echo Target module directory is "%2" .....
+ goto ready
+ :clear_env
+ set CLIP_SRC=
+ set CLIP_TRG=
+ echo ..... CLiP environment cleared .....
+ goto ready
+ :more_parameters
+ echo ..... Please specify directories for .....
+ echo ..... SOURCE files and TARGET modules .....
+ echo ..... without trailing backslash, e.g. .....
+ echo ..... >clp_env d: d:\test .....
+ goto ready
+ :ready
diff --git a/web/clip/ms_dos/ex01_a.asc b/web/clip/ms_dos/ex01_a.asc
new file mode 100644
index 0000000000..b26ff02583
--- /dev/null
+++ b/web/clip/ms_dos/ex01_a.asc
@@ -0,0 +1,274 @@
+
+
+
+ Example 01: Palindrome filter
+
+
+
+
+
+In this appendix we illustrate the CLiP style of literate programming by a
+program to filter palindromic lines from an input file.
+ Two files are involved: the program module (*PALINDROME.PAS*) and a test
+file (*TESTDATA.IN*).
+
+
+A.1. Specification
+
+A palindrome is a sentence with the property that the letters from left to
+right, read the same as from right to left. In the comparison uppercase and
+lowercase letters are considered to be equivalent and all other characters are
+simply ignored. Hence an empty sentence is a palindrome. Other examples are:
+
+ (************* #file "TESTDATA.IN" #comment off **************)
+ Ada
+ 1234567
+ doremifasolosafimerod
+ (******* Testdata #multiple *******)
+ (***************** End of TESTDATA.PAS ************************)
+
+The following sentences do not qualify as a palindrome.
+
+ (******* Testdata #quick *******)
+ Mr. Clinton won the elections over Mr. Bush.
+ This line is not palindromic.
+ Aabbccdd Aabbccdd Aabbccdd Aabbccdd
+ Abracadabra
+ supercalafragilisiticexpielecdosia
+
+The following are examples of more sophisticated palindromes.
+
+ (******* Testdata #quick *******)
+ Able was I, ere I saw Elba.
+ A man, a plan, a canal, Panama.
+ Norma is as selfless as I Am, Ron.
+
+Note that the famous Dutch sentence
+
+ (******* Testdata #quick *******)
+ Koos Eekfeen keek maar door rood kerkraam, maar krek door rood raam keek
+ neef Kees ook.
+
+will not be recognized as a plindrome since it occupies two lines.
+ The program *PALINDROME* reads an input file, filters the lines that are
+palindromic and writes them to an output file.
+
+A.2. Communication with the outside world
+
+The program conforms to the general template of a Pascal program. We introduce
+the files *IN_FILE* and *OUT_FILE* to define its communication with the outside
+world. The actual files have to be specified at run-time. Thus we have
+
+ (***************** #file "PALINDRO.PAS" ***********************)
+ (****************************************************************)
+ (* Program: Palindrome filter program. *)
+ (* Purpose: To filter the palindromic lines from a given input *)
+ (* file to a specified output file. *)
+ (****************************************************************)
+ PROGRAM PALINDROME (INPUT, OUTPUT, IN_FILE, OUT_FILE);
+
+ (******* Palindrome constants #multiple #comment off *******)
+ (******* Palindrome types #multiple #comment off *******)
+ VAR
+ IN_FILE, OUT_FILE: TEXT;
+ (******* Palindrome variables #multiple #comment off *******)
+
+ BEGIN
+ ASSIGN (IN_FILE, 'TESTDATA.IN'); RESET (IN_FILE);
+ ASSIGN (OUT_FILE, 'TESTDATA.OUT'); REWRITE (OUT_FILE);
+
+ (***************** Palindrome (body) **********************)
+ (** Copy the lines of the IN_FILE that are palindromic to **)
+ (** the OUT_FILE. **)
+ (************************************************************)
+
+ END (*PALINDROME*).
+ (******************* End of PALINDROME.PAS ********************)
+
+To prepare the module for future declarations of constants and types we have
+
+ (******* Palindrome constants #leader #quick *******)
+ CONST
+ (******* Palindrome types #leader #quick *******)
+ TYPE
+
+A.3. Processing of the files
+
+The program processes *IN_FILE* line by line. The idea is to buffer an exact
+copy of the current line in *IN_LINE*, while at the same time its letters are
+buffered in *LETTERS*. So *LETTERS* will be empty if the line holds no letters
+at all, in which case the line is considered to be palindromic by definition.
+ We choose the buffers *IN_LINE* and *LETTERS* to be of the same type, *
+TEXT_LINE*, which we will not specify in detail right now. For this purpose we
+introduce a type *ABSTRACT*.
+
+ (******* Palindrome types #quick *******)
+ ABSTRACT = (DEFINED, UNDEFINED);
+
+*TEXT_LINE* will temporarily be declared *ABSTRACT* and its details will be
+defined later. Thus the declaration of *TEXT_LINE*
+
+ (******* Palindrome types *******)
+ (******* Declaration of TEXT_LINE *******)
+ (***************** End of Palindrome types ********************)
+
+is temporarily satisfied with the type *ABSTRACT*.
+
+ (******* Declaration of TEXT_LINE #quick #default *******)
+ TEXT_LINE = ABSTRACT;
+
+The declaration for the variables *IN_LINE* and *LETTERS* becomes
+
+ (******* Palindrome variables #quick *******)
+ IN_LINE,
+ LETTERS: TEXT_LINE;
+
+We have to test *LETTERS* in order to decide whether or not *IN_LINE* contains
+a palindrome. The result of this test is flagged by *IS_PALINDROME*, for which
+we introduce the declaration
+
+ (******* Palindrome variables #quick *******)
+ IS_PALINDROME: BOOLEAN;
+
+Now the body of the Palindrome filter may be expanded as
+
+ (***************** Palindrome (body) **********************)
+ (** Copy the lines of the IN_FILE that are palindromic to **)
+ (** the OUT_FILE. **)
+ WHILE NOT EOF (IN_FILE) DO
+ BEGIN
+ (***************** Palindrome (1) *********************)
+ (** Read a line from IN_FILE into IN_LINE. The letters **)
+ (** of this line are copied to LETTERS. **)
+ (********************************************************)
+
+ READLN (IN_FILE);
+
+ (***************** Palindrome (2) *********************)
+ (** Test palindromicity of LETTERS. Set IS_PALINDROME **)
+ (** to reflect the result of the test. **)
+ (********************************************************)
+
+
+ IF IS_PALINDROME THEN
+ BEGIN
+ (***************** Palindrome (3) *****************)
+ (** Write IN_LINE to OUT_FILE. **)
+ (****************************************************)
+
+ WRITELN (OUT_FILE);
+ END (*IF*);
+ END (*WHILE*);
+ (************* End of Palindrome (body) *******************)
+
+A.4. Choosing the structure of *IN_LINE* and *LETTERS*
+
+Before we can proceed we need to establish a structure for the objects *IN_LINE*
+ and *LETTERS*. Thus we define *TEXT_LINE* as a structure with two components.
+The first component is an array, *CHARS*, which contains the characters to be
+buffered. The second component, *LENGTH*, indicates which part of the array is
+actually occupied. The maximum number of characters that can be buffered by the
+structure is determined by the length, *MAX_L*, of the array. *MAX_L* serves as
+an implementation parameter.
+
+ (******* Palindrome constants #quick *******)
+ MAX_L = 132;
+
+ (******* Declaration of TEXT_LINE #quick *******)
+ TEXT_LINE = RECORD
+ CHARS: ARRAY[1..MAX_L] OF CHAR;
+ LENGTH: 0..MAX_L;
+ END (*RECORD*);
+
+A.5. Reading a line
+
+For efficiency reasons we fill *IN_LINE* and *LETTERS* simultaneously.
+Therefore we buffer every character that is read from *IN_FILE* in the variable
+*IN_CHAR*.
+
+ (******* Palindrome variables #quick *******)
+ IN_CHAR: CHAR;
+
+Only when *IN_CHAR* turns out to be a letter it is copied to *LETTERS*. Since
+this process is crucial for the overall operation, we make provisions for some
+debugging code here.
+
+ (***************** Palindrome (1) *********************)
+ (** Read a line from IN_FILE into IN_LINE. The letters **)
+ (** of this line are copied to LETTERS. **)
+ IN_LINE.LENGTH := 0;
+ LETTERS.LENGTH := 0;
+ WITH IN_LINE DO
+ WHILE NOT EOLN (IN_FILE) DO
+ BEGIN
+ READ (IN_FILE, IN_CHAR);
+ LENGTH := LENGTH + 1;
+ CHARS[LENGTH] := IN_CHAR;
+ IF IN_CHAR IN ['A'..'Z', 'a'..'z'] THEN
+ WITH LETTERS DO
+ BEGIN
+ LENGTH := LENGTH + 1;
+ CHARS[LENGTH] := IN_CHAR;
+ END (*WITH/IF*);
+ END (*WHILE/WITH*);
+
+ (********************* Palindrome (test) **************)
+ (** Check contents of IN_LINE and LETTERS. #optional **)
+ (********************************************************)
+
+ (***************** End of Palindrome (1) **************)
+
+A.6. Testing for palindromicity
+
+We test the palindromicity of *LETTERS* in two steps. First we transform the
+contents of *LETTERS* to uppercase and then we compare the characters of *
+LETTERS* pairwise. The comparison is done starting with the most outside
+characters and progressing inward. The string is assumed a palindrome until the
+opposite is proven through a pair of different characters. With the local
+counter
+
+ (******* Palindrome variables #quick *******)
+ I: INTEGER;
+
+we keep track of the comparing process. Now *Palindrome (2)* can be expanded as
+
+ (***************** Palindrome (2) *********************)
+ (** Test palindromicity of LETTERS. Set IS_PALINDROME **)
+ (** to reflect the result of the test. **)
+ WITH LETTERS DO
+ BEGIN
+ (* Transform lowercase to uppercase. *)
+ FOR I := 1 TO LENGTH DO
+ IF CHARS[I] IN ['a'..'z']
+ THEN CHARS[I] :=
+ CHR(ORD(CHARS[I]) - ORD('a') + ORD('A'));
+
+ (* Perform the palindromicity test. *)
+ IS_PALINDROME := TRUE;
+ I := 1;
+ WHILE IS_PALINDROME AND (I <= LENGTH DIV 2) DO
+ IF CHARS[I] = CHARS[LENGTH-I+1] THEN
+ I := I + 1
+ ELSE
+ IS_PALINDROME := FALSE;
+ END (*WITH*);
+ (***************** End of Palindrome (2) **************)
+
+A.7. Writing the palindrome
+
+The only remaining action is to write the contents of *IN_LINE*. Again we need
+a local counter
+
+ (******* Palindrome variables #quick *******)
+ J: INTEGER;
+
+The writing proceeds straight forward.
+
+ (***************** Palindrome (3) *****************)
+ (** Write IN_LINE to OUT_FILE. **)
+ WITH IN_LINE DO
+ BEGIN
+ FOR J := 1 TO LENGTH DO
+ WRITE (OUT_FILE, CHARS[J]);
+ END (*WITH*);
+ (************* End of Palindrome (3) **************)
diff --git a/web/clip/ms_dos/ex01_a.ini b/web/clip/ms_dos/ex01_a.ini
new file mode 100644
index 0000000000..ccac7316e6
--- /dev/null
+++ b/web/clip/ms_dos/ex01_a.ini
@@ -0,0 +1,26 @@
+This file contains data that is needed to run CLiP
+And is generated by CLiP_MENU
+Modifying this file at own risk.
+Using CLiP_MENU is definitely recommended.
+
+INTERACTIVE_MODE Mode (INTERACTIVE/DEBUG/HELPFUL/AUTO)
+YES Interactive fault correction (YES/NO)
+BOTH Error message destination (TERMINAL/REPORTFILE/BOTH/NONE)
+(* Left comment string
+*) Right comment string
+* Command character
+ENDOF END string
+# Option marker
+EXTRACTED The specified modules are (OMITTED/EXTRACTED)
+------------ REPORT FILE -----------
+CLIP.RPT
+------------ INPUT FILES -----------
+.\EX01_A.ASC
+------------ MODULES ---------------
+.\
+PALINDRO.PAS
+.\
+TESTDATA.IN
+------------ MODULE DIRECTORY ------
+.\
+------------ END OF INI FILE -------
diff --git a/web/clip/ms_dos/ex01_a.pas b/web/clip/ms_dos/ex01_a.pas
new file mode 100644
index 0000000000..914c550a71
--- /dev/null
+++ b/web/clip/ms_dos/ex01_a.pas
@@ -0,0 +1,102 @@
+ (***************** #file "PALINDRO.PAS" ***********************)
+ (****************************************************************)
+ (* Program: Palindrome filter program. *)
+ (* Purpose: To filter the palindromic lines from a given input *)
+ (* file to a specified output file. *)
+ (****************************************************************)
+ PROGRAM PALINDROME (INPUT, OUTPUT, IN_FILE, OUT_FILE);
+
+ CONST
+ MAX_L = 132;
+ TYPE
+ ABSTRACT = (DEFINED, UNDEFINED);
+ TEXT_LINE = RECORD
+ CHARS: ARRAY[1..MAX_L] OF CHAR;
+ LENGTH: 0..MAX_L;
+ END (*RECORD*);
+ VAR
+ IN_FILE, OUT_FILE: TEXT;
+ IN_LINE,
+ LETTERS: TEXT_LINE;
+ IS_PALINDROME: BOOLEAN;
+ IN_CHAR: CHAR;
+ I: INTEGER;
+ J: INTEGER;
+
+ BEGIN
+ ASSIGN (IN_FILE, 'TESTDATA.IN'); RESET (IN_FILE);
+ ASSIGN (OUT_FILE, 'TESTDATA.OUT'); REWRITE (OUT_FILE);
+
+ (***************** Palindrome (body) **********************)
+ (** Copy the lines of the IN_FILE that are palindromic to **)
+ (** the OUT_FILE. **)
+ WHILE NOT EOF (IN_FILE) DO
+ BEGIN
+ (***************** Palindrome (1) *********************)
+ (** Read a line from IN_FILE into IN_LINE. The letters **)
+ (** of this line are copied to LETTERS. **)
+ IN_LINE.LENGTH := 0;
+ LETTERS.LENGTH := 0;
+ WITH IN_LINE DO
+ WHILE NOT EOLN (IN_FILE) DO
+ BEGIN
+ READ (IN_FILE, IN_CHAR);
+ LENGTH := LENGTH + 1;
+ CHARS[LENGTH] := IN_CHAR;
+ IF IN_CHAR IN ['A'..'Z', 'a'..'z'] THEN
+ WITH LETTERS DO
+ BEGIN
+ LENGTH := LENGTH + 1;
+ CHARS[LENGTH] := IN_CHAR;
+ END (*WITH/IF*);
+ END (*WHILE/WITH*);
+
+ (********************* Palindrome (test) **************)
+ (** Check contents of IN_LINE and LETTERS. #optional **)
+ (********************************************************)
+
+ (***************** End of Palindrome (1) **************)
+
+ READLN (IN_FILE);
+
+ (***************** Palindrome (2) *********************)
+ (** Test palindromicity of LETTERS. Set IS_PALINDROME **)
+ (** to reflect the result of the test. **)
+ WITH LETTERS DO
+ BEGIN
+ (* Transform lowercase to uppercase. *)
+ FOR I := 1 TO LENGTH DO
+ IF CHARS[I] IN ['a'..'z']
+ THEN CHARS[I] :=
+ CHR(ORD(CHARS[I]) - ORD('a') + ORD('A'));
+
+ (* Perform the palindromicity test. *)
+ IS_PALINDROME := TRUE;
+ I := 1;
+ WHILE IS_PALINDROME AND (I <= LENGTH DIV 2) DO
+ IF CHARS[I] = CHARS[LENGTH-I+1] THEN
+ I := I + 1
+ ELSE
+ IS_PALINDROME := FALSE;
+ END (*WITH*);
+ (***************** End of Palindrome (2) **************)
+
+
+ IF IS_PALINDROME THEN
+ BEGIN
+ (***************** Palindrome (3) *****************)
+ (** Write IN_LINE to OUT_FILE. **)
+ WITH IN_LINE DO
+ BEGIN
+ FOR J := 1 TO LENGTH DO
+ WRITE (OUT_FILE, CHARS[J]);
+ END (*WITH*);
+ (************* End of Palindrome (3) **************)
+
+ WRITELN (OUT_FILE);
+ END (*IF*);
+ END (*WHILE*);
+ (************* End of Palindrome (body) *******************)
+
+ END (*PALINDROME*).
+ (******************* End of PALINDROME.PAS ********************)
diff --git a/web/clip/ms_dos/ex01_a.ps b/web/clip/ms_dos/ex01_a.ps
new file mode 100644
index 0000000000..4e7e24c4fe
--- /dev/null
+++ b/web/clip/ms_dos/ex01_a.ps
@@ -0,0 +1,1416 @@
+%!PS-Adobe-2.0
+%%DocumentFonts: (atend)
+%%Title: F:\\LPT\\MAN\\EX01_A.DOC
+%%Creator: Lotus Manuscript
+%%For: EWvA, MRK
+%%CreationDate: March 22, 1993
+%%Pages: (atend)
+%%BoundingBox: 0 0 595 841
+%%EndComments
+% PostScript Prologue (initialization) for Manuscript
+% Copyright (c) 1985,1986,1987,1988 Lotus Development Corporation
+% There is no user servicable code in this file.
+
+% set timeouts to infinite
+statusdict begin
+0 setjobtimeout
+/manualfeedtimeout 3600 def
+/waittimeout 0 def
+end
+
+% correct bug correction in rev 41.0
+/idiv{div cvi}bind def
+
+% define User Dictionary
+/msdict 300 dict def msdict begin
+/bd{bind def}bind def
+
+% Define commonly used things
+/delay{usertime 5000 add{dup usertime lt{pop exit}if}loop}bd
+/mfeed{statusdict begin /manualfeed true def end}bd
+/afeed{statusdict begin /manualfeed false def end}bd
+/bfeed{ afeed statusdict begin /setpapertray where
+ {pop setpapertray}{pop} ifelse end}bd
+
+/dpi{0.24 dup scale}bd
+
+% These two are called for each page
+/inpage false def
+/begpage{save dpi /inpage true def}bd
+/endpage{inpage {restore showpage}if }bd
+
+% for possible banner
+/fileinfo {pop pop pop}bd
+/enddocument {end} bd
+
+% these are also used by eqn & gmf
+/ld{load def}bd
+/x/exch ld
+/cu{300 mul 72 div}bd
+/m/moveto ld
+/t/translate ld
+/rm/rmoveto ld
+/cp/currentpoint ld
+/st/stroke ld
+/ln/lineto ld
+/rlt/rlineto ld
+/slw/setlinewidth ld
+
+/ff/findfont ld
+/scf/scalefont ld
+/sf/setfont ld
+/fs{x /pt x def ff pt cu scf sf}bd
+
+% linedraw
+/li{4 2 roll setlinewidth 3 1 roll moveto 0.0 rlineto st}bd
+
+% outline factor
+/olwid 40.0 def
+% stroke width for outline
+/uoslw {pt cu x div slw}bd
+% relative horizontal move
+/xm{x currentpoint pop sub 0.0 rmoveto}bd
+
+% The basic show
+/s/show ld
+% move horizontal and show
+/ms{xm s}bd
+
+% variations
+% outline show - first printer attribute
+/ppss{dup cp 3 -1 roll false charpath st
+x 3 -1 roll stringwidth pop add x moveto}bd
+/pss{olwid uoslw { ( ) dup 0 4 -1 roll put ppss}forall}bd
+/ps{pss}bd
+/mps{xm ps}bd
+
+% graybox show - second printer attribute
+/gb{cp 3 -1 roll pt cu dup 4 div neg 0 x rm dup 0 x rlt x 0 rlt
+neg 0 x rlt closepath currentgray .9 setgray fill setgray m}bd
+/usi{dup stringwidth pop gb}bd
+/us{usi s}bd
+/xum{x cp pop sub dup gb 0 rmoveto}bd
+
+% combinations of PD1 and PD2
+/ups{usi pss}bd
+/mups{xm ups}bd
+/mus{xm us}bd
+
+% define a new encoding vector (code page 850 based)
+/PC 256 array def
+StandardEncoding PC copy pop
+
+/dotaccent/bullet
+/quotesingle/quotedblleft/quotedblright/quotesinglbase
+/quotedblbase/guilsinglleft/guilsinglright/.notdef
+/ellipsis/perthousand/.notdef/.notdef/paragraph/section/dagger/daggerdbl
+/OE/oe/fi/fl/endash/emdash/fraction/Ydieresis
+PC 6 26 getinterval astore pop
+
+/Ccedilla/udieresis/eacute/acircumflex/adieresis/agrave/aring/ccedilla
+/ecircumflex/edieresis/egrave/idieresis/icircumflex/igrave/Adieresis/Aring
+/Eacute/ae/AE/ocircumflex/odieresis/ograve/ucircumflex/ugrave
+/ydieresis/Odieresis/Udieresis/oslash/sterling/Oslash/.notdef/florin
+/aacute/iacute/oacute/uacute/ntilde/Ntilde/ordfeminine/ordmasculine
+/questiondown/.notdef/.notdef/onehalf/onequarter/exclamdown/guillemotleft/guillemotright
+/.notdef/.notdef/.notdef/.notdef/.notdef/Aacute/Acircumflex/Agrave
+/.notdef/.notdef/.notdef/.notdef/.notdef/cent/yen/.notdef
+/.notdef/grave/.notdef/circumflex/tilde/.notdef/atilde/Atilde
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/currency
+/eth/Eth/Ecircumflex/Edieresis/Egrave/dotlessi/Iacute/Icircumflex
+/Idieresis/.notdef/.notdef/.notdef/.notdef/brokenbar/Igrave/.notdef
+/Oacute/germandbls/Ocircumflex/Ograve/otilde/Otilde/.notdef/thorn
+/Thorn/Uacute/Ucircumflex/Ugrave/yacute/Yacute/.notdef/acute
+/.notdef/.notdef/.notdef/threequarters/paragraph/section/.notdef/cedilla
+/ring/dieresis/periodcentered/onesuperior/threesuperior/twosuperior/.notdef/.notdef
+
+PC 128 128 getinterval astore pop
+
+% duplicate fonts with a new encoding vector
+/recd 5 dict def
+/pcft
+{recd begin
+/ncs PC def /nfn x def
+/bfn x def /bfd bfn findfont def
+/nf bfd maxlength dict def
+bfd{x dup dup /FID ne x /Encoding ne and
+{x nf 3 1 roll put}{pop pop}ifelse
+}forall
+nf/FontName nfn put
+nf/Encoding ncs put
+nfn nf definefont pop
+end}bd
+
+/fs{x /pt x def ff pt cu scf sf}bd
+
+% used by eqn
+/Times-Roman/TR pcft /Times-Bold/TRB pcft
+/Times-Italic/TRI pcft /Times-BoldItalic/TRBI pcft
+/Helvetica/HV pcft /Helvetica-Bold/HVB pcft
+/Helvetica-Oblique/HVO pcft /Helvetica-BoldOblique/HVBO pcft
+/Courier/CR pcft /Courier-Bold/CRB pcft
+/Sym{/Symbol fs}bd
+
+% Bit map image data decompression code
+/xx 0 def /yy 0 def
+/xbytes 0 def
+/lbuf 1200 string def /obuf 600 string def
+/bval <FFFEFCF8F0E0C080000103070F1F3F7F> def
+/blacks 96 string def /whites 96 string def
+0 1 95 {whites x 255 put} for
+
+/dispatch [
+{
+dup 47 le {32 sub 4 bitshift x pop 1}{
+dup 63 le {x pop 48 sub bval x get
+3 copy put x 1 add x 0} {
+dup 79 le {62 sub} {
+80 sub { 3 copy put x 1 add x } repeat 0
+}ifelse }ifelse }ifelse
+}bind
+{
+32 sub add
+3 copy put
+x 1 add x 0
+} bind
+{
+32 sub x pop add 255 0
+}bind
+{
+32 sub x pop
+3 copy getinterval
+whites 0 3 index getinterval
+x copy pop add 255 0
+}bind
+{
+32 sub x pop
+3 copy getinterval
+blacks 0 3 index getinterval
+x copy pop add 0 0
+}bind
+]def
+
+% read a raster line and unpack
+/readx{
+obuf 0 255 0
+currentfile lbuf readline pop
+{x dispatch x get exec} forall
+pop pop pop 0 xbytes getinterval}bd
+
+/mspic{
+/yy x def/xx x def
+/xbytes xx 8 idiv def
+xx yy 1 [xx 0 0 0 yy sub 0 yy]{readx}image}bd
+
+
+
+/Helvetica/fA pcft/FA{/fA fs}bd
+/Helvetica-Oblique/fAI pcft/FAI{/fAI fs}bd
+/Helvetica-Bold/fAB pcft/FAB{/fAB fs}bd
+/Helvetica-BoldOblique/fAIB pcft/FAIB{/fAIB fs}bd
+/Times-Roman/fB pcft/FB{/fB fs}bd
+/Times-Italic/fBI pcft/FBI{/fBI fs}bd
+/Times-Bold/fBB pcft/FBB{/fBB fs}bd
+/Times-BoldItalic/fBIB pcft/FBIB{/fBIB fs}bd
+/Courier/fH pcft/FH{/fH fs}bd
+/Courier-Oblique/fHI pcft/FHI{/fHI fs}bd
+/Courier-Bold/fHB pcft/FHB{/fHB fs}bd
+/Courier-BoldOblique/fHIB pcft/FHIB{/fHIB fs}bd
+/ZapfChancery-MediumItalic/fL pcft/FL{/fL fs}bd
+/ZapfChancery-MediumItalic/fLI pcft/FLI{/fLI fs}bd
+/ZapfChancery-MediumItalic/fLB pcft/FLB{/fLB fs}bd
+/ZapfChancery-MediumItalic/fLIB pcft/FLIB{/fLIB fs}bd
+/AvantGarde-Book/fM pcft/FM{/fM fs}bd
+/AvantGarde-BookOblique/fMI pcft/FMI{/fMI fs}bd
+/AvantGarde-Demi/fMB pcft/FMB{/fMB fs}bd
+/AvantGarde-DemiOblique/fMIB pcft/FMIB{/fMIB fs}bd
+(F:\\LPT\\MAN\\EX01_A.DOC)(EWvA, MRK)(March 22, 1993)fileinfo
+%%EndProlog
+%%Page: 0 1
+begpage
+12 FAB
+977 2996 m
+(Example 01: Palindrome filter)s
+12 FB
+295 2669 m
+(In)s
+354(this)ms
+444(appendix)ms
+645(we)ms
+721(illustrate)ms
+914(the)ms
+993(CLiP)ms
+1117(style)ms
+1229(of)ms
+1289(literate)ms
+1445(programming)ms
+1735(by)ms
+1803(a)ms
+1843(program)ms
+2031(to)ms
+2087(filter)ms
+295 2609 m
+(palindromic)s
+549(lines)ms
+656(from)ms
+765(an)ms
+825(input)ms
+940(file.)ms
+12 FB
+395 2549 m
+(Two)s
+501(files)ms
+602(are)ms
+678(involved:)ms
+882(the)ms
+958(program)ms
+1142(module)ms
+1307(\()ms
+11 FH
+(PALINDROME.PAS)s
+12 FB
+(\))s
+1740(and)ms
+1827(a)ms
+1864(test)ms
+1949(file)ms
+2030(\()ms
+11 FH
+(TEST-)s
+11 FH
+295 2489 m
+(DATA.IN)s
+12 FB
+(\).)s
+12 FAB
+295 2306 m
+(A.1. Specification)s
+12 FB
+295 2219 m
+(A)s
+343(palindrome)ms
+583(is)ms
+628(a)ms
+663(sentence)ms
+847(with)ms
+948(the)ms
+1021(property)ms
+1203(that)ms
+1290(the)ms
+1364(letters)ms
+1498(from)ms
+1607(left)ms
+1686(to)ms
+1737(right,)ms
+1856(read)ms
+1955(the)ms
+2028(same)ms
+2143(as)ms
+295 2159 m
+(from)s
+412(right)ms
+527(to)ms
+586(left.)ms
+686(In)ms
+748(the)ms
+830(comparison)ms
+1083(uppercase)ms
+1304(and)ms
+1396(lowercase)ms
+1617(letters)ms
+1759(are)ms
+1841(considered)ms
+2078(to)ms
+2137(be)ms
+295 2099 m
+(equivalent)s
+512(and)ms
+593(all)ms
+652(other)ms
+763(characters)ms
+975(are)ms
+1044(simply)ms
+1189(ignored.)ms
+1364(Hence)ms
+1500(an)ms
+1556(empty)ms
+1690(sentence)ms
+1871(is)ms
+1913(a)ms
+1944(palindrome.)ms
+295 2039 m
+(Other)s
+421(examples)ms
+622(are:)ms
+10 FH
+395 1958 m
+(\(************* #file "TESTDATA.IN" #comment off **************\))s
+395 1916 m
+(Ada)s
+395 1875 m
+(1234567)s
+395 1833 m
+(doremifasolosafimerod)s
+395 1791 m
+(\(******* Testdata #multiple *******\))s
+395 1750 m
+(\(***************** End of TESTDATA.PAS ************************\))s
+12 FB
+295 1657 m
+(The)s
+385(following)ms
+592(sentences)ms
+796(do)ms
+858(not)ms
+935(qualify)ms
+1089(as)ms
+1143(a)ms
+1178(palindrome.)ms
+10 FH
+395 1576 m
+(\(******* Testdata #quick *******\))s
+395 1535 m
+(Mr. Clinton won the elections over Mr. Bush.)s
+395 1493 m
+(This line is not palindromic.)s
+395 1451 m
+(Aabbccdd Aabbccdd Aabbccdd Aabbccdd)s
+395 1410 m
+(Abracadabra)s
+395 1368 m
+(supercalafragilisiticexpielecdosia)s
+12 FB
+295 1276 m
+(The)s
+385(following)ms
+592(are)ms
+665(examples)ms
+867(of)ms
+921(more)ms
+1036(sophisticated)ms
+1310(palindromes.)ms
+10 FH
+395 1195 m
+(\(******* Testdata #quick *******\))s
+395 1153 m
+(Able was I, ere I saw Elba.)s
+395 1111 m
+(A man, a plan, a canal, Panama.)s
+395 1070 m
+(Norma is as selfless as I Am, Ron.)s
+12 FB
+295 977 m
+(Note)s
+404(that)ms
+492(the)ms
+565(famous)ms
+725(Dutch)ms
+860(sentence)ms
+10 FH
+395 896 m
+(\(******* Testdata #quick *******\))s
+395 855 m
+(Koos Eekfeen keek maar door rood kerkraam, maar krek door rood raam)s
+395 813 m
+(keek neef Kees ook.)s
+12 FB
+295 721 m
+(will)s
+385(not)ms
+461(be)ms
+521(recognized)ms
+753(as)ms
+807(a)ms
+842(plindrome)ms
+1060(since)ms
+1175(it)ms
+1215(occupies)ms
+1403(two)ms
+1490(lines.)ms
+395 661 m
+(The)s
+488(program)ms
+11 FH
+674(PALINDROME)ms
+12 FB
+965(reads)ms
+1087(an)ms
+1151(input)ms
+1270(file,)ms
+1365(filters)ms
+1498(the)ms
+1575(lines)ms
+1686(that)ms
+1777(are)ms
+1854(palindromic)ms
+2112(and)ms
+295 601 m
+(writes)s
+429(them)ms
+542(to)ms
+593(an)ms
+653(output)ms
+793(file.)ms
+8 FB
+470 204 m
+(The)s
+530(CLiP)ms
+608(Style)ms
+685(of)ms
+721(Literate)ms
+833(Programming)ms
+1025(\(3.088,)ms
+1128(30-mar-93\))ms
+12 FB
+2075 204 m
+( 1 )s
+50 2 2130 216 li
+50 2 2020 216 li
+endpage
+%%Page: 1 2
+begpage
+12 FAB
+295 3176 m
+(A.2. Communication with the outside world)s
+12 FB
+295 3089 m
+(The)s
+391(program)ms
+578(conforms)ms
+785(to)ms
+842(the)ms
+922(general)ms
+1087(template)ms
+1278(of)ms
+1338(a)ms
+1378(Pascal)ms
+1524(program.)ms
+1724(We)ms
+1812(introduce)ms
+2019(the)ms
+2098(files)ms
+11 FH
+295 3029 m
+(IN_FILE)s
+12 FB
+501(and)ms
+11 FH
+586(OUT_FILE)ms
+12 FB
+820(to)ms
+872(define)ms
+1011(its)ms
+1072(communication)ms
+1396(with)ms
+1499(the)ms
+1573(outside)ms
+1731(world.)ms
+1874(The)ms
+1966(actual)ms
+2098(files)ms
+295 2969 m
+(have)s
+401(to)ms
+453(be)ms
+513(specified)ms
+706(at)ms
+754(run-time.)ms
+951(Thus)ms
+1064(we)ms
+1135(have)ms
+10 FH
+395 2888 m
+(\(***************** #file "PALINDRO.PAS" ***********************\))s
+395 2846 m
+(\(****************************************************************\))s
+395 2805 m
+(\(* Program: Palindrome filter program. *\))s
+395 2763 m
+(\(* Purpose: To filter the palindromic lines from a given input *\))s
+395 2721 m
+(\(* file to a specified output file. *\))s
+395 2680 m
+(\(****************************************************************\))s
+395 2638 m
+(PROGRAM PALINDROME \(INPUT, OUTPUT, IN_FILE, OUT_FILE\);)s
+395 2555 m
+(\(******* Palindrome constants #multiple #comment off *******\))s
+395 2513 m
+(\(******* Palindrome types #multiple #comment off *******\))s
+395 2471 m
+(VAR)s
+395 2430 m
+( IN_FILE, OUT_FILE: TEXT;)s
+395 2388 m
+(\(******* Palindrome variables #multiple #comment off *******\))s
+395 2305 m
+(BEGIN)s
+495 2263 m
+(ASSIGN \(IN_FILE, 'TESTDATA.IN'\); RESET \(IN_FILE\);)s
+395 2221 m
+( ASSIGN \(OUT_FILE, 'TESTDATA.OUT'\); REWRITE \(OUT_FILE\);)s
+395 2138 m
+( \(***************** Palindrome \(body\) **********************\))s
+395 2096 m
+( \(** Copy the lines of the IN_FILE that are palindromic to **\))s
+395 2055 m
+( \(** the OUT_FILE. **\))s
+395 2013 m
+( \(************************************************************\))s
+395 1930 m
+(END \(*PALINDROME*\).)s
+395 1888 m
+(\(******************* End of PALINDROME.PAS ********************\))s
+12 FB
+295 1796 m
+(To)s
+363(prepare)ms
+525(the)ms
+599(module)ms
+761(for)ms
+832(future)ms
+964(declarations)ms
+1218(of)ms
+1272(constants)ms
+1471(and)ms
+1555(types)ms
+1673(we)ms
+1744(have)ms
+10 FH
+395 1715 m
+(\(******* Palindrome constants #leader #quick *******\))s
+395 1673 m
+(CONST)s
+395 1631 m
+(\(******* Palindrome types #leader #quick *******\))s
+395 1590 m
+(TYPE)s
+12 FAB
+295 1477 m
+(A.3. Processing of the files)s
+12 FB
+295 1391 m
+(The)s
+384(program)ms
+565(processes)ms
+11 FH
+768(IN_FILE)ms
+12 FB
+972(line)ms
+1059(by)ms
+1120(line.)ms
+1219(The)ms
+1309(idea)ms
+1403(is)ms
+1448(to)ms
+1499(buffer)ms
+1632(an)ms
+1691(exact)ms
+1808(copy)ms
+1917(of)ms
+1970(the)ms
+2043(current)ms
+295 1331 m
+(line)s
+382(in)ms
+11 FH
+434(IN_LINE)ms
+12 FB
+(,)s
+652(while)ms
+776(at)ms
+824(the)ms
+898(same)ms
+1014(time)ms
+1116(its)ms
+1176(letters)ms
+1311(are)ms
+1384(buffered)ms
+1567(in)ms
+11 FH
+1618(LETTERS)ms
+12 FB
+(.)s
+1836(So)ms
+11 FH
+1902(LETTERS)ms
+12 FB
+2107(will)ms
+295 1271 m
+(be)s
+353(empty)ms
+489(if)ms
+531(the)ms
+603(line)ms
+689(holds)ms
+808(no)ms
+869(letters)ms
+1003(at)ms
+1050(all,)ms
+1124(in)ms
+1174(which)ms
+1307(case)ms
+1404(the)ms
+1476(line)ms
+1562(is)ms
+1607(considered)ms
+1835(to)ms
+1885(be)ms
+1943(palindromic)ms
+295 1211 m
+(by)s
+357(definition.)ms
+395 1151 m
+(We)s
+475(choose)ms
+624(the)ms
+696(buffers)ms
+11 FH
+848(IN_LINE)ms
+12 FB
+1051(and)ms
+11 FH
+1134(LETTERS)ms
+12 FB
+1337(to)ms
+1387(be)ms
+1445(of)ms
+1497(the)ms
+1569(same)ms
+1682(type,)ms
+11 FH
+1792(TEXT_LINE)ms
+12 FB
+(,)s
+2062(which)ms
+295 1091 m
+(we)s
+365(will)ms
+456(not)ms
+532(specify)ms
+689(in)ms
+740(detail)ms
+864(right)ms
+971(now.)ms
+1082(For)ms
+1164(this)ms
+1249(purpose)ms
+1419(we)ms
+1490(introduce)ms
+1692(a)ms
+1726(type)ms
+11 FH
+1825(ABSTRACT)ms
+12 FB
+(.)s
+10 FH
+395 1010 m
+(\(******* Palindrome types #quick *******\))s
+395 968 m
+( ABSTRACT = \(DEFINED, UNDEFINED\);)s
+11 FH
+295 876 m
+(TEXT_LINE)s
+12 FB
+555(will)ms
+646(temporarily)ms
+892(be)ms
+952(declared)ms
+11 FH
+1134(ABSTRACT)ms
+12 FB
+1367(and)ms
+1453(its)ms
+1513(details)ms
+1656(will)ms
+1747(be)ms
+1807(defined)ms
+1970(later.)ms
+2084(Thus)ms
+295 816 m
+(the)s
+368(declaration)ms
+603(of)ms
+11 FH
+657(TEXT_LINE)ms
+10 FH
+395 735 m
+(\(******* Palindrome types *******\))s
+395 693 m
+(\(******* Declaration of TEXT_LINE *******\))s
+395 651 m
+(\(***************** End of Palindrome types ********************\))s
+12 FB
+295 559 m
+(is)s
+340(temporarily)ms
+586(satisfied)ms
+765(with)ms
+867(the)ms
+940(type)ms
+11 FH
+1039(ABSTRACT)ms
+12 FB
+(.)s
+10 FH
+395 478 m
+(\(******* Declaration of TEXT_LINE #quick #default *******\))s
+395 436 m
+( TEXT_LINE = ABSTRACT;)s
+12 FB
+295 344 m
+(The)s
+385(declaration)ms
+619(for)ms
+690(the)ms
+764(variables)ms
+11 FH
+957(IN_LINE)ms
+12 FB
+1162(and)ms
+11 FH
+1247(LETTERS)ms
+12 FB
+1452(becomes)ms
+8 FB
+470 204 m
+(The)s
+530(CLiP)ms
+608(Style)ms
+685(of)ms
+721(Literate)ms
+833(Programming)ms
+1025(\(3.088,)ms
+1128(30-mar-93\))ms
+12 FB
+2075 204 m
+( 2 )s
+50 2 2130 216 li
+50 2 2020 216 li
+endpage
+%%Page: 2 3
+begpage
+10 FH
+395 3188 m
+(\(******* Palindrome variables #quick *******\))s
+395 3146 m
+( IN_LINE,)s
+395 3105 m
+( LETTERS: TEXT_LINE;)s
+12 FB
+295 3012 m
+(We)s
+379(have)ms
+488(to)ms
+542(test)ms
+11 FH
+626(LETTERS)ms
+12 FB
+834(in)ms
+887(order)ms
+1008(to)ms
+1062(decide)ms
+1207(whether)ms
+1383(or)ms
+1439(not)ms
+11 FH
+1518(IN_LINE)ms
+12 FB
+1726(contains)ms
+1907(a)ms
+1944(palindrome.)ms
+295 2952 m
+(The)s
+385(result)ms
+508(of)ms
+563(this)ms
+647(test)ms
+729(is)ms
+775(flagged)ms
+938(by)ms
+11 FH
+1000(IS_PALINDROME)ms
+12 FB
+(,)s
+1383(for)ms
+1453(which)ms
+1588(we)ms
+1659(introduce)ms
+1860(the)ms
+1934(declaration)ms
+10 FH
+395 2871 m
+(\(******* Palindrome variables #quick *******\))s
+395 2830 m
+( IS_PALINDROME: BOOLEAN;)s
+12 FB
+295 2737 m
+(Now)s
+404(the)ms
+478(body)ms
+590(of)ms
+644(the)ms
+718(Palindrome)ms
+961(filter)ms
+1071(may)ms
+1169(be)ms
+1229(expanded)ms
+1433(as)ms
+10 FH
+395 2656 m
+( \(***************** Palindrome \(body\) **********************\))s
+395 2615 m
+( \(** Copy the lines of the IN_FILE that are palindromic to **\))s
+395 2573 m
+( \(** the OUT_FILE. **\))s
+395 2531 m
+( WHILE NOT EOF \(IN_FILE\) DO)s
+395 2490 m
+( BEGIN)s
+395 2448 m
+( \(***************** Palindrome \(1\) *********************\))s
+395 2406 m
+( \(** Read a line from IN_FILE into IN_LINE. The letters **\))s
+395 2365 m
+( \(** of this line are copied to LETTERS. **\))s
+395 2323 m
+( \(********************************************************\))s
+395 2240 m
+( READLN \(IN_FILE\);)s
+395 2156 m
+( \(***************** Palindrome \(2\) *********************\))s
+395 2115 m
+( \(** Test palindromicity of LETTERS. Set IS_PALINDROME **\))s
+395 2073 m
+( \(** to reflect the result of the test. **\))s
+395 2031 m
+( \(********************************************************\))s
+395 1906 m
+( IF IS_PALINDROME THEN)s
+395 1865 m
+( BEGIN)s
+395 1823 m
+( \(***************** Palindrome \(3\) *****************\))s
+395 1781 m
+( \(** Write IN_LINE to OUT_FILE. **\))s
+395 1740 m
+( \(****************************************************\))s
+395 1656 m
+( WRITELN \(OUT_FILE\);)s
+395 1615 m
+( END \(*IF*\);)s
+395 1573 m
+( END \(*WHILE*\);)s
+395 1531 m
+( \(************* End of Palindrome \(body\) *******************\))s
+12 FAB
+295 1419 m
+(A.4. Choosing the structure of )s
+11 FH
+(IN_LINE)s
+12 FAB
+( and )s
+11 FH
+(LETTERS)s
+12 FB
+295 1332 m
+(Before)s
+442(we)ms
+512(can)ms
+593(proceed)ms
+763(we)ms
+833(need)ms
+939(to)ms
+989(establish)ms
+1176(a)ms
+1209(structure)ms
+1396(for)ms
+1466(the)ms
+1538(objects)ms
+11 FH
+1692(IN_LINE)ms
+12 FB
+1896(and)ms
+11 FH
+1979(LETTERS)ms
+12 FB
+(.)s
+295 1272 m
+(Thus)s
+412(we)ms
+487(define)ms
+11 FH
+629(TEXT_LINE)ms
+12 FB
+894(as)ms
+953(a)ms
+993(structure)ms
+1185(with)ms
+1291(two)ms
+1383(components.)ms
+1654(The)ms
+1749(first)ms
+1847(component)ms
+2087(is)ms
+2137(an)ms
+295 1212 m
+(array,)s
+11 FH
+424(CHARS)ms
+12 FB
+(,)s
+589(which)ms
+726(contains)ms
+907(the)ms
+983(characters)ms
+1200(to)ms
+1254(be)ms
+1315(buffered.)ms
+1512(The)ms
+1604(second)ms
+1758(component,)ms
+11 FH
+2007(LENGTH)ms
+12 FB
+(,)s
+295 1152 m
+(indicates)s
+484(which)ms
+619(part)ms
+709(of)ms
+762(the)ms
+836(array)ms
+950(is)ms
+996(actually)ms
+1166(occupied.)ms
+1371(The)ms
+1461(maximum)ms
+1676(number)ms
+1841(of)ms
+1895(characters)ms
+2109(that)ms
+295 1092 m
+(can)s
+375(be)ms
+434(buffered)ms
+614(by)ms
+676(the)ms
+748(structure)ms
+934(is)ms
+979(determined)ms
+1215(by)ms
+1277(the)ms
+1349(length,)ms
+11 FH
+1498(MAX_L)ms
+12 FB
+(,)s
+1659(of)ms
+1712(the)ms
+1784(array.)ms
+11 FH
+1911(MAX_L)ms
+12 FB
+2060(serves)ms
+295 1032 m
+(as)s
+349(an)ms
+408(implementation)ms
+735(parameter.)ms
+10 FH
+395 951 m
+(\(******* Palindrome constants #quick *******\))s
+395 910 m
+( MAX_L = 132;)s
+395 826 m
+(\(******* Declaration of TEXT_LINE #quick *******\))s
+395 785 m
+( TEXT_LINE = RECORD)s
+395 743 m
+( CHARS: ARRAY[1..MAX_L] OF CHAR;)s
+395 701 m
+( LENGTH: 0..MAX_L;)s
+395 660 m
+( END \(*RECORD*\);)s
+12 FAB
+295 547 m
+(A.5. Reading a line)s
+12 FB
+295 461 m
+(For)s
+383(efficiency)ms
+601(reasons)ms
+769(we)ms
+846(fill)ms
+11 FH
+923(IN_LINE)ms
+12 FB
+1134(and)ms
+11 FH
+1225(LETTERS)ms
+12 FB
+1436(simultaneously.)ms
+1770(Therefore)ms
+1986(we)ms
+2062(buffer)ms
+295 401 m
+(every)s
+418(character)ms
+614(that)ms
+701(is)ms
+747(read)ms
+846(from)ms
+11 FH
+955(IN_FILE)ms
+12 FB
+1160(in)ms
+1212(the)ms
+1285(variable)ms
+11 FH
+1459(IN_CHAR)ms
+12 FB
+(.)s
+8 FB
+470 204 m
+(The)s
+530(CLiP)ms
+608(Style)ms
+685(of)ms
+721(Literate)ms
+833(Programming)ms
+1025(\(3.088,)ms
+1128(30-mar-93\))ms
+12 FB
+2075 204 m
+( 3 )s
+50 2 2130 216 li
+50 2 2020 216 li
+endpage
+%%Page: 3 4
+begpage
+10 FH
+395 3188 m
+(\(******* Palindrome variables #quick *******\))s
+395 3146 m
+( IN_CHAR: CHAR;)s
+12 FB
+295 3054 m
+(Only)s
+404(when)ms
+11 FH
+522(IN_CHAR)ms
+12 FB
+724(turns)ms
+834(out)ms
+907(to)ms
+956(be)ms
+1013(a)ms
+1045(letter)ms
+1157(it)ms
+1194(is)ms
+1237(copied)ms
+1380(to)ms
+11 FH
+1429(LETTERS)ms
+12 FB
+(.)s
+1643(Since)ms
+1764(this)ms
+1846(process)ms
+2006(is)ms
+2049(crucial)ms
+295 2994 m
+(for)s
+365(the)ms
+439(overall)ms
+590(operation,)ms
+804(we)ms
+875(make)ms
+996(provisions)ms
+1217(for)ms
+1287(some)ms
+1405(debugging)ms
+1629(code)ms
+1736(here.)ms
+10 FH
+395 2913 m
+( \(***************** Palindrome \(1\) *********************\))s
+395 2871 m
+( \(** Read a line from IN_FILE into IN_LINE. The letters **\))s
+395 2830 m
+( \(** of this line are copied to LETTERS. **\))s
+395 2788 m
+( IN_LINE.LENGTH := 0;)s
+395 2746 m
+( LETTERS.LENGTH := 0;)s
+395 2705 m
+( WITH IN_LINE DO)s
+395 2663 m
+( WHILE NOT EOLN \(IN_FILE\) DO)s
+395 2621 m
+( BEGIN)s
+395 2580 m
+( READ \(IN_FILE, IN_CHAR\);)s
+395 2538 m
+( LENGTH := LENGTH + 1;)s
+395 2496 m
+( CHARS[LENGTH] := IN_CHAR;)s
+395 2455 m
+( IF IN_CHAR IN ['A'..'Z', 'a'..'z'] THEN)s
+395 2413 m
+( WITH LETTERS DO)s
+395 2371 m
+( BEGIN)s
+395 2330 m
+( LENGTH := LENGTH + 1;)s
+395 2288 m
+( CHARS[LENGTH] := IN_CHAR;)s
+395 2246 m
+( END \(*WITH/IF*\);)s
+395 2205 m
+( END \(*WHILE/WITH*\);)s
+395 2121 m
+( \(********************* Palindrome \(test\) **************\))s
+395 2080 m
+( \(** Check contents of IN_LINE and LETTERS. #optional **\))s
+395 2038 m
+( \(********************************************************\))s
+395 1955 m
+( \(***************** End of Palindrome \(1\) **************\))s
+12 FAB
+295 1842 m
+(A.6. Testing for palindromicity)s
+12 FB
+295 1756 m
+(We)s
+387(test)ms
+479(the)ms
+563(palindromicity)ms
+881(of)ms
+11 FH
+945(LETTERS)ms
+12 FB
+1161(in)ms
+1223(two)ms
+1321(steps.)ms
+1456(First)ms
+1571(we)ms
+1652(transform)ms
+1869(the)ms
+1953(contents)ms
+2143(of)ms
+11 FH
+295 1696 m
+(LETTERS)s
+12 FB
+503(to)ms
+558(uppercase)ms
+774(and)ms
+863(then)ms
+965(we)ms
+1039(compare)ms
+1227(the)ms
+1305(characters)ms
+1523(of)ms
+11 FH
+1581(LETTERS)ms
+12 FB
+1790(pairwise.)ms
+1988(The)ms
+2082(com-)ms
+295 1636 m
+(parison)s
+455(is)ms
+502(done)ms
+612(starting)ms
+775(with)ms
+878(the)ms
+952(most)ms
+1063(outside)ms
+1220(characters)ms
+1436(and)ms
+1522(progressing)ms
+1768(inward.)ms
+1933(The)ms
+2024(string)ms
+2151(is)ms
+295 1576 m
+(assumed)s
+480(a)ms
+516(palindrome)ms
+757(until)ms
+862(the)ms
+937(opposite)ms
+1120(is)ms
+1167(proven)ms
+1319(through)ms
+1488(a)ms
+1524(pair)ms
+1615(of)ms
+1670(different)ms
+1856(characters.)ms
+2085(With)ms
+295 1516 m
+(the)s
+368(local)ms
+478(counter)ms
+10 FH
+395 1435 m
+(\(******* Palindrome variables #quick *******\))s
+395 1393 m
+( I: INTEGER;)s
+12 FB
+295 1301 m
+(we)s
+365(keep)ms
+472(track)ms
+585(of)ms
+639(the)ms
+712(comparing)ms
+939(process.)ms
+1114(Now)ms
+11 FH
+1223(Palindrome \(2\))ms
+12 FB
+1621(can)ms
+1703(be)ms
+1763(expanded)ms
+1967(as)ms
+10 FH
+395 1220 m
+( \(***************** Palindrome \(2\) *********************\))s
+395 1178 m
+( \(** Test palindromicity of LETTERS. Set IS_PALINDROME **\))s
+395 1136 m
+( \(** to reflect the result of the test. **\))s
+395 1095 m
+( WITH LETTERS DO)s
+395 1053 m
+( BEGIN)s
+395 1011 m
+( \(* Transform lowercase to uppercase. *\))s
+395 970 m
+( FOR I := 1 TO LENGTH DO)s
+395 928 m
+( IF CHARS[I] IN ['a'..'z'])s
+395 886 m
+( THEN CHARS[I] :=)s
+395 845 m
+( CHR\(ORD\(CHARS[I]\) - ORD\('a'\) + ORD\('A'\)\);)s
+395 761 m
+( \(* Perform the palindromicity test. *\))s
+395 720 m
+( IS_PALINDROME := TRUE;)s
+395 678 m
+( I := 1;)s
+395 636 m
+( WHILE IS_PALINDROME AND \(I <= LENGTH DIV 2\) DO)s
+395 595 m
+( IF CHARS[I] = CHARS[LENGTH-I+1] THEN)s
+395 553 m
+( I := I + 1)s
+395 511 m
+( ELSE)s
+395 470 m
+( IS_PALINDROME := FALSE;)s
+395 428 m
+( END \(*WITH*\);)s
+395 386 m
+( \(***************** End of Palindrome \(2\) **************\))s
+8 FB
+470 204 m
+(The)s
+530(CLiP)ms
+608(Style)ms
+685(of)ms
+721(Literate)ms
+833(Programming)ms
+1025(\(3.088,)ms
+1128(30-mar-93\))ms
+12 FB
+2075 204 m
+( 4 )s
+50 2 2130 216 li
+50 2 2020 216 li
+endpage
+%%Page: 4 5
+begpage
+12 FAB
+295 3176 m
+(A.7. Writing the palindrome)s
+12 FB
+295 3089 m
+(The)s
+385(only)ms
+486(remaining)ms
+701(action)ms
+836(is)ms
+882(to)ms
+933(write)ms
+1049(the)ms
+1122(contents)ms
+1301(of)ms
+11 FH
+1356(IN_LINE)ms
+12 FB
+(.)s
+1573(Again)ms
+1708(we)ms
+1779(need)ms
+1885(a)ms
+1920(local)ms
+2030(counter)ms
+10 FH
+395 3008 m
+(\(******* Palindrome variables #quick *******\))s
+395 2966 m
+( J: INTEGER;)s
+12 FB
+295 2874 m
+(The)s
+385(writing)ms
+542(proceeds)ms
+732(straight)ms
+894(forward.)ms
+10 FH
+395 2793 m
+( \(***************** Palindrome \(3\) *****************\))s
+395 2751 m
+( \(** Write IN_LINE to OUT_FILE. **\))s
+395 2710 m
+( WITH IN_LINE DO)s
+395 2668 m
+( BEGIN)s
+395 2626 m
+( FOR J := 1 TO LENGTH DO)s
+395 2585 m
+( WRITE \(OUT_FILE, CHARS[J]\);)s
+395 2543 m
+( END \(*WITH*\);)s
+395 2501 m
+( \(************* End of Palindrome \(3\) **************\))s
+8 FB
+470 204 m
+(The)s
+530(CLiP)ms
+608(Style)ms
+685(of)ms
+721(Literate)ms
+833(Programming)ms
+1025(\(3.088,)ms
+1128(30-mar-93\))ms
+12 FB
+2075 204 m
+( 5 )s
+50 2 2130 216 li
+50 2 2020 216 li
+endpage
+%%Trailer
+enddocument
+%%Pages: 5
+%%DocumentFonts:
+%%+ Helvetica-Bold
+%%+ Times-Roman
+%%+ Courier
+%%EOF
+ \ No newline at end of file
diff --git a/web/clip/ms_dos/ex01_b.asc b/web/clip/ms_dos/ex01_b.asc
new file mode 100644
index 0000000000..af96cdf4aa
--- /dev/null
+++ b/web/clip/ms_dos/ex01_b.asc
@@ -0,0 +1,42 @@
+
+
+
+ Example 01: Testcode
+
+
+
+
+
+This section contains some test code that can be inserted to debug the
+palindrome filter program.
+
+
+B.1. Print the contents of IN_LINE and LETTERS
+
+Correct reading of the input is crucial. For debugging purposes we may want to
+inspect the contents of *IN_LINE* and *LETTERS*. We need a local counter
+
+ (******* Palindrome variables #quick *******)
+ T : INTEGER;
+
+We want the debugging information te be clearly flagged as such.
+
+ (***************** Palindrome (test) ******************)
+ (** Check contents of IN_LINE and LETTERS. **)
+ WRITELN;
+ WRITELN ('============ DEBUGGING INFORMATION ===============');
+ WRITELN ('Contents of buffer IN_LINE: ');
+ WRITE ('>>>>');
+ WITH IN_LINE DO
+ FOR T := 1 TO LENGTH DO WRITE (OUTPUT, CHARS[T]);
+ WRITE ('<<<<');
+ WRITELN;
+ WRITELN ('Contents of buffer LETTERS: ');
+ WRITE ('>>>>');
+ WITH LETTERS DO
+ FOR T := 1 TO LENGTH DO WRITE (OUTPUT, CHARS[T]);
+ WRITE ('<<<<');
+ WRITELN;
+ WRITELN ('========== END OF DEBUGGING INFORMATION ==========');
+ WRITELN;
+ (************* End of Palindrome (test) ***************)
diff --git a/web/clip/ms_dos/ex01_b.ini b/web/clip/ms_dos/ex01_b.ini
new file mode 100644
index 0000000000..071e1a38f3
--- /dev/null
+++ b/web/clip/ms_dos/ex01_b.ini
@@ -0,0 +1,27 @@
+This file contains data that is needed to run CLiP
+And is generated by CLiP_MENU
+Modifying this file at own risk.
+Using CLiP_MENU is definitely recommended.
+
+INTERACTIVE_MODE Mode (INTERACTIVE/DEBUG/HELPFUL/AUTO)
+YES Interactive fault correction (YES/NO)
+BOTH Error message destination (TERMINAL/REPORTFILE/BOTH/NONE)
+(* Left comment string
+*) Right comment string
+* Command character
+ENDOF END string
+# Option marker
+EXTRACTED The specified modules are (OMITTED/EXTRACTED)
+------------ REPORT FILE -----------
+CLIP.RPT
+------------ INPUT FILES -----------
+.\EX01_A.ASC
+.\EX01_B.ASC
+------------ MODULES ---------------
+.\
+PALINDRO.PAS
+.\
+TESTDATA.IN
+------------ MODULE DIRECTORY ------
+.\
+------------ END OF INI FILE -------
diff --git a/web/clip/ms_dos/ex01_b.pas b/web/clip/ms_dos/ex01_b.pas
new file mode 100644
index 0000000000..329560b847
--- /dev/null
+++ b/web/clip/ms_dos/ex01_b.pas
@@ -0,0 +1,119 @@
+ (***************** #file "PALINDRO.PAS" ***********************)
+ (****************************************************************)
+ (* Program: Palindrome filter program. *)
+ (* Purpose: To filter the palindromic lines from a given input *)
+ (* file to a specified output file. *)
+ (****************************************************************)
+ PROGRAM PALINDROME (INPUT, OUTPUT, IN_FILE, OUT_FILE);
+
+ CONST
+ MAX_L = 132;
+ TYPE
+ ABSTRACT = (DEFINED, UNDEFINED);
+ TEXT_LINE = RECORD
+ CHARS: ARRAY[1..MAX_L] OF CHAR;
+ LENGTH: 0..MAX_L;
+ END (*RECORD*);
+ VAR
+ IN_FILE, OUT_FILE: TEXT;
+ IN_LINE,
+ LETTERS: TEXT_LINE;
+ IS_PALINDROME: BOOLEAN;
+ IN_CHAR: CHAR;
+ I: INTEGER;
+ J: INTEGER;
+ T : INTEGER;
+
+ BEGIN
+ ASSIGN (IN_FILE, 'TESTDATA.IN'); RESET (IN_FILE);
+ ASSIGN (OUT_FILE, 'TESTDATA.OUT'); REWRITE (OUT_FILE);
+
+ (***************** Palindrome (body) **********************)
+ (** Copy the lines of the IN_FILE that are palindromic to **)
+ (** the OUT_FILE. **)
+ WHILE NOT EOF (IN_FILE) DO
+ BEGIN
+ (***************** Palindrome (1) *********************)
+ (** Read a line from IN_FILE into IN_LINE. The letters **)
+ (** of this line are copied to LETTERS. **)
+ IN_LINE.LENGTH := 0;
+ LETTERS.LENGTH := 0;
+ WITH IN_LINE DO
+ WHILE NOT EOLN (IN_FILE) DO
+ BEGIN
+ READ (IN_FILE, IN_CHAR);
+ LENGTH := LENGTH + 1;
+ CHARS[LENGTH] := IN_CHAR;
+ IF IN_CHAR IN ['A'..'Z', 'a'..'z'] THEN
+ WITH LETTERS DO
+ BEGIN
+ LENGTH := LENGTH + 1;
+ CHARS[LENGTH] := IN_CHAR;
+ END (*WITH/IF*);
+ END (*WHILE/WITH*);
+
+ (***************** Palindrome (test) ******************)
+ (** Check contents of IN_LINE and LETTERS. **)
+ WRITELN;
+ WRITELN ('============ DEBUGGING INFORMATION ===============');
+ WRITELN ('Contents of buffer IN_LINE: ');
+ WRITE ('>>>>');
+ WITH IN_LINE DO
+ FOR T := 1 TO LENGTH DO WRITE (OUTPUT, CHARS[T]);
+ WRITE ('<<<<');
+ WRITELN;
+ WRITELN ('Contents of buffer LETTERS: ');
+ WRITE ('>>>>');
+ WITH LETTERS DO
+ FOR T := 1 TO LENGTH DO WRITE (OUTPUT, CHARS[T]);
+ WRITE ('<<<<');
+ WRITELN;
+ WRITELN ('========== END OF DEBUGGING INFORMATION ==========');
+ WRITELN;
+ (************* End of Palindrome (test) ***************)
+
+ (***************** End of Palindrome (1) **************)
+
+ READLN (IN_FILE);
+
+ (***************** Palindrome (2) *********************)
+ (** Test palindromicity of LETTERS. Set IS_PALINDROME **)
+ (** to reflect the result of the test. **)
+ WITH LETTERS DO
+ BEGIN
+ (* Transform lowercase to uppercase. *)
+ FOR I := 1 TO LENGTH DO
+ IF CHARS[I] IN ['a'..'z']
+ THEN CHARS[I] :=
+ CHR(ORD(CHARS[I]) - ORD('a') + ORD('A'));
+
+ (* Perform the palindromicity test. *)
+ IS_PALINDROME := TRUE;
+ I := 1;
+ WHILE IS_PALINDROME AND (I <= LENGTH DIV 2) DO
+ IF CHARS[I] = CHARS[LENGTH-I+1] THEN
+ I := I + 1
+ ELSE
+ IS_PALINDROME := FALSE;
+ END (*WITH*);
+ (***************** End of Palindrome (2) **************)
+
+
+ IF IS_PALINDROME THEN
+ BEGIN
+ (***************** Palindrome (3) *****************)
+ (** Write IN_LINE to OUT_FILE. **)
+ WITH IN_LINE DO
+ BEGIN
+ FOR J := 1 TO LENGTH DO
+ WRITE (OUT_FILE, CHARS[J]);
+ END (*WITH*);
+ (************* End of Palindrome (3) **************)
+
+ WRITELN (OUT_FILE);
+ END (*IF*);
+ END (*WHILE*);
+ (************* End of Palindrome (body) *******************)
+
+ END (*PALINDROME*).
+ (******************* End of PALINDROME.PAS ********************)
diff --git a/web/clip/ms_dos/ex01_b.ps b/web/clip/ms_dos/ex01_b.ps
new file mode 100644
index 0000000000..5728152156
--- /dev/null
+++ b/web/clip/ms_dos/ex01_b.ps
@@ -0,0 +1,370 @@
+%!PS-Adobe-2.0
+%%DocumentFonts: (atend)
+%%Title: F:\\LPT\\MAN\\EX01_B.DOC
+%%Creator: Lotus Manuscript
+%%For: EWvA, MRK
+%%CreationDate: March 22, 1993
+%%Pages: (atend)
+%%BoundingBox: 0 0 595 841
+%%EndComments
+% PostScript Prologue (initialization) for Manuscript
+% Copyright (c) 1985,1986,1987,1988 Lotus Development Corporation
+% There is no user servicable code in this file.
+
+% set timeouts to infinite
+statusdict begin
+0 setjobtimeout
+/manualfeedtimeout 3600 def
+/waittimeout 0 def
+end
+
+% correct bug correction in rev 41.0
+/idiv{div cvi}bind def
+
+% define User Dictionary
+/msdict 300 dict def msdict begin
+/bd{bind def}bind def
+
+% Define commonly used things
+/delay{usertime 5000 add{dup usertime lt{pop exit}if}loop}bd
+/mfeed{statusdict begin /manualfeed true def end}bd
+/afeed{statusdict begin /manualfeed false def end}bd
+/bfeed{ afeed statusdict begin /setpapertray where
+ {pop setpapertray}{pop} ifelse end}bd
+
+/dpi{0.24 dup scale}bd
+
+% These two are called for each page
+/inpage false def
+/begpage{save dpi /inpage true def}bd
+/endpage{inpage {restore showpage}if }bd
+
+% for possible banner
+/fileinfo {pop pop pop}bd
+/enddocument {end} bd
+
+% these are also used by eqn & gmf
+/ld{load def}bd
+/x/exch ld
+/cu{300 mul 72 div}bd
+/m/moveto ld
+/t/translate ld
+/rm/rmoveto ld
+/cp/currentpoint ld
+/st/stroke ld
+/ln/lineto ld
+/rlt/rlineto ld
+/slw/setlinewidth ld
+
+/ff/findfont ld
+/scf/scalefont ld
+/sf/setfont ld
+/fs{x /pt x def ff pt cu scf sf}bd
+
+% linedraw
+/li{4 2 roll setlinewidth 3 1 roll moveto 0.0 rlineto st}bd
+
+% outline factor
+/olwid 40.0 def
+% stroke width for outline
+/uoslw {pt cu x div slw}bd
+% relative horizontal move
+/xm{x currentpoint pop sub 0.0 rmoveto}bd
+
+% The basic show
+/s/show ld
+% move horizontal and show
+/ms{xm s}bd
+
+% variations
+% outline show - first printer attribute
+/ppss{dup cp 3 -1 roll false charpath st
+x 3 -1 roll stringwidth pop add x moveto}bd
+/pss{olwid uoslw { ( ) dup 0 4 -1 roll put ppss}forall}bd
+/ps{pss}bd
+/mps{xm ps}bd
+
+% graybox show - second printer attribute
+/gb{cp 3 -1 roll pt cu dup 4 div neg 0 x rm dup 0 x rlt x 0 rlt
+neg 0 x rlt closepath currentgray .9 setgray fill setgray m}bd
+/usi{dup stringwidth pop gb}bd
+/us{usi s}bd
+/xum{x cp pop sub dup gb 0 rmoveto}bd
+
+% combinations of PD1 and PD2
+/ups{usi pss}bd
+/mups{xm ups}bd
+/mus{xm us}bd
+
+% define a new encoding vector (code page 850 based)
+/PC 256 array def
+StandardEncoding PC copy pop
+
+/dotaccent/bullet
+/quotesingle/quotedblleft/quotedblright/quotesinglbase
+/quotedblbase/guilsinglleft/guilsinglright/.notdef
+/ellipsis/perthousand/.notdef/.notdef/paragraph/section/dagger/daggerdbl
+/OE/oe/fi/fl/endash/emdash/fraction/Ydieresis
+PC 6 26 getinterval astore pop
+
+/Ccedilla/udieresis/eacute/acircumflex/adieresis/agrave/aring/ccedilla
+/ecircumflex/edieresis/egrave/idieresis/icircumflex/igrave/Adieresis/Aring
+/Eacute/ae/AE/ocircumflex/odieresis/ograve/ucircumflex/ugrave
+/ydieresis/Odieresis/Udieresis/oslash/sterling/Oslash/.notdef/florin
+/aacute/iacute/oacute/uacute/ntilde/Ntilde/ordfeminine/ordmasculine
+/questiondown/.notdef/.notdef/onehalf/onequarter/exclamdown/guillemotleft/guillemotright
+/.notdef/.notdef/.notdef/.notdef/.notdef/Aacute/Acircumflex/Agrave
+/.notdef/.notdef/.notdef/.notdef/.notdef/cent/yen/.notdef
+/.notdef/grave/.notdef/circumflex/tilde/.notdef/atilde/Atilde
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/currency
+/eth/Eth/Ecircumflex/Edieresis/Egrave/dotlessi/Iacute/Icircumflex
+/Idieresis/.notdef/.notdef/.notdef/.notdef/brokenbar/Igrave/.notdef
+/Oacute/germandbls/Ocircumflex/Ograve/otilde/Otilde/.notdef/thorn
+/Thorn/Uacute/Ucircumflex/Ugrave/yacute/Yacute/.notdef/acute
+/.notdef/.notdef/.notdef/threequarters/paragraph/section/.notdef/cedilla
+/ring/dieresis/periodcentered/onesuperior/threesuperior/twosuperior/.notdef/.notdef
+
+PC 128 128 getinterval astore pop
+
+% duplicate fonts with a new encoding vector
+/recd 5 dict def
+/pcft
+{recd begin
+/ncs PC def /nfn x def
+/bfn x def /bfd bfn findfont def
+/nf bfd maxlength dict def
+bfd{x dup dup /FID ne x /Encoding ne and
+{x nf 3 1 roll put}{pop pop}ifelse
+}forall
+nf/FontName nfn put
+nf/Encoding ncs put
+nfn nf definefont pop
+end}bd
+
+/fs{x /pt x def ff pt cu scf sf}bd
+
+% used by eqn
+/Times-Roman/TR pcft /Times-Bold/TRB pcft
+/Times-Italic/TRI pcft /Times-BoldItalic/TRBI pcft
+/Helvetica/HV pcft /Helvetica-Bold/HVB pcft
+/Helvetica-Oblique/HVO pcft /Helvetica-BoldOblique/HVBO pcft
+/Courier/CR pcft /Courier-Bold/CRB pcft
+/Sym{/Symbol fs}bd
+
+% Bit map image data decompression code
+/xx 0 def /yy 0 def
+/xbytes 0 def
+/lbuf 1200 string def /obuf 600 string def
+/bval <FFFEFCF8F0E0C080000103070F1F3F7F> def
+/blacks 96 string def /whites 96 string def
+0 1 95 {whites x 255 put} for
+
+/dispatch [
+{
+dup 47 le {32 sub 4 bitshift x pop 1}{
+dup 63 le {x pop 48 sub bval x get
+3 copy put x 1 add x 0} {
+dup 79 le {62 sub} {
+80 sub { 3 copy put x 1 add x } repeat 0
+}ifelse }ifelse }ifelse
+}bind
+{
+32 sub add
+3 copy put
+x 1 add x 0
+} bind
+{
+32 sub x pop add 255 0
+}bind
+{
+32 sub x pop
+3 copy getinterval
+whites 0 3 index getinterval
+x copy pop add 255 0
+}bind
+{
+32 sub x pop
+3 copy getinterval
+blacks 0 3 index getinterval
+x copy pop add 0 0
+}bind
+]def
+
+% read a raster line and unpack
+/readx{
+obuf 0 255 0
+currentfile lbuf readline pop
+{x dispatch x get exec} forall
+pop pop pop 0 xbytes getinterval}bd
+
+/mspic{
+/yy x def/xx x def
+/xbytes xx 8 idiv def
+xx yy 1 [xx 0 0 0 yy sub 0 yy]{readx}image}bd
+
+
+
+/Helvetica/fA pcft/FA{/fA fs}bd
+/Helvetica-Oblique/fAI pcft/FAI{/fAI fs}bd
+/Helvetica-Bold/fAB pcft/FAB{/fAB fs}bd
+/Helvetica-BoldOblique/fAIB pcft/FAIB{/fAIB fs}bd
+/Times-Roman/fB pcft/FB{/fB fs}bd
+/Times-Italic/fBI pcft/FBI{/fBI fs}bd
+/Times-Bold/fBB pcft/FBB{/fBB fs}bd
+/Times-BoldItalic/fBIB pcft/FBIB{/fBIB fs}bd
+/Courier/fH pcft/FH{/fH fs}bd
+/Courier-Oblique/fHI pcft/FHI{/fHI fs}bd
+/Courier-Bold/fHB pcft/FHB{/fHB fs}bd
+/Courier-BoldOblique/fHIB pcft/FHIB{/fHIB fs}bd
+/ZapfChancery-MediumItalic/fL pcft/FL{/fL fs}bd
+/ZapfChancery-MediumItalic/fLI pcft/FLI{/fLI fs}bd
+/ZapfChancery-MediumItalic/fLB pcft/FLB{/fLB fs}bd
+/ZapfChancery-MediumItalic/fLIB pcft/FLIB{/fLIB fs}bd
+/AvantGarde-Book/fM pcft/FM{/fM fs}bd
+/AvantGarde-BookOblique/fMI pcft/FMI{/fMI fs}bd
+/AvantGarde-Demi/fMB pcft/FMB{/fMB fs}bd
+/AvantGarde-DemiOblique/fMIB pcft/FMIB{/fMIB fs}bd
+(F:\\LPT\\MAN\\EX01_B.DOC)(EWvA, MRK)(March 22, 1993)fileinfo
+%%EndProlog
+%%Page: 0 1
+begpage
+12 FAB
+977 2996 m
+(Example 01: Testcode)s
+12 FB
+295 2669 m
+(This)s
+393(section)ms
+544(contains)ms
+721(some)ms
+836(test)ms
+915(code)ms
+1019(that)ms
+1103(can)ms
+1183(be)ms
+1239(inserted)ms
+1407(to)ms
+1456(debug)ms
+1588(the)ms
+1658(palindrome)ms
+1896(filter)ms
+2003(program.)ms
+12 FAB
+295 2486 m
+(B.1. Print the contents of IN_LINE and LETTERS)s
+12 FB
+295 2399 m
+(Correct)s
+462(reading)ms
+629(of)ms
+688(the)ms
+767(input)ms
+887(is)ms
+938(crucial.)ms
+1104(For)ms
+1191(debugging)ms
+1419(purposes)ms
+1614(we)ms
+1690(may)ms
+1794(want)ms
+1908(to)ms
+1964(inspect)ms
+2123(the)ms
+295 2339 m
+(contents)s
+474(of)ms
+11 FH
+528(IN_LINE)ms
+12 FB
+733(and)ms
+11 FH
+818(LETTERS)ms
+12 FB
+(.)s
+1035(We)ms
+1117(need)ms
+1224(a)ms
+1259(local)ms
+1368(counter)ms
+10 FH
+370 2258 m
+(\(******* Palindrome variables #quick *******\))s
+370 2216 m
+( T : INTEGER;)s
+12 FB
+295 2124 m
+(We)s
+376(want)ms
+486(the)ms
+560(debugging)ms
+783(information)ms
+1032(te)ms
+1081(be)ms
+1140(clearly)ms
+1289(flagged)ms
+1451(as)ms
+1505(such.)ms
+10 FH
+370 2043 m
+(\(***************** Palindrome \(test\) ******************\))s
+370 2001 m
+(\(** Check contents of IN_LINE and LETTERS. **\))s
+370 1960 m
+(WRITELN;)s
+370 1918 m
+(WRITELN \('============ DEBUGGING INFORMATION ==============='\);)s
+370 1876 m
+(WRITELN \('Contents of buffer IN_LINE: '\);)s
+370 1835 m
+(WRITE \('>>>>'\);)s
+370 1793 m
+(WITH IN_LINE DO)s
+370 1751 m
+(FOR T := 1 TO LENGTH DO WRITE \(OUTPUT, CHARS[T]\);)s
+370 1710 m
+(WRITE \('<<<<'\);)s
+370 1668 m
+(WRITELN;)s
+370 1626 m
+(WRITELN \('Contents of buffer LETTERS: '\);)s
+370 1585 m
+(WRITE \('>>>>'\);)s
+370 1543 m
+(WITH LETTERS DO)s
+370 1501 m
+(FOR T := 1 TO LENGTH DO WRITE \(OUTPUT, CHARS[T]\);)s
+370 1460 m
+(WRITE \('<<<<'\);)s
+370 1418 m
+(WRITELN;)s
+370 1376 m
+(WRITELN \('========== END OF DEBUGGING INFORMATION =========='\);)s
+370 1335 m
+(WRITELN;)s
+370 1293 m
+(\(************* End of Palindrome \(test\) ***************\))s
+8 FB
+295 204 m
+(The)s
+355(CLiP)ms
+433(Style)ms
+510(of)ms
+546(Literate)ms
+658(Programming)ms
+850(\(3.046,)ms
+953(30-mar-93\))ms
+12 FB
+2075 204 m
+( 1 )s
+50 2 2130 216 li
+50 2 2020 216 li
+endpage
+%%Trailer
+enddocument
+%%Pages: 1
+%%DocumentFonts:
+%%+ Helvetica-Bold
+%%+ Times-Roman
+%%+ Courier
+%%EOF
+ \ No newline at end of file
diff --git a/web/clip/ms_dos/fortran.ini b/web/clip/ms_dos/fortran.ini
new file mode 100644
index 0000000000..dfa6ed41f3
--- /dev/null
+++ b/web/clip/ms_dos/fortran.ini
@@ -0,0 +1,21 @@
+This file contains data that is needed to run CLiP
+And is generated by CLiP_MENU
+Modifying this file at own risk.
+Using CLiP_MENU is definitely recommended.
+
+INTERACTIVE_MODE Mode (INTERACTIVE/DEBUG/HELPFUL/AUTO)
+YES Interactive fault correction (YES/NO)
+BOTH Error message destination (TERMINAL/REPORTFILE/BOTH/NONE)
+!* Left comment string
+*! Right comment string
+* Command character
+ENDOF END string
+# Option marker
+OMITTED The specified modules are (OMITTED/EXTRACTED)
+------------ REPORT FILE -----------
+CLIP.RPT
+------------ INPUT FILES -----------
+------------ MODULES ---------------
+------------ MODULE DIRECTORY ------
+
+------------ END OF INI FILE -------
diff --git a/web/clip/ms_dos/lisp.ini b/web/clip/ms_dos/lisp.ini
new file mode 100644
index 0000000000..7dba75501b
--- /dev/null
+++ b/web/clip/ms_dos/lisp.ini
@@ -0,0 +1,21 @@
+This file contains data that is needed to run CLiP
+And is generated by CLiP_MENU
+Modifying this file at own risk.
+Using CLiP_MENU is definitely recommended.
+
+INTERACTIVE_MODE Mode (INTERACTIVE/DEBUG/HELPFUL/AUTO)
+YES Interactive fault correction (YES/NO)
+BOTH Error message destination (TERMINAL/REPORTFILE/BOTH/NONE)
+#|| Left comment string
+||# Right comment string
++ Command character
+ENDOF END string
+@ Option marker
+OMITTED The specified modules are (OMITTED/EXTRACTED)
+------------ REPORT FILE -----------
+CLIP.RPT
+------------ INPUT FILES -----------
+------------ MODULES ---------------
+------------ MODULE DIRECTORY ------
+
+------------ END OF INI FILE -------
diff --git a/web/clip/ms_dos/manual.ps b/web/clip/ms_dos/manual.ps
new file mode 100644
index 0000000000..50d83c521f
--- /dev/null
+++ b/web/clip/ms_dos/manual.ps
@@ -0,0 +1,5813 @@
+%!PS-Adobe-2.0
+%%DocumentFonts: (atend)
+%%Title: F:\\LPT\\MAN\\MANUAL.DOC
+%%Creator: Lotus Manuscript
+%%For: EWvA
+%%CreationDate: November 16, 1993
+%%Pages: (atend)
+%%BoundingBox: 0 0 595 841
+%%EndComments
+% PostScript Prologue (initialization) for Manuscript
+% Copyright (c) 1985,1986,1987,1988 Lotus Development Corporation
+% There is no user servicable code in this file.
+
+% set timeouts to infinite
+statusdict begin
+0 setjobtimeout
+/manualfeedtimeout 3600 def
+/waittimeout 0 def
+end
+
+% correct bug correction in rev 41.0
+/idiv{div cvi}bind def
+
+% define User Dictionary
+/msdict 300 dict def msdict begin
+/bd{bind def}bind def
+
+% Define commonly used things
+/delay{usertime 5000 add{dup usertime lt{pop exit}if}loop}bd
+/mfeed{statusdict begin /manualfeed true def end}bd
+/afeed{statusdict begin /manualfeed false def end}bd
+/bfeed{ afeed statusdict begin /setpapertray where
+ {pop setpapertray}{pop} ifelse end}bd
+
+/dpi{0.24 dup scale}bd
+
+% These two are called for each page
+/inpage false def
+/begpage{save dpi /inpage true def}bd
+/endpage{inpage {restore showpage}if }bd
+
+% for possible banner
+/fileinfo {pop pop pop}bd
+/enddocument {end} bd
+
+% these are also used by eqn & gmf
+/ld{load def}bd
+/x/exch ld
+/cu{300 mul 72 div}bd
+/m/moveto ld
+/t/translate ld
+/rm/rmoveto ld
+/cp/currentpoint ld
+/st/stroke ld
+/ln/lineto ld
+/rlt/rlineto ld
+/slw/setlinewidth ld
+
+/ff/findfont ld
+/scf/scalefont ld
+/sf/setfont ld
+/fs{x /pt x def ff pt cu scf sf}bd
+
+% linedraw
+/li{4 2 roll setlinewidth 3 1 roll moveto 0.0 rlineto st}bd
+
+% outline factor
+/olwid 40.0 def
+% stroke width for outline
+/uoslw {pt cu x div slw}bd
+% relative horizontal move
+/xm{x currentpoint pop sub 0.0 rmoveto}bd
+
+% The basic show
+/s/show ld
+% move horizontal and show
+/ms{xm s}bd
+
+% variations
+% outline show - first printer attribute
+/ppss{dup cp 3 -1 roll false charpath st
+x 3 -1 roll stringwidth pop add x moveto}bd
+/pss{olwid uoslw { ( ) dup 0 4 -1 roll put ppss}forall}bd
+/ps{pss}bd
+/mps{xm ps}bd
+
+% graybox show - second printer attribute
+/gb{cp 3 -1 roll pt cu dup 4 div neg 0 x rm dup 0 x rlt x 0 rlt
+neg 0 x rlt closepath currentgray .9 setgray fill setgray m}bd
+/usi{dup stringwidth pop gb}bd
+/us{usi s}bd
+/xum{x cp pop sub dup gb 0 rmoveto}bd
+
+% combinations of PD1 and PD2
+/ups{usi pss}bd
+/mups{xm ups}bd
+/mus{xm us}bd
+
+% define a new encoding vector (code page 850 based)
+/PC 256 array def
+StandardEncoding PC copy pop
+
+/dotaccent/bullet
+/quotesingle/quotedblleft/quotedblright/quotesinglbase
+/quotedblbase/guilsinglleft/guilsinglright/.notdef
+/ellipsis/perthousand/.notdef/.notdef/paragraph/section/dagger/daggerdbl
+/OE/oe/fi/fl/endash/emdash/fraction/Ydieresis
+PC 6 26 getinterval astore pop
+
+/Ccedilla/udieresis/eacute/acircumflex/adieresis/agrave/aring/ccedilla
+/ecircumflex/edieresis/egrave/idieresis/icircumflex/igrave/Adieresis/Aring
+/Eacute/ae/AE/ocircumflex/odieresis/ograve/ucircumflex/ugrave
+/ydieresis/Odieresis/Udieresis/oslash/sterling/Oslash/.notdef/florin
+/aacute/iacute/oacute/uacute/ntilde/Ntilde/ordfeminine/ordmasculine
+/questiondown/.notdef/.notdef/onehalf/onequarter/exclamdown/guillemotleft/guillemotright
+/.notdef/.notdef/.notdef/.notdef/.notdef/Aacute/Acircumflex/Agrave
+/.notdef/.notdef/.notdef/.notdef/.notdef/cent/yen/.notdef
+/.notdef/grave/.notdef/circumflex/tilde/.notdef/atilde/Atilde
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/currency
+/eth/Eth/Ecircumflex/Edieresis/Egrave/dotlessi/Iacute/Icircumflex
+/Idieresis/.notdef/.notdef/.notdef/.notdef/brokenbar/Igrave/.notdef
+/Oacute/germandbls/Ocircumflex/Ograve/otilde/Otilde/.notdef/thorn
+/Thorn/Uacute/Ucircumflex/Ugrave/yacute/Yacute/.notdef/acute
+/.notdef/.notdef/.notdef/threequarters/paragraph/section/.notdef/cedilla
+/ring/dieresis/periodcentered/onesuperior/threesuperior/twosuperior/.notdef/.notdef
+
+PC 128 128 getinterval astore pop
+
+% duplicate fonts with a new encoding vector
+/recd 5 dict def
+/pcft
+{recd begin
+/ncs PC def /nfn x def
+/bfn x def /bfd bfn findfont def
+/nf bfd maxlength dict def
+bfd{x dup dup /FID ne x /Encoding ne and
+{x nf 3 1 roll put}{pop pop}ifelse
+}forall
+nf/FontName nfn put
+nf/Encoding ncs put
+nfn nf definefont pop
+end}bd
+
+/fs{x /pt x def ff pt cu scf sf}bd
+
+% used by eqn
+/Times-Roman/TR pcft /Times-Bold/TRB pcft
+/Times-Italic/TRI pcft /Times-BoldItalic/TRBI pcft
+/Helvetica/HV pcft /Helvetica-Bold/HVB pcft
+/Helvetica-Oblique/HVO pcft /Helvetica-BoldOblique/HVBO pcft
+/Courier/CR pcft /Courier-Bold/CRB pcft
+/Sym{/Symbol fs}bd
+
+% Bit map image data decompression code
+/xx 0 def /yy 0 def
+/xbytes 0 def
+/lbuf 1200 string def /obuf 600 string def
+/bval <FFFEFCF8F0E0C080000103070F1F3F7F> def
+/blacks 96 string def /whites 96 string def
+0 1 95 {whites x 255 put} for
+
+/dispatch [
+{
+dup 47 le {32 sub 4 bitshift x pop 1}{
+dup 63 le {x pop 48 sub bval x get
+3 copy put x 1 add x 0} {
+dup 79 le {62 sub} {
+80 sub { 3 copy put x 1 add x } repeat 0
+}ifelse }ifelse }ifelse
+}bind
+{
+32 sub add
+3 copy put
+x 1 add x 0
+} bind
+{
+32 sub x pop add 255 0
+}bind
+{
+32 sub x pop
+3 copy getinterval
+whites 0 3 index getinterval
+x copy pop add 255 0
+}bind
+{
+32 sub x pop
+3 copy getinterval
+blacks 0 3 index getinterval
+x copy pop add 0 0
+}bind
+]def
+
+% read a raster line and unpack
+/readx{
+obuf 0 255 0
+currentfile lbuf readline pop
+{x dispatch x get exec} forall
+pop pop pop 0 xbytes getinterval}bd
+
+/mspic{
+/yy x def/xx x def
+/xbytes xx 8 idiv def
+xx yy 1 [xx 0 0 0 yy sub 0 yy]{readx}image}bd
+
+
+
+/Times-Roman/fA pcft/FA{/fA fs}bd
+/Times-Italic/fAI pcft/FAI{/fAI fs}bd
+/Times-Bold/fAB pcft/FAB{/fAB fs}bd
+/Times-BoldItalic/fAIB pcft/FAIB{/fAIB fs}bd
+/Helvetica/fC pcft/FC{/fC fs}bd
+/Helvetica-Oblique/fCI pcft/FCI{/fCI fs}bd
+/Helvetica-Bold/fCB pcft/FCB{/fCB fs}bd
+/Helvetica-BoldOblique/fCIB pcft/FCIB{/fCIB fs}bd
+/Courier/fH pcft/FH{/fH fs}bd
+/Courier-Oblique/fHI pcft/FHI{/fHI fs}bd
+/Courier-Bold/fHB pcft/FHB{/fHB fs}bd
+/Courier-BoldOblique/fHIB pcft/FHIB{/fHIB fs}bd
+/Helvetica-Narrow/fK pcft/FK{/fK fs}bd
+/Helvetica-Narrow-Oblique/fKI pcft/FKI{/fKI fs}bd
+/Helvetica-Narrow-Bold/fKB pcft/FKB{/fKB fs}bd
+/Helvetica-Narrow-BoldOblique/fKIB pcft/FKIB{/fKIB fs}bd
+/ZapfChancery-MediumItalic/fL pcft/FL{/fL fs}bd
+/ZapfChancery-MediumItalic/fLI pcft/FLI{/fLI fs}bd
+/ZapfChancery-MediumItalic/fLB pcft/FLB{/fLB fs}bd
+/ZapfChancery-MediumItalic/fLIB pcft/FLIB{/fLIB fs}bd
+/AvantGarde-Book/fM pcft/FM{/fM fs}bd
+/AvantGarde-BookOblique/fMI pcft/FMI{/fMI fs}bd
+/AvantGarde-Demi/fMB pcft/FMB{/fMB fs}bd
+/AvantGarde-DemiOblique/fMIB pcft/FMIB{/fMIB fs}bd
+(F:\\LPT\\MAN\\MANUAL.DOC)(EWvA)(November 16, 1993)fileinfo
+%%EndProlog
+%%Page: 0 1
+begpage
+14 FCB
+719 2578 m
+(CLiP - )s
+14 FCIB
+(C)s
+14 FCB
+( ode from )s
+14 FCIB
+(Li)s
+14 FCB
+( terate )s
+14 FCIB
+(P)s
+14 FCB
+( rograms)s
+14 FCB
+901 2438 m
+(Provisional User Manual)s
+12 FAB
+295 2133 m
+(Disclaimer:)s
+12 FA
+389 2073 m
+(This)s
+493(document)ms
+706(is)ms
+755(meant)ms
+893(for)ms
+967(programmers)ms
+1250(who)ms
+1351(are)ms
+1428(already)ms
+1591(familiar)ms
+1765(with)ms
+1870(the)ms
+1947(literate)ms
+2101(pro-)ms
+295 2013 m
+(gramming)s
+512(paradigm.)ms
+725(It)ms
+767(pretends)ms
+948(in)ms
+999(no)ms
+1061(way)ms
+1156(to)ms
+1207(be)ms
+1266(a)ms
+1299(complete)ms
+1495(user)ms
+1590(manual)ms
+1749(in)ms
+1799(the)ms
+1872(real)ms
+1959(meaning)ms
+2143(of)ms
+295 1953 m
+(the)s
+369(word.)ms
+497(But)ms
+583(the)ms
+657(document)ms
+868(should)ms
+1014(supply)ms
+1161(sufficient)ms
+1363(hints)ms
+1473(to)ms
+1525(experiment)ms
+1764(successfully)ms
+2021(with)ms
+2123(the)ms
+295 1893 m
+(CLiP)s
+413(system.)ms
+389 1833 m
+(You)s
+492(are)ms
+571(assumed)ms
+761(to)ms
+817(be)ms
+882(familiar)ms
+1058(with)ms
+1165(the)ms
+1243(ideas)ms
+1364(and)ms
+1454(design)ms
+1602(goals)ms
+1725(of)ms
+1784(the)ms
+1863(CLiP)ms
+1986(system)ms
+2143(as)ms
+295 1773 m
+(explained)s
+513(in)ms
+576([Ammers)ms
+788(and)ms
+884(Kramer)ms
+1061(1993].)ms
+1214(Also)ms
+1332(you)ms
+1431(should)ms
+1588(have)ms
+1707(read)ms
+11 FH
+1816(READ_ME.TXT)ms
+12 FA
+2143(or)ms
+11 FH
+295 1713 m
+(READ_ME.PS)s
+12 FA
+577(which)ms
+707(come)ms
+823(with)ms
+919(the)ms
+988(executables)ms
+1229(and)ms
+1309(understand)ms
+1536(the)ms
+1604(meaning)ms
+1784(of)ms
+1833(the)ms
+1902(INI-file)ms
+2062(which)ms
+295 1653 m
+(guides)s
+438(the)ms
+511(extraction)ms
+724(process.)ms
+389 1593 m
+(The)s
+481(DOS)ms
+596(and)ms
+683(VMS)ms
+806(versions)ms
+987(of)ms
+1044(CLiP)ms
+1164(consist)ms
+1318(of)ms
+1374(two)ms
+1464(independent)ms
+1723(programs,)ms
+1939(CLIP_1)ms
+2112(and)ms
+295 1533 m
+(CLIP_2.)s
+481(CLIP_1)ms
+654(is)ms
+703(purely)ms
+846(to)ms
+900(create)ms
+1035(an)ms
+1097(INI-file)ms
+1265(for)ms
+1339(CLIP_2,)ms
+1525(which)ms
+1662(performs)ms
+1858(the)ms
+1935(actual)ms
+2069(work.)ms
+295 1473 m
+(The)s
+387(Unix)ms
+502(version)ms
+664(consists)ms
+837(of)ms
+894(only)ms
+998(one)ms
+1085(program,)ms
+1282(CLIP)ms
+1405(\(which)ms
+1559(is)ms
+1607(identical)ms
+1794(to)ms
+1848(CLIP_2\),)ms
+2050(and)ms
+2137(an)ms
+295 1413 m
+(INI-file)s
+459(should)ms
+603(be)ms
+662(made)ms
+782(using)ms
+902(the)ms
+974(supplied)ms
+1155(scripts)ms
+1297(or)ms
+1350(an)ms
+1409(editor.)ms
+1549(This)ms
+1650(manual)ms
+1808(only)ms
+1909(deals)ms
+2023(with)ms
+2123(the)ms
+295 1353 m
+(second)s
+446(program.)ms
+14 FCB
+295 1193 m
+(1 Introduction)s
+12 FA
+295 1098 m
+(In)s
+354(short)ms
+472(the)ms
+551(idea)ms
+652(behind)ms
+806(CLiP)ms
+930(is)ms
+981(to)ms
+1038(define)ms
+1181(a)ms
+1221(style)ms
+1334(of)ms
+1393(programming)ms
+1683(sufficiently)ms
+1929(formal)ms
+2080(to)ms
+2137(be)ms
+295 1038 m
+(recognized)s
+531(by)ms
+597(a)ms
+636(literate)ms
+792(programming)ms
+1080(automaton.)ms
+1321(This)ms
+1426(syntax)ms
+1574(\(which)ms
+1729(we)ms
+1804(will)ms
+1899(refer)ms
+2010(to)ms
+2065(as)ms
+2123(the)ms
+295 978 m
+(CLiP-syntax\))s
+577(should)ms
+724(not)ms
+801(obstruct)ms
+975(a)ms
+1011(natural)ms
+1163(way)ms
+1259(of)ms
+1314(programming.)ms
+1612(Ideally)ms
+1764(the)ms
+1839(system)ms
+1991(should)ms
+2137(be)ms
+295 918 m
+(smart)s
+421(enough)ms
+583(to)ms
+637("see")ms
+756(stubs,)ms
+887(slots)ms
+993(and)ms
+1080(the)ms
+1157(like)ms
+1247(by)ms
+1312("inspecting")ms
+1573(the)ms
+1649(documentation)ms
+1961(and)ms
+2048(simply)ms
+295 858 m
+("understanding")s
+631(the)ms
+704(refinements)ms
+952(the)ms
+1025(programmer)ms
+1285(has)ms
+1364(made.)ms
+1497(Alas,)ms
+1613(this)ms
+1697(is)ms
+1743(far)ms
+1810(beyond)ms
+1970(the)ms
+2043(current)ms
+295 798 m
+(potential)s
+485(of)ms
+542(artificial)ms
+726(intelligence)ms
+975(and)ms
+1062(we)ms
+1136(will)ms
+1229(have)ms
+1339(to)ms
+1393(reach)ms
+1516(the)ms
+1593(automaton)ms
+1819(a)ms
+1857(helping)ms
+2022(hand)ms
+2134(by)ms
+295 738 m
+(defining)s
+474(a)ms
+508(special)ms
+660(syntax.)ms
+389 678 m
+(So)s
+454(we)ms
+524(want)ms
+634(the)ms
+707("look)ms
+829(and)ms
+914(feel")ms
+1021(of)ms
+1075(a)ms
+1110(documentation)ms
+1420(to)ms
+1471(be)ms
+1530(as)ms
+1584("natural")ms
+1776(as)ms
+1830(possible,)ms
+2019(but)ms
+2096(with)ms
+295 618 m
+(CLiP)s
+413(features)ms
+584(that)ms
+672(can)ms
+754(be)ms
+814(recognized)ms
+1046(by)ms
+1109(an)ms
+1169(automaton.)ms
+1406(On)ms
+1480(the)ms
+1554(other)ms
+1669(hand)ms
+1779(should)ms
+1926(the)ms
+2000(reader)ms
+2137(be)ms
+295 558 m
+(burdened)s
+497(as)ms
+554(little)ms
+662(as)ms
+720(possible)ms
+900(with)ms
+1004(the)ms
+1082(fact)ms
+1173(that)ms
+1264(additional)ms
+1480(processing)ms
+1709(is)ms
+1759(needed)ms
+1916(to)ms
+1971(extract)ms
+2123(the)ms
+295 498 m
+(modules.)s
+493(In)ms
+551(systems)ms
+726(like)ms
+818(VAMP)ms
+979([Ammers)ms
+1184(1984])ms
+1317(and)ms
+1406(WEB)ms
+1534([Knuth)ms
+1692(1984])ms
+1825(- which)ms
+1993(use)ms
+2076(batch)ms
+295 438 m
+(formatters -)s
+539(this)ms
+622(is)ms
+665(achieved)ms
+853(by)ms
+913(adding)ms
+1059(explicit)ms
+1219(commands)ms
+1446(in)ms
+1495(the)ms
+1566(source-files)ms
+1809(that)ms
+1894(are)ms
+1965(suppressed)ms
+295 378 m
+(in)s
+349(the)ms
+425(formatted)ms
+634(documentation.)ms
+959(But)ms
+1047(this)ms
+1134(technique)ms
+1344(does)ms
+1450(not)ms
+1530(work)ms
+1647(if)ms
+1693(the)ms
+1769(documentation)ms
+2082(envi-)ms
+8 FA
+295 254 m
+(CLiP)s
+373(provisional)ms
+532(user)ms
+595(manual)ms
+702(\(version)ms
+819(2.100\))ms
+endpage
+%%Page: 1 2
+begpage
+10 FCB
+295 3182 m
+(2)s
+10 FC
+460 3182 m
+(Syntax \(programming style\))s
+12 FA
+295 3011 m
+(ronment)s
+470(is)ms
+512(an)ms
+568(interactive)ms
+788(word-processor)ms
+1107(\(Word)ms
+1247(Perfect,)ms
+1409(Lotus)ms
+1532(Manuscript,)ms
+1781(MS-Word,)ms
+2005(Ami)ms
+2102(Pro,)ms
+295 2951 m
+(etc.\).)s
+411(So)ms
+480(CLiP)ms
+602(uses)ms
+705(either)ms
+835(the)ms
+912(ASCII-export)ms
+1204(from)ms
+1317(a)ms
+1356(word-processors)ms
+1703(or)ms
+1761(the)ms
+1838(ASCII)ms
+1985(input)ms
+2104(of)ms
+2162(a)ms
+295 2891 m
+(formatter)s
+491(and)ms
+573(extracts)ms
+738(modules)ms
+918(from)ms
+1025(there.)ms
+1148(In)ms
+1199(these)ms
+1312(files)ms
+1408(CLiP)ms
+1524(recognizes)ms
+1748(the)ms
+1819(important)ms
+2023(sections)ms
+295 2831 m
+(by)s
+357(a)ms
+392(particular)ms
+596(programming-style)ms
+992(rather)ms
+1121(than)ms
+1219(by)ms
+1282(explicit)ms
+1444(commands.)ms
+389 2771 m
+(The)s
+479(first)ms
+573(section)ms
+727(describes)ms
+926(the)ms
+1000(syntax)ms
+1143(that)ms
+1231(CLiP)ms
+1350("sees".)ms
+1499(The)ms
+1590(next)ms
+1689(section)ms
+1843(gives)ms
+1962(a)ms
+1997(couple)ms
+2143(of)ms
+295 2711 m
+(useful)s
+427(examples.)ms
+640(In)ms
+692(section)ms
+844(4)ms
+880(we)ms
+949(describe)ms
+1127(the)ms
+1198(options)ms
+1356(that)ms
+1442(may)ms
+1539(be)ms
+1597(used)ms
+1699(to)ms
+1749(customize)ms
+1963(the)ms
+2035(process)ms
+295 2651 m
+(of)s
+350(module)ms
+514(generation.)ms
+752(In)ms
+808(section)ms
+963(5)ms
+1002(we)ms
+1075(give)ms
+1175(some)ms
+1295(hints)ms
+1406(on)ms
+1470(how)ms
+1570(to)ms
+1623(organize)ms
+1809(your)ms
+1915(working)ms
+2096(with)ms
+295 2591 m
+(CLiP)s
+409(efficiently.)ms
+637(Stubs)ms
+757(and)ms
+839(slots)ms
+940(my)ms
+1013(remaining)ms
+1226(sections)ms
+1396(illustrate)ms
+1580(the)ms
+1651(style)ms
+1755(of)ms
+1806(documentation)ms
+2112(and)ms
+295 2531 m
+(programs)s
+492(that)ms
+575(would)ms
+709(result.)ms
+841(CLiP)ms
+955(is)ms
+997(in)ms
+1044(development)ms
+1311(and)ms
+1392(we)ms
+1459(compile)ms
+1628(the)ms
+1698(known)ms
+1843(bugs)ms
+1946(in)ms
+1993(section 6.)ms
+14 FCB
+295 2371 m
+(2 Syntax \(programming style\))s
+12 FAI
+295 2276 m
+(CLiP-lines)s
+12 FA
+562( that)ms
+670(is)ms
+723(lines)ms
+838(which)ms
+981(have)ms
+1096(a)ms
+1138(special)ms
+1297(meaning)ms
+1490(to)ms
+1549(CLiP )ms
+1718(start)ms
+1824(with)ms
+1934(a)ms
+1976(CLIP-left-)ms
+295 2216 m
+(parenthesis)s
+537(\(CLIP-lpar\))ms
+790(and)ms
+879(end)ms
+969(with)ms
+1075(a)ms
+1114(CLIP-right-parenthesis)ms
+1593(\(CLIP-rpar\).)ms
+1861(Both)ms
+1976(tokens)ms
+2123(are)ms
+295 2156 m
+(constructed)s
+545(as)ms
+607(extensions)ms
+838(of)ms
+899(the)ms
+980(tokens)ms
+1131(encapsulating)ms
+1426(comments)ms
+1651(which)ms
+1794(we)ms
+1872(will)ms
+1970(refer)ms
+2084(to)ms
+2143(as)ms
+11 FH
+295 2096 m
+(COMM-START)s
+12 FA
+581(and)ms
+11 FH
+665(COMM-END)ms
+12 FA
+(.)s
+909(If)ms
+954(we)ms
+1024(program)ms
+1205(in)ms
+1256(Pascal)ms
+1396(then)ms
+1493(everything)ms
+1719(between)ms
+1897(")ms
+11 FH
+(\(*)s
+12 FA
+(")s
+2005(and)ms
+2089(")ms
+11 FH
+(*\))s
+12 FA
+(")s
+295 2036 m
+(is)s
+340(seen)ms
+442(as)ms
+496(comment,)ms
+707(thus)ms
+803(we)ms
+874(have)ms
+981(the)ms
+1054(convention:)ms
+11 FH
+554 1951 m
+(COMM-START)s
+12 FA
+841(=)ms
+882(")ms
+11 FH
+(\(*)s
+12 FA
+(")s
+11 FH
+554 1891 m
+(COMM-END)s
+12 FA
+811(=)ms
+852(")ms
+11 FH
+(*\))s
+12 FA
+(")s
+295 1806 m
+(Extension)s
+503(of)ms
+553(the)ms
+622(comment)ms
+816(token)ms
+936(is)ms
+977(by)ms
+1035(a)ms
+1066(character)ms
+1257(with)ms
+1354(a)ms
+1385(special)ms
+1532(meaning)ms
+1712(to)ms
+1759(clip,)ms
+1855(the)ms
+11 FH
+1924(CLIP-CHAR)ms
+12 FA
+(.)s
+295 1746 m
+(In)s
+349(our)ms
+428(case)ms
+526(we)ms
+597(assume)ms
+11 FH
+554 1661 m
+(CLIP-CHAR)s
+12 FA
+814(=)ms
+854(")ms
+11 FH
+(*)s
+12 FA
+(")s
+295 1576 m
+(Thus)s
+407(CLiP-lines)ms
+636(are)ms
+710(enclosed)ms
+897(by)ms
+554 1491 m
+(CLIP-lpar)s
+769(of)ms
+823(the)ms
+897(form)ms
+1006(")ms
+11 FH
+(\(**)s
+12 FA
+(")s
+295 1406 m
+(and)s
+554 1321 m
+(CLIP-rpar)s
+772(of)ms
+826(the)ms
+899(form)ms
+1009(")ms
+11 FH
+(**\))s
+12 FA
+(")s
+295 1236 m
+(The)s
+380(parameters)ms
+11 FH
+607(COMM-START)ms
+12 FA
+(,)s
+11 FH
+902(COMM-END)ms
+12 FA
+1129(and)ms
+11 FH
+1209(CLIP-CHAR)ms
+12 FA
+1464(are)ms
+1532(set)ms
+1595(by)ms
+1653(the)ms
+1721(INI-file)ms
+1882(and)ms
+1961(it)ms
+1997(is)ms
+2037(evident)ms
+295 1176 m
+(that)s
+382(the)ms
+456(convention)ms
+690(can)ms
+772(be)ms
+832(adjusted.)ms
+389 1091 m
+(CLiP)s
+507(distinguishes)ms
+780(six)ms
+851(source)ms
+994(line)ms
+1082(categories:)ms
+10 FH
+395 1011 m
+(1)s
+470 1011 m
+(\(******************* <arbitrary string> **********************\))s
+395 961 m
+(2)s
+470 961 m
+(\(**************** End of <arbitrary string> ******************\))s
+395 911 m
+(3)s
+470 911 m
+(\(** <arbitrary string> **\))s
+395 861 m
+(4)s
+470 861 m
+(\(***************************************************************\))s
+395 811 m
+(5)s
+470 811 m
+(<the empty string>)s
+395 761 m
+(6)s
+470 761 m
+(<any string not falling in one of the above categories>)s
+12 FA
+295 664 m
+(We)s
+373(will)ms
+460(refer)ms
+563(to)ms
+611(a)ms
+642(line)ms
+726(from)ms
+832(the)ms
+902(second)ms
+1049(category)ms
+1230(as)ms
+1281(an)ms
+1337("L2")ms
+1442(and)ms
+1523(so)ms
+1577(on)ms
+1636(and)ms
+1717(investigate)ms
+1942(the)ms
+2012(meaning)ms
+295 604 m
+(is)s
+340(of)ms
+395(the)ms
+468(various)ms
+628(categories)ms
+843(for)ms
+914(CLiP.)ms
+389 544 m
+(The)s
+479(string)ms
+605(")ms
+11 FH
+(End)s
+736(of)ms
+12 FA
+(")s
+824(of)ms
+879(an)ms
+938(L2)ms
+1007(has)ms
+1086(a)ms
+1121(special)ms
+1272(meaning)ms
+1457(that)ms
+1545(distinguishes)ms
+1819(an)ms
+1879(L2)ms
+1947(from)ms
+2057(an)ms
+2117(L1.)ms
+295 484 m
+(Again)s
+429(this)ms
+514(special)ms
+665(string)ms
+792(is)ms
+838(defined)ms
+1000(by)ms
+1063(a)ms
+1097(parameter)ms
+1310(in)ms
+1361(the)ms
+1435(INI-file)ms
+11 FH
+554 394 m
+(END-STRING)s
+12 FA
+841(=)ms
+882(")ms
+11 FH
+(ENDOF)s
+12 FA
+(")s
+8 FA
+295 254 m
+(CLiP)s
+373(provisional)ms
+532(user)ms
+595(manual)ms
+702(\(version)ms
+819(2.100\))ms
+4 300 430 889 li
+25 2 1670 2288 li
+25 2 534 2288 li
+endpage
+%%Page: 2 3
+begpage
+10 FC
+1203 3182 m
+(2.1 Stub blocks and documentation blocks)s
+10 FCB
+2161 3182 m
+(3)s
+12 FA
+295 3011 m
+(Observe)s
+472(that)ms
+558(CLiP)ms
+674(does)ms
+776(not)ms
+851(distinguish)ms
+1081(between)ms
+1258(upper)ms
+1383(and)ms
+1466(lower)ms
+1590(case)ms
+1687(and)ms
+1770(forgets)ms
+1920(about)ms
+2041(spaces.)ms
+295 2951 m
+(In)s
+351(fact)ms
+440(CLiP)ms
+561(reduces)ms
+728(the)ms
+804(<arbitrary)ms
+1018(string>)ms
+1175(internally)ms
+1381(to)ms
+1435(a)ms
+1472(sequence)ms
+1670(of)ms
+1726(the)ms
+1802(characters)ms
+2019(")ms
+11 FH
+(A)s
+12 FA
+("-")s
+11 FH
+(Z)s
+12 FA
+(",)s
+295 2891 m
+(")s
+11 FH
+(0)s
+12 FA
+("-")s
+11 FH
+(9)s
+12 FA
+(")s
+460(and)ms
+545(")ms
+11 FH
+(.)s
+12 FA
+(")s
+389 2831 m
+(Note)s
+500(that)ms
+590(for)ms
+663(an)ms
+725(L3)ms
+796(the)ms
+872(character)ms
+1070(immediately)ms
+1334(following)ms
+1544(the)ms
+11 FH
+1619(CLIP-CHAR)ms
+12 FA
+1882(on)ms
+1947(the)ms
+2022(left)ms
+2104(side)ms
+295 2771 m
+(and)s
+381(the)ms
+456(character)ms
+654(preceding)ms
+866(the)ms
+11 FH
+941(CLIP-CHAR)ms
+12 FA
+1203(on)ms
+1267(the)ms
+1343(right)ms
+1451(side)ms
+1546(may)ms
+1647(be)ms
+1708(anything)ms
+1898(apart)ms
+2012(from)ms
+2123(the)ms
+11 FH
+295 2711 m
+(CLIP-CHAR)s
+12 FA
+555(itself.)ms
+12 FCB
+295 2588 m
+(2.1 Stub blocks and documentation blocks)s
+12 FA
+295 2501 m
+(From)s
+412(CLiP's)ms
+563(point)ms
+674(of)ms
+725(view)ms
+831(the)ms
+901(source-files)ms
+1143(are)ms
+1213(divided)ms
+1372(in)ms
+12 FAI
+1420(documentation)ms
+1726(blocks)ms
+12 FA
+1863(and)ms
+12 FAI
+1944(stub-blocks)ms
+12 FA
+(.)s
+295 2441 m
+(A)s
+344(stub-block)ms
+568(starts)ms
+686(with)ms
+788(an)ms
+848(L1)ms
+917(and)ms
+1002(usually)ms
+1159(ends)ms
+1264(with)ms
+1365(an)ms
+1426(L2.)ms
+1507(A)ms
+1556(special)ms
+1707(kind)ms
+1809(of)ms
+1864(stub,)ms
+1973(a)ms
+2008(so)ms
+2065(called)ms
+295 2381 m
+(quick)s
+416(stub)ms
+509(\(see)ms
+599(sect.)ms
+699(3.3)ms
+772(and)ms
+854(4\),)ms
+918(is)ms
+961(ended)ms
+1090(by)ms
+1150(an)ms
+1207(L5)ms
+1273(or)ms
+1324(an)ms
+1382(<EOF>.)ms
+1555(Everything)ms
+1787(outside)ms
+1941(a)ms
+1973(stub-block)ms
+295 2321 m
+(is)s
+343(a)ms
+381(documentation)ms
+694(block)ms
+820(and)ms
+908(ignored)ms
+1076(by)ms
+1142(CLiP.)ms
+1276(For)ms
+1360(this)ms
+1448(reason)ms
+1594(we)ms
+1668(say)ms
+1750(that)ms
+1841(CLiP)ms
+1962(is)ms
+2011(in)ms
+12 FAI
+2065(active)ms
+12 FAI
+295 2261 m
+(mode)s
+12 FA
+419(during)ms
+565(the)ms
+642(processing)ms
+872(of)ms
+930(a)ms
+968(stub-block)ms
+1195(and)ms
+1283(in)ms
+12 FAI
+1338(passive)ms
+1501(mode)ms
+12 FA
+1625(otherwise.)ms
+1848(The)ms
+1942(only)ms
+2046(way)ms
+2146(to)ms
+295 2201 m
+(change)s
+448(CLiP)ms
+566(from)ms
+675(passive)ms
+835(to)ms
+886(active)ms
+1017(mode)ms
+1140(is)ms
+1186(by)ms
+1248(an)ms
+1307(L1)ms
+1375(and)ms
+1459(the)ms
+1532(usual)ms
+1650(way)ms
+1745(from)ms
+1855(active)ms
+1986(to)ms
+2037(passive)ms
+295 2141 m
+(is)s
+340(through)ms
+508(an)ms
+568(L2.)ms
+649(An)ms
+722(L2)ms
+790(in)ms
+842(passive)ms
+1001(mode)ms
+1125(is)ms
+1171(presumably)ms
+1417(an)ms
+1476(error)ms
+1586(and)ms
+1671(will)ms
+1761(be)ms
+1821(ignored.)ms
+12 FCB
+295 1988 m
+(2.2 Segments)s
+12 FA
+295 1901 m
+(A)s
+356(stub-block)ms
+592(contains)ms
+784(one)ms
+882(and)ms
+979(only)ms
+1094(one)ms
+12 FAI
+1191(stub-segment)ms
+12 FA
+(,)s
+1493(which)ms
+1640(starts)ms
+1771(the)ms
+1858(stub-block.)ms
+2107(The)ms
+295 1841 m
+(stub-segment)s
+574(may)ms
+672(be)ms
+732(followed)ms
+922(by)ms
+985(any)ms
+1069(number)ms
+1235(of)ms
+12 FAI
+1289(slot-segments)ms
+12 FA
+1574(and/or)ms
+12 FAI
+1714(code-segments)ms
+12 FA
+(.)s
+389 1781 m
+(An)s
+458(L1)ms
+522(always)ms
+669(starts)ms
+783(a)ms
+814(new)ms
+906(stub-)ms
+1014(or)ms
+1064(slot-segment)ms
+1328(and)ms
+1409(the)ms
+1479(segment)ms
+1654(continues)ms
+1854(with)ms
+1951(any)ms
+2032(number)ms
+295 1721 m
+(of)s
+350(lines)ms
+459(of)ms
+514(type)ms
+614(L3)ms
+684(or)ms
+740(L4.)ms
+822(A)ms
+872(segment)ms
+1052(is)ms
+1100(a)ms
+1136(slot-segment)ms
+1405(if)ms
+1450(and)ms
+1536(only)ms
+1639(if)ms
+1684(it)ms
+1725(is)ms
+1773(not)ms
+1851(the)ms
+1926(first)ms
+2020(one)ms
+2107(of)ms
+2162(a)ms
+295 1661 m
+(stub-block.)s
+532(A)ms
+582(code-segment)ms
+874(consists)ms
+1046(of)ms
+1102(any)ms
+1188(number)ms
+1355(of)ms
+1410(contiguous)ms
+1644(lines)ms
+1752(of)ms
+1808(type)ms
+1908(L5.)ms
+1990(Stub-)ms
+2112(and)ms
+12 FA
+295 1601 m
+(slot-segments)s
+587(have)ms
+699(an)ms
+12 FAI
+764(identification)ms
+12 FA
+1048(or)ms
+12 FAI
+1107(name)ms
+12 FA
+1233(which)ms
+1373(is)ms
+1424(constructed)ms
+1672(somehow)ms
+1881(from)ms
+1996(the)ms
+11 FH
+2075(<ar-)ms
+11 FH
+295 1541 m
+(bitrary)s
+515(string>)ms
+12 FA
+(s)s
+739(inside)ms
+871(the)ms
+945(segment.)ms
+389 1481 m
+(L3)s
+455(and)ms
+539(L4)ms
+606(are)ms
+678(continuations)ms
+958(of)ms
+1011(stub-)ms
+1123(and)ms
+1206(slot-segments,)ms
+1505(but)ms
+1580(with)ms
+1680(a)ms
+1714(slightly)ms
+1875(different)ms
+2058(status.)ms
+295 1421 m
+(An)s
+373(L3)ms
+446(that)ms
+538(cannot)ms
+688(be)ms
+753(pasted)ms
+898(to)ms
+954(a)ms
+994(segment)ms
+1177(is)ms
+1228(flagged)ms
+1395(as)ms
+1454(an)ms
+1519(error.)ms
+1645(But)ms
+1735(an)ms
+1799(L4)ms
+1872(under)ms
+2003(the)ms
+2082(same)ms
+295 1361 m
+(conditions)s
+515(is)ms
+561(interpreted)ms
+790(as)ms
+844(belonging)ms
+1057(to)ms
+1108(the)ms
+1182(current)ms
+1336(code-segment.)ms
+12 FCB
+295 1208 m
+(2.3 Options)s
+12 FA
+295 1121 m
+(The)s
+390(module)ms
+557(extraction)ms
+774(process)ms
+941(can)ms
+1028(be)ms
+1092(tuned)ms
+1221(by)ms
+1288(means)ms
+1433(of)ms
+12 FAI
+1492(options)ms
+12 FA
+(.)s
+1669(Stub-segments)ms
+1981(as)ms
+2040(well)ms
+2143(as)ms
+295 1061 m
+(slot-segments)s
+593(may)ms
+702(have)ms
+820(options.)ms
+1003(An)ms
+1087(option)ms
+1238(starts)ms
+1367(with)ms
+1479(a)ms
+1525(keyword)ms
+1723(signalled)ms
+1927(by)ms
+2000(a)ms
+2046(special)ms
+11 FH
+295 1001 m
+(OPTION-MARKER)s
+12 FA
+(.)s
+681(The)ms
+775(option)ms
+919(keyword)ms
+1110(may)ms
+1212(be)ms
+1276(abbreviated)ms
+1525(to)ms
+1581(a)ms
+1619(unique)ms
+1772(headerstring)ms
+2035(for)ms
+2110(that)ms
+295 941 m
+(option.)s
+446(We)ms
+527(will)ms
+616(assume)ms
+775(")ms
+11 FH
+(#)s
+12 FA
+(")s
+854(for)ms
+11 FH
+924(OPTION-MARKER)ms
+12 FA
+(,)s
+1305(but)ms
+1380(of)ms
+1433(course)ms
+1575(this)ms
+1659(again)ms
+1778(is)ms
+1823(a)ms
+1857(parameter)ms
+2068(set)ms
+2135(by)ms
+295 881 m
+(the)s
+370(INI-file.)ms
+549(The)ms
+641(argument\(s\))ms
+897(following)ms
+1105(an)ms
+1166(option)ms
+1308(continue)ms
+1495(till)ms
+1564(the)ms
+1640(next)ms
+1740(option-keyword)ms
+2073(or)ms
+2129(till)ms
+295 821 m
+(the)s
+368(end)ms
+453(of)ms
+507(the)ms
+581(segment.)ms
+772(Therefore)ms
+982(the)ms
+1055(name)ms
+1176(of)ms
+1230(a)ms
+1265(segment)ms
+1444(must)ms
+1554(precede)ms
+1722(the)ms
+1796(options.)ms
+389 761 m
+(In)s
+440(general)ms
+596(options)ms
+753(operate)ms
+910(on)ms
+970(the)ms
+12 FAI
+1040(inside)ms
+12 FA
+1169(of)ms
+1221(the)ms
+1291(stub)ms
+1384(only,)ms
+1495(since)ms
+1608(that)ms
+1692(is)ms
+1735(the)ms
+1806(part)ms
+1893(of)ms
+1944(the)ms
+2015(program)ms
+295 701 m
+(that)s
+381(the)ms
+453(programmer)ms
+711(of)ms
+764(this)ms
+847(particular)ms
+1050(refinement)ms
+1278(has)ms
+1355(in)ms
+1405(his)ms
+1475(or)ms
+1528(her)ms
+1603(mind.)ms
+1729(In)ms
+1782(addition)ms
+1957(options)ms
+2115(can)ms
+295 641 m
+(be)s
+351(inherited.)ms
+551(The)ms
+639(meaning)ms
+821(of)ms
+872(the)ms
+943(various)ms
+1100(options)ms
+1257(is)ms
+1300(explained)ms
+1504(in)ms
+1553(section 4.)ms
+1754(Some)ms
+1878(frequently)ms
+2093(used)ms
+295 581 m
+(options)s
+454(show)ms
+572(up)ms
+635(in)ms
+686(the)ms
+760(examples)ms
+961(of)ms
+1015(section 3.)ms
+8 FA
+295 254 m
+(CLiP)s
+373(provisional)ms
+532(user)ms
+595(manual)ms
+702(\(version)ms
+819(2.100\))ms
+endpage
+%%Page: 3 4
+begpage
+10 FCB
+295 3182 m
+(4)s
+10 FC
+460 3182 m
+(Examples)s
+14 FCB
+295 3001 m
+(3 Examples)s
+12 FA
+295 2906 m
+(In)s
+351(the)ms
+426(examples)ms
+630(we)ms
+703(will)ms
+795(illustrate)ms
+984(the)ms
+1060(most)ms
+1172(important)ms
+1381(features)ms
+1554(of)ms
+1610(CLiP)ms
+1730(by)ms
+1794(making)ms
+1959(remarks)ms
+2134(on)ms
+295 2846 m
+(excerpts)s
+474(drawn)ms
+611(from)ms
+721(the)ms
+794(documentation)ms
+1104(of)ms
+1158(CLiPs)ms
+1296(predecessor,)ms
+1557(VAMP.)ms
+12 FCB
+295 2723 m
+(3.1 Example 1: Defining a module)s
+10 FAIB
+470 2641 m
+(The module VAMP:)s
+10 FA
+570 2591 m
+(Starting from nowhere, the empty program will do.)s
+10 FH
+395 2491 m
+(1)s
+470 2491 m
+(\(**** #File "VAMP.PAS". #Indent on. ****\))s
+395 2441 m
+(2)s
+395 2391 m
+(3)s
+470 2391 m
+(\(***************************************************************\))s
+395 2341 m
+(4)s
+470 2341 m
+(\(* Routine: VAMP)s
+1070(-)ms
+1170(Main module of the VAMP system.)ms
+2020( *\))ms
+395 2291 m
+(5)s
+470 2291 m
+(\(* Purpose:)s
+870(Main module and unique entry point to the)ms
+2020( *\))ms
+395 2241 m
+(6)s
+470 2241 m
+(\(*)s
+870(VAMP-system.)ms
+2020( *\))ms
+395 2191 m
+(7)s
+470 2191 m
+(\(* Interface:)s
+870(TTY -)ms
+1070(All communication with the user)ms
+2020( *\))ms
+395 2141 m
+(8)s
+470 2141 m
+(\(*)s
+870(proceeds via the terminal.)ms
+2020( *\))ms
+395 2091 m
+(9)s
+470 2091 m
+(\(* Author/Date:)s
+870(VAMP project management, Sept. 12, 1983.)ms
+2020( *\))ms
+370 2041 m
+(10)s
+470 2041 m
+(\(***************************************************************\))s
+370 1991 m
+(11)s
+370 1941 m
+(12)s
+470 1941 m
+(\(********************** VAMP \(body\) **************************\))s
+370 1891 m
+(13)s
+370 1841 m
+(14)s
+470 1841 m
+(\(*********************** End of VAMP *************************\))s
+370 1791 m
+(15)s
+370 1741 m
+(16)s
+370 1691 m
+(18)s
+470 1691 m
+(\(********* VAMP \(body\) #def ***********\))s
+370 1641 m
+(19)s
+470 1641 m
+(PROGRAM)s
+770(VAMP \(INPUT, OUTPUT\);)ms
+370 1591 m
+(20)s
+570 1591 m
+(BEGIN)s
+370 1541 m
+(21)s
+570 1541 m
+(WRITELN \('!!! VAMP was here !!!'\);)s
+370 1491 m
+(22)s
+570 1491 m
+(END \(*VAMP*\).)s
+370 1441 m
+(23)s
+470 1441 m
+(\(********** End of VAMP \(body\) *********\))s
+12 FAB
+295 1344 m
+(Remarks:)s
+12 FA
+389 1284 m
+(There)s
+523(are)ms
+602(two)ms
+695(stubs)ms
+816(in)ms
+873(this)ms
+964(section.)ms
+1136(Line)ms
+1246(1-14)ms
+1355(and)ms
+1446(line)ms
+1539(18-23.)ms
+1686(Both)ms
+1801(stub-blocks)ms
+2050(have)ms
+2162(a)ms
+295 1224 m
+(stub-segment)s
+574(of)ms
+628(one)ms
+713(line)ms
+800(only)ms
+901(\(lines)ms
+1025(1)ms
+1063(and)ms
+1147(18)ms
+1210(respectively\).)ms
+389 1164 m
+(The)s
+480(first)ms
+575(stub-segment)ms
+856(has)ms
+937(no)ms
+1001(identification.)ms
+1294(It)ms
+1339(specifies)ms
+1528(the)ms
+1603(start)ms
+1703(of)ms
+1759(a)ms
+1795(new)ms
+1893(output)ms
+2034(module)ms
+295 1104 m
+(by)s
+357(the)ms
+431(FILE)ms
+549(option)ms
+689(and)ms
+774(thus)ms
+870(is)ms
+915(not)ms
+992(meant)ms
+1126(to)ms
+1178(be)ms
+1238(referenced)ms
+1461(\(see)ms
+1554(also)ms
+1647(example)ms
+1829(5\).)ms
+389 1044 m
+(Line)s
+494(2)ms
+533(\(an)ms
+611(L5\))ms
+697(separates)ms
+894(line)ms
+982(3)ms
+1021(\(an)ms
+1099(L4\))ms
+1185(from)ms
+1296(the)ms
+1371(stub-segment)ms
+1652(and)ms
+1738(makes)ms
+1879(it)ms
+1921(belong)ms
+2071(to)ms
+2123(the)ms
+295 984 m
+(code-segment)s
+585(which)ms
+719(expands)ms
+896(over)ms
+997(lines)ms
+1104(2-11.)ms
+389 924 m
+(There)s
+525(resides)ms
+684(only)ms
+793(one)ms
+885(slot)ms
+978(inside)ms
+1117(the)ms
+1198(first)ms
+1299(stub)ms
+1402(\(line)ms
+1514(12\))ms
+1601(and)ms
+1693(this)ms
+1785(slot)ms
+1878(is)ms
+1931(identified)ms
+2143(as)ms
+295 864 m
+(")s
+11 FH
+(VAMPBODY)s
+12 FA
+(".)s
+580(The)ms
+671(second)ms
+822(stub)ms
+918(has)ms
+997(no)ms
+1059(slots)ms
+1164(at)ms
+1212(all.)ms
+389 804 m
+(Line)s
+489(13)ms
+548(is)ms
+590(a)ms
+621(trivial)ms
+749(code-segment)ms
+1036(and)ms
+1117(line)ms
+1201(14)ms
+1260(marks)ms
+1391(the)ms
+1461(end)ms
+1542(of)ms
+1592(the)ms
+1662(first)ms
+1752(stub-block.)ms
+1984(The)ms
+2071(string)ms
+295 744 m
+(following)s
+501(the)ms
+575("End)ms
+689(of")ms
+763(is)ms
+809(optional)ms
+985(and)ms
+1070(does)ms
+1174(not)ms
+1251(have)ms
+1357(to)ms
+1409(match)ms
+1544(the)ms
+1617(stub)ms
+1713(name)ms
+1834(in)ms
+1885(any)ms
+1970(way.)ms
+8 FA
+295 254 m
+(CLiP)s
+373(provisional)ms
+532(user)ms
+595(manual)ms
+702(\(version)ms
+819(2.100\))ms
+4 1250 430 2044 li
+endpage
+%%Page: 4 5
+begpage
+10 FC
+1453 3182 m
+(3.2 Example 2: Multiple slots)s
+10 FCB
+2161 3182 m
+(5)s
+12 FCB
+295 3008 m
+(3.2 Example 2: Multiple slots)s
+10 FAIB
+470 2926 m
+(Environment module)s
+10 FA
+(:)s
+10 FA
+570 2876 m
+(In the past there have been made several changes in the VAMP program. These changes have)s
+10 FA
+470 2826 m
+(been made in the extracted modules rather then in the VAMP source. To make source files consistent)s
+10 FA
+470 2776 m
+(with the modules, the source files have been updated in march 1990 by Jeroen Reef.)s
+10 FA
+570 2726 m
+(Furthermore, the updated source files contain two additional modules, VAMP.MSG and)s
+10 FA
+470 2676 m
+(DECLAR_MOD. The module VAMP.MSG contains the error messages of VAMP and the module)s
+10 FA
+470 2626 m
+(DECLAR_MOD contains the types and constants used by several modules of VAMP. This module)s
+10 FA
+470 2576 m
+(uses the ENVIRONMENT, which directs the compiler to generate an environment file)s
+10 FA
+470 2526 m
+(DECLAR.PEN. Other modules can reference the identifiers declared in DECLAR_MOD by inheriting)s
+10 FA
+470 2476 m
+(the environment with the INHERIT attribute.)s
+10 FH
+395 2359 m
+(1)s
+470 2359 m
+(\(****** #File "DECLAR_MOD.PAS". #Indent ON. ******\))s
+395 2309 m
+(2)s
+395 2259 m
+(3)s
+470 2259 m
+(\(***************************************************************\))s
+395 2209 m
+(4)s
+470 2209 m
+(\(* Module to contain all parameters and global declarations)s
+2020( *\))ms
+395 2159 m
+(5)s
+470 2159 m
+(\(* of the VAMP system.)s
+2020( *\))ms
+395 2109 m
+(6)s
+470 2109 m
+(\(***************************************************************\))s
+395 2059 m
+(7)s
+470 2059 m
+([ENVIRONMENT \('DECLAR.PEN'\)])s
+1270(MODULE DECLARS;)ms
+395 2009 m
+(8)s
+395 1959 m
+(9)s
+470 1959 m
+(\(********** Parameters of the VAMP-system \(#mul\) *************\))s
+370 1909 m
+(10)s
+370 1859 m
+(11)s
+470 1859 m
+(TYPE)s
+370 1809 m
+(12)s
+570 1809 m
+(ABSTRACT = \(DEFINED, UNDEFINED\);)s
+370 1759 m
+(13)s
+570 1759 m
+(\(********* Simple types of the VAMP-system \(#mul\) ********\))s
+370 1709 m
+(14)s
+570 1709 m
+(\(******** Structured types of the VAMP-system \(#mul\) ******\))s
+370 1659 m
+(15)s
+470 1659 m
+(END.)s
+370 1609 m
+(16)s
+470 1609 m
+(\(***************** End of DECLARE_MOD.PAS ********************\))s
+12 FAB
+295 1513 m
+(Remarks:)s
+12 FA
+389 1453 m
+(The)s
+483(stub-block)ms
+711(extends)ms
+880(over)ms
+986(16)ms
+1052(lines.)ms
+1176(Line)ms
+1284(1)ms
+1326(is)ms
+1376(the)ms
+1454(stub-segment)ms
+1737(and)ms
+1826(line)ms
+1918(16)ms
+1984(closes)ms
+2123(the)ms
+295 1393 m
+(stub-block.)s
+532(Lines)ms
+657(2-8)ms
+737(constitute)ms
+945(the)ms
+1020(first)ms
+1115(code-segment)ms
+1406(of)ms
+1462(the)ms
+1536(stub)ms
+(,)s
+1646(lines)ms
+1754(10-12)ms
+1885(the)ms
+1960(middle)ms
+2112(one)ms
+295 1333 m
+(and)s
+379(line)ms
+467(15)ms
+529(the)ms
+603(last)ms
+685(one.)ms
+389 1273 m
+(There)s
+515(are)ms
+587(three)ms
+697(slots)ms
+799(\(or)ms
+868(slot-segments\),)ms
+1182(lines)ms
+1287(9,)ms
+1335(13)ms
+1395(and)ms
+1478(14.)ms
+1550(All)ms
+1625(slots)ms
+1727(consist)ms
+1876(of)ms
+1928(one)ms
+2010(line)ms
+2096(only)ms
+295 1213 m
+(and)s
+380(carry)ms
+496(the)ms
+570(multiple)ms
+750(option.)ms
+903(For)ms
+986(instance)ms
+1163(the)ms
+1237(first)ms
+1331(slot)ms
+1416(can)ms
+1499(swallow)ms
+1679(any)ms
+1764(number)ms
+1930(of)ms
+1985(parameter)ms
+295 1153 m
+(definition)s
+501(that)ms
+589(might)ms
+718(turn)ms
+811(up)ms
+874(in)ms
+925(the)ms
+999(future.)ms
+389 1093 m
+(The)s
+479(names)ms
+619(\(identifications\))ms
+951(of)ms
+1005(the)ms
+1079(slots)ms
+1183(are)ms
+1256(respectively)ms
+460 1008 m
+(")s
+11 FH
+(PARAMETERSOFTHEVAMPSYSTEM)s
+12 FA
+(")s
+460 948 m
+(")s
+11 FH
+(SIMPLETYPESOFTHEVAMPSYSTEM)s
+12 FA
+(")s
+460 888 m
+(")s
+11 FH
+(STRUCTUREDTYPESOFTHEVAMPSYSTEM)s
+12 FA
+(")s
+8 FA
+295 254 m
+(CLiP)s
+373(provisional)ms
+532(user)ms
+595(manual)ms
+702(\(version)ms
+819(2.100\))ms
+4 800 430 1988 li
+4 500 430 2704 li
+endpage
+%%Page: 5 6
+begpage
+10 FCB
+295 3182 m
+(6)s
+10 FC
+460 3182 m
+(Examples)s
+12 FCB
+295 3008 m
+(3.3 Example 3: Quick stubs and abstract data types)s
+10 FAIB
+495 2926 m
+(First level data structures:)s
+10 FA
+595 2876 m
+(This level introduces the data-structure TTY_INFO, containing the initial communication)s
+10 FA
+495 2826 m
+(between the terminal and the program. The definition requires in addition four system parameters)s
+10 FA
+495 2776 m
+(and some constants and types which are related to file specifications. The structure of CODE_INFO)s
+10 FA
+495 2726 m
+(is left open for the time being.)s
+10 FH
+420 2626 m
+(1)s
+495 2626 m
+(\(********** Parameters of the VAMP-system \(#quick\) ***********\))s
+420 2576 m
+(2)s
+495 2576 m
+(\(*)s
+795(-------- Parameters of TTY_INFO ---------)ms
+2045( *\))ms
+420 2526 m
+(3)s
+495 2526 m
+(MAX_FILE_SPEC_L = 255;)s
+1195(\(* Maximum length file-specific.)ms
+2045( *\))ms
+420 2476 m
+(4)s
+495 2476 m
+(MAX_FILE_NAME_L = 39;)s
+1195(\(* Maximum length file-name.)ms
+2045( *\))ms
+420 2426 m
+(5)s
+495 2426 m
+(MAX_FILE_EXT_L = 39;)s
+1195(\(* Maximum length file-extension.)ms
+2045( *\))ms
+420 2376 m
+(6)s
+495 2376 m
+(MAX_IN_FILES =)s
+995( 8;)ms
+1195(\(* Maximum number of in-files for)ms
+2045( *\))ms
+420 2326 m
+(7)s
+1195 2326 m
+(\(* a single run.)s
+2045( *\))ms
+420 2276 m
+(8)s
+495 2276 m
+(UPB_IN_FILES =)s
+995(9;)ms
+1195(\(* = MAX_IN_FILES + 1.)ms
+2045( *\))ms
+420 2226 m
+(9)s
+495 2226 m
+(MAX_MODULES =)s
+995(10;)ms
+1195(\(* Maximum number of modules)ms
+2045( *\))ms
+395 2176 m
+(10)s
+1195 2176 m
+(\(* specified for a run.)s
+2045( *\))ms
+395 2126 m
+(11)s
+495 2126 m
+(UPB_MODULES =)s
+995(11;)ms
+1195(\(* = MAX_MODULES + 1.)ms
+2045( *\))ms
+395 2076 m
+(12)s
+495 2076 m
+(EMPTY = '';)s
+395 2026 m
+(13)s
+395 1976 m
+(14)s
+495 1976 m
+(\(********* Simple types of the VAMP-system \(#quick\) **********\))s
+395 1926 m
+(15)s
+495 1926 m
+(\(*)s
+795(-------- Simple types of TTY_INFO ---------)ms
+2045( *\))ms
+395 1876 m
+(16)s
+495 1876 m
+(FILE_SPEC = VARYING [MAX_FILE_SPEC_L] OF CHAR;)s
+395 1826 m
+(17)s
+495 1826 m
+(FILE_NAME = VARYING [MAX_FILE_NAME_L] OF CHAR;)s
+395 1776 m
+(18)s
+495 1776 m
+(FILE_EXT = VARYING [MAX_FILE_EXT_L] OF CHAR;)s
+395 1726 m
+(19)s
+395 1676 m
+(20)s
+495 1676 m
+(\(******** Structured types of the VAMP-system ****************\))s
+395 1626 m
+(21)s
+495 1626 m
+(\(*)s
+695(-------- Structured types of TTY_INFO ---------)ms
+2045( *\))ms
+395 1576 m
+(22)s
+495 1576 m
+(TTY_INFO =)s
+795(RECORD)ms
+395 1526 m
+(23)s
+895 1526 m
+(IN_FILES:)s
+1195(ARRAY [1..UPB_IN_FILES] OF FILE_SPEC;)ms
+395 1476 m
+(24)s
+895 1476 m
+(MODULES:)s
+1195(ARRAY [1..UPB_MODULES] OF FILE_NAME;)ms
+395 1426 m
+(25)s
+895 1426 m
+(DFLT_EXT:)s
+1195(FILE_EXT;)ms
+395 1376 m
+(26)s
+895 1376 m
+(INV_MODE,)s
+395 1326 m
+(27)s
+895 1326 m
+(GO:)s
+1195(BOOLEAN;)ms
+395 1276 m
+(29)s
+795 1276 m
+(END \(*RECORD*\);)s
+395 1226 m
+(30)s
+495 1226 m
+(\(**************** Declaration of CODE_INFO *******************\))s
+395 1176 m
+(31)s
+495 1176 m
+(\(******** End of Structured types of the VAMP-system *********\))s
+395 1126 m
+(32)s
+395 1076 m
+(33)s
+395 1026 m
+(34)s
+495 1026 m
+(\(************* Declaration of CODE_INFO \(#def\) ***************\))s
+395 976 m
+(35)s
+495 976 m
+(CODE_INFO = ABSTRACT;)s
+395 926 m
+(36)s
+495 926 m
+(\(******************** End of declaration *********************\))s
+12 FAB
+295 846 m
+(Remarks:)s
+12 FA
+389 786 m
+(This)s
+487(section)ms
+639(contains)ms
+816(five)ms
+904(stubs)ms
+1017(altogether,)ms
+1239(i.e.)ms
+1310(lines)ms
+1415(1-12,)ms
+1529(14-18,)ms
+1668(20-31)ms
+1795(and)ms
+1877(34-36.)ms
+2016(The)ms
+2104(first)ms
+295 726 m
+(two)s
+384(blocks)ms
+529(one)ms
+616(have)ms
+726(no)ms
+790(internal)ms
+958(slots.)ms
+1077(The)ms
+1169(quick)ms
+1295(option)ms
+1437(promotes)ms
+1638(them)ms
+1753(to)ms
+1807(quick)ms
+1932(stubs,)ms
+2062(which)ms
+295 666 m
+(means)s
+435(that)ms
+522(they)ms
+621(are)ms
+694(completed)ms
+915(by)ms
+978(the)ms
+1051(first)ms
+1144(line)ms
+1232(that)ms
+1319(is)ms
+1365(not)ms
+1442(an)ms
+1501(L6.)ms
+389 606 m
+(The)s
+480(third)ms
+587(stub)ms
+684(\(20-31\))ms
+847(illustrates)ms
+1055(how)ms
+1155(an)ms
+1215(abstract)ms
+1384(data)ms
+1480(type)ms
+1580(can)ms
+1663(be)ms
+1723(implemented.)ms
+2010(The)ms
+2101(stub)ms
+295 546 m
+(is)s
+341(an)ms
+402(ordinary)ms
+584(one)ms
+670(with)ms
+772(one)ms
+858(slot)ms
+943(- identified)ms
+1177(as)ms
+1232(")ms
+11 FH
+(DECLARATIONOFCODEINFO)s
+12 FA
+(" -)s
+1893(at)ms
+1943(line)ms
+2031(30.)ms
+2107(The)ms
+295 486 m
+(slot)s
+380(is)ms
+427(by)ms
+490(default)ms
+642(satisfied)ms
+822(with)ms
+924(the)ms
+998(stub)ms
+1095(at)ms
+1144(lines)ms
+1252(34-36.)ms
+1394(But)ms
+1480(this)ms
+1565(declaration)ms
+1800(will)ms
+1891(be)ms
+1952(replaced)ms
+2134(by)ms
+295 426 m
+(a)s
+329(new)ms
+425(one)ms
+510(at)ms
+558(some)ms
+676(time)ms
+778(in)ms
+829(the)ms
+903(future.)ms
+8 FA
+295 254 m
+(CLiP)s
+373(provisional)ms
+532(user)ms
+595(manual)ms
+702(\(version)ms
+819(2.100\))ms
+4 2050 455 1929 li
+endpage
+%%Page: 6 7
+begpage
+10 FC
+1182 3182 m
+(3.4 Example 4: An ordinary refinement step)s
+10 FCB
+2161 3182 m
+(7)s
+12 FCB
+295 3008 m
+(3.4 Example 4: An ordinary refinement step)s
+10 FAIB
+470 2926 m
+(Body of VAMP:)s
+10 FA
+570 2876 m
+(The input-files will be processed sequentially in the same order as given by the user. The inter-)s
+10 FA
+470 2826 m
+(mediate file "VAMP.TMP" is guarded by a sentinel to simplify backspacing later on and it needs an)s
+10 FA
+470 2776 m
+(additional global declaration.)s
+10 FH
+395 2676 m
+(1)s
+570 2676 m
+(\(*********** Simple types of the VAMP-system ************\))s
+395 2626 m
+(2)s
+570 2626 m
+(FTYPE = FILE OF CHAR;)s
+395 2576 m
+(3)s
+570 2576 m
+(\(****************** End of declaration ******************\))s
+470 2476 m
+(Now the body of VAMP expands to)s
+395 2376 m
+(4)s
+470 2376 m
+(\(********************** VAMP \(body\) **************************\))s
+395 2326 m
+(5)s
+470 2326 m
+([INHERIT \('SYS$LIBRARY:STARLET.PEN', 'DECLAR.PEN'\)])s
+395 2276 m
+(6)s
+470 2276 m
+(PROGRAM)s
+770(VAMP \(INPUT, OUTPUT\);)ms
+395 2226 m
+(7)s
+395 2176 m
+(8)s
+470 2176 m
+(\(***************** Constants of VAMP \(#mult\) *****************\))s
+395 2126 m
+(9)s
+470 2126 m
+(\(***************** Types of VAMP \(#mult\) *********************\))s
+370 2076 m
+(10)s
+470 2076 m
+(VAR)s
+370 2026 m
+(11)s
+470 2026 m
+( FILE_CNT:)s
+970(1..UPB_IN_FILES;)ms
+370 1976 m
+(12)s
+470 1976 m
+( CURR_IN_FILE:)s
+970(TEXT;)ms
+1170(\(* Currently read file.)ms
+2020( *\))ms
+370 1926 m
+(13)s
+470 1926 m
+( CODE_LINES:)s
+970(FTYPE;)ms
+1170(\(* From input extracted code.)ms
+2020( *\))ms
+370 1876 m
+(14)s
+470 1876 m
+( TTY_DATA:)s
+970(TTY_INFO;)ms
+370 1826 m
+(15)s
+470 1826 m
+( CODE_STRUCT:)s
+970(CODE_INFO;)ms
+370 1776 m
+(16)s
+570 1776 m
+(\(************ Variables of VAMP \(#mult\) ******************\))s
+370 1726 m
+(17)s
+370 1676 m
+(18)s
+470 1676 m
+([EXTERNAL] PROCEDURE)s
+1070(ASKTTY \(VAR TTY_DATA: TTY_INFO\); EXTERN;)ms
+370 1626 m
+(19)s
+470 1626 m
+(\(*************** Functions of VAMP \(#mult\) *******************\))s
+370 1576 m
+(20)s
+370 1526 m
+(21)s
+470 1526 m
+(BEGIN)s
+370 1476 m
+(22)s
+570 1476 m
+(\(* Take the data, that are needed for this VAMP run from)s
+2020( *\))ms
+370 1426 m
+(23)s
+570 1426 m
+(\(* the terminal.)s
+2020( *\))ms
+370 1376 m
+(24)s
+570 1376 m
+(ASKTTY \(TTY_DATA\);)s
+370 1326 m
+(25)s
+570 1326 m
+(WITH TTY_DATA DO)s
+370 1276 m
+(26)s
+570 1276 m
+(IF GO THEN)s
+370 1226 m
+(27)s
+570 1226 m
+(BEGIN)s
+370 1176 m
+(28)s
+670 1176 m
+(\(********************* VAMP \(C\) **********************\))s
+370 1126 m
+(29)s
+670 1126 m
+(\(** Initialize CODE_STRUCT.)s
+2020(**\))ms
+370 1076 m
+(30)s
+670 1076 m
+(\(*******************************************************\))s
+370 1026 m
+(31)s
+370 976 m
+(32)s
+670 976 m
+(OPEN \(CODE_LINES, FILE_NAME :='VAMP.TMP',)s
+370 926 m
+(33)s
+770 926 m
+( ORGANIZATION := RELATIVE, ACCESS_METHOD := DIRECT,)s
+370 876 m
+(34)s
+770 876 m
+( DISPOSITION := DELETE\);)s
+370 826 m
+(35)s
+670 826 m
+(REWRITE \(CODE_LINES\);)s
+370 776 m
+(36)s
+670 776 m
+(FILE_CNT := 1;)s
+370 726 m
+(37)s
+670 726 m
+(WHILE \(IN_FILES [FILE_CNT] <> EMPTY\) DO)s
+370 676 m
+(38)s
+670 676 m
+(BEGIN)s
+370 626 m
+(39)s
+770 626 m
+(WRITELN \('Proceeding on file ',IN_FILES [FILE_CNT]\);)s
+370 576 m
+(40)s
+570 576 m
+( )s
+770(OPEN \(CURR_IN_FILE, FILE_NAME := IN_FILES [FILE_CNT],)ms
+370 526 m
+(41)s
+870 526 m
+( HISTORY := READONLY\);)s
+370 476 m
+(42)s
+770 476 m
+(RESET \(CURR_IN_FILE\);)s
+370 426 m
+(43)s
+770 426 m
+(PUT \(CODE_LINES\);)s
+1270(\(* Start file with a sentinel. *\))ms
+370 376 m
+(44)s
+8 FA
+295 254 m
+(CLiP)s
+373(provisional)ms
+532(user)ms
+595(manual)ms
+702(\(version)ms
+819(2.100\))ms
+4 2600 430 1654 li
+endpage
+%%Page: 7 8
+begpage
+10 FCB
+295 3182 m
+(8)s
+10 FC
+460 3182 m
+(Examples)s
+10 FH
+370 3016 m
+(45)s
+770 3016 m
+(\(****************** VAMP \(A\) *********************\))s
+370 2966 m
+(46)s
+770 2966 m
+(\(** Build CODE_STRUCT and fill CODE_LINES by a)s
+2020(**\))ms
+370 2916 m
+(47)s
+770 2916 m
+(\(** scan of CURR_IN_FILE, using the information)s
+2020(**\))ms
+370 2866 m
+(48)s
+770 2866 m
+(\(** of MODULES, DFLT_EXT and INV_MODE.)s
+2020(**\))ms
+370 2816 m
+(49)s
+770 2816 m
+(\(***************************************************\))s
+370 2766 m
+(50)s
+370 2716 m
+(51)s
+770 2716 m
+(CLOSE \(CURR_IN_FILE\);)s
+370 2666 m
+(52)s
+770 2666 m
+(FILE_CNT := FILE_CNT + 1;)s
+370 2616 m
+(53)s
+670 2616 m
+(END \(*WHILE*\);)s
+370 2566 m
+(54)s
+370 2516 m
+(55)s
+670 2516 m
+(\(******************** VAMP \(B\) ***********************\))s
+370 2466 m
+(56)s
+670 2466 m
+(\(** Generate the files as specified by CODE_STRUCT)s
+2020(**\))ms
+370 2416 m
+(57)s
+670 2416 m
+(\(** from the data contained by CODE_LINES.)s
+2020(**\))ms
+370 2366 m
+(58)s
+670 2366 m
+(\(*******************************************************\))s
+370 2316 m
+(59)s
+370 2266 m
+(60)s
+670 2266 m
+(\(* Close and Delete scratch-file CODE_LINES.)s
+2020( *\))ms
+370 2216 m
+(61)s
+670 2216 m
+(CLOSE \(CODE_LINES, DELETE\);)s
+370 2166 m
+(62)s
+570 2166 m
+(END)s
+370 2116 m
+(63)s
+570 2116 m
+(ELSE)s
+370 2066 m
+(64)s
+670 2066 m
+(WRITELN \('!!! You specified an empty run - try again !!!'\);)s
+370 2016 m
+(65)s
+470 2016 m
+(END \(*VAMP*\).)s
+370 1966 m
+(66)s
+470 1966 m
+(\(******************* End of VAMP \(body\) **********************\))s
+370 1916 m
+(67)s
+370 1866 m
+(68)s
+370 1816 m
+(69)s
+470 1816 m
+(\(************ Constants of VAMP \(#leader, #quick\) ************\))s
+370 1766 m
+(70)s
+470 1766 m
+(CONST)s
+370 1716 m
+(71)s
+470 1716 m
+(\(************ Types of VAMP \(#leader, #quick\) ****************\))s
+370 1666 m
+(72)s
+470 1666 m
+(TYPE)s
+12 FAB
+295 1586 m
+(Remarks:)s
+12 FA
+389 1526 m
+(This)s
+488(refinement)ms
+714(contains)ms
+891(four)ms
+985(stubs)ms
+1098(\(lines)ms
+1219(1-3,)ms
+1308(4-66,)ms
+1422(69-70)ms
+1549(and)ms
+1632(71-72\).)ms
+1787(The)ms
+1875(second)ms
+2024(stub)ms
+2118(has)ms
+295 1466 m
+(seven)s
+417(slots)ms
+518(\(lines)ms
+638(8,)ms
+685(9,)ms
+732(16,)ms
+803(19,)ms
+875(28-30,)ms
+1013(45-49)ms
+1139(and)ms
+1220(55-58\).)ms
+1375(Lines)ms
+1495(22,)ms
+1567(23)ms
+1626(and)ms
+1707(60)ms
+1766(are)ms
+1837(simple)ms
+1979(code-lines)ms
+295 1406 m
+(from)s
+404(CLiPs)ms
+542(point)ms
+657(of)ms
+711(view.)ms
+389 1346 m
+(The)s
+481(leader)ms
+617(option)ms
+760(of)ms
+816(the)ms
+891(last)ms
+975(two)ms
+1065(stubs)ms
+1182(defines)ms
+1341(the)ms
+1416(code)ms
+1525(that)ms
+1615(will)ms
+1707(be)ms
+1768(inserted)ms
+1941(in)ms
+1995(front)ms
+2106(of)ms
+2162(a)ms
+295 1286 m
+(stub)s
+390(that)ms
+478(matches)ms
+654(the)ms
+728(slot.)ms
+8 FA
+295 254 m
+(CLiP)s
+373(provisional)ms
+532(user)ms
+595(manual)ms
+702(\(version)ms
+819(2.100\))ms
+4 1400 430 2344 li
+endpage
+%%Page: 8 9
+begpage
+10 FC
+1312 3182 m
+(3.5 Example 5: A subroutine module)s
+10 FCB
+2161 3182 m
+(9)s
+12 FCB
+295 3008 m
+(3.5 Example 5: A subroutine module)s
+10 FH
+395 2926 m
+(1)s
+470 2926 m
+(\(****** #File "ASKTTY.PAS" ******\))s
+395 2876 m
+(2)s
+470 2876 m
+([INHERIT \('DECLAR.PEN'\)] MODULE ASKTTY \(INPUT, OUTPUT\);)s
+395 2826 m
+(3)s
+395 2776 m
+(4)s
+470 2776 m
+(\(*********** External procedures of ASKTTY \(#mult\) ************\))s
+395 2726 m
+(5)s
+395 2676 m
+(6)s
+470 2676 m
+(\(***************************************************************\))s
+395 2626 m
+(7)s
+470 2626 m
+(\(* Routine:)s
+870(ASKTTY)ms
+1070(-)ms
+1170(ASK information from TTY.)ms
+2020( *\))ms
+395 2576 m
+(8)s
+470 2576 m
+(\(* Purpose:)s
+870(To obtain from the TTY the information which)ms
+2020( *\))ms
+395 2526 m
+(9)s
+470 2526 m
+(\(*)s
+870(is needed to perform a VAMP run.)ms
+2020( *\))ms
+370 2476 m
+(10)s
+470 2476 m
+(\(* Interface:)s
+870(TTY_DATA -)ms
+1170(Data from TTY to VAMP.)ms
+2020( *\))ms
+370 2426 m
+(11)s
+470 2426 m
+(\(*)s
+870(TTY -)ms
+1170(Source of all knowledge.)ms
+2020( *\))ms
+370 2376 m
+(12)s
+470 2376 m
+(\(* Author/Date:)s
+870(VAMP project management, September 29, 1983.)ms
+2020( *\))ms
+370 2326 m
+(13)s
+470 2326 m
+(\(***************************************************************\))s
+370 2276 m
+(14)s
+470 2276 m
+([GLOBAL] PROCEDURE)s
+970(ASKTTY \(VAR TTY_DATA: TTY_INFO\);)ms
+370 2226 m
+(15)s
+370 2176 m
+(16)s
+470 2176 m
+(\(************* Constants of ASKTTY \(#multiple\) ***************\))s
+370 2126 m
+(17)s
+470 2126 m
+(\(************* Types of ASKTTY \(#multiple\) *******************\))s
+370 2076 m
+(18)s
+470 2076 m
+(\(************* Variables of ASKTTY \(#multiple\) ***************\))s
+370 2026 m
+(19)s
+470 2026 m
+(\(************* Procedures of ASKTTY \(#multiple\) **************\))s
+370 1976 m
+(20)s
+370 1926 m
+(21)s
+470 1926 m
+(BEGIN)s
+370 1876 m
+(22)s
+570 1876 m
+(WITH TTY_DATA DO)s
+370 1826 m
+(23)s
+570 1826 m
+(BEGIN)s
+370 1776 m
+(24)s
+670 1776 m
+(\(******************** ASKTTY \(1\) *********************\))s
+370 1726 m
+(25)s
+670 1726 m
+(\(** Get IN_FILES from TTY.)s
+2020(**\))ms
+370 1676 m
+(26)s
+670 1676 m
+(\(*******************************************************\))s
+370 1626 m
+(27)s
+370 1576 m
+(28)s
+670 1576 m
+(GO := NOT \(IN_FILES[1] = EMPTY\);)s
+370 1526 m
+(29)s
+670 1526 m
+(IF GO THEN)s
+370 1476 m
+(30)s
+670 1476 m
+(BEGIN)s
+370 1426 m
+(31)s
+770 1426 m
+(\(**************** ASKTTY \(2\) *********************\))s
+370 1376 m
+(32)s
+770 1376 m
+(\(** Ask which modules must be generated by VAMP.)s
+2020(**\))ms
+370 1326 m
+(33)s
+770 1326 m
+(\(** Set INV_MODE, MODULES and GO accordingly.)s
+2020(**\))ms
+370 1276 m
+(34)s
+770 1276 m
+(\(***************************************************\))s
+370 1226 m
+(35)s
+670 1226 m
+(END \(*IF*\);)s
+370 1176 m
+(36)s
+670 1176 m
+(IF GO THEN)s
+370 1126 m
+(37)s
+670 1126 m
+(BEGIN)s
+370 1076 m
+(38)s
+770 1076 m
+(\(**************** ASKTTY \(3\) *********************\))s
+370 1026 m
+(39)s
+770 1026 m
+(\(** Ask DFLT_EXT from the terminal.)s
+2020(**\))ms
+370 976 m
+(40)s
+770 976 m
+(\(***************************************************\))s
+370 926 m
+(41)s
+670 926 m
+(END \(*IF*\);)s
+370 876 m
+(42)s
+570 876 m
+(END \(*WITH*\);)s
+370 826 m
+(43)s
+470 826 m
+(END \(*ASKTTY*\);)s
+370 776 m
+(44)s
+370 726 m
+(45)s
+470 726 m
+(END \(*MODULE*\).)s
+370 676 m
+(46)s
+470 676 m
+(\(********************** End of MODULE ************************\))s
+370 626 m
+(47)s
+370 576 m
+(48)s
+370 526 m
+(49)s
+470 526 m
+(\(********** Constants of ASKTTY \(#leader, #quick\) ************\))s
+370 476 m
+(50)s
+470 476 m
+(CONST)s
+8 FA
+295 254 m
+(CLiP)s
+373(provisional)ms
+532(user)ms
+595(manual)ms
+702(\(version)ms
+819(2.100\))ms
+4 2500 430 1704 li
+endpage
+%%Page: 9 10
+begpage
+10 FCB
+295 3182 m
+(10)s
+10 FC
+460 3182 m
+(Examples)s
+10 FH
+370 3016 m
+(51)s
+470 3016 m
+(\(********** Types of ASKTTY \(#leader, #quick\) ****************\))s
+370 2966 m
+(52)s
+470 2966 m
+(TYPE)s
+370 2916 m
+(53)s
+470 2916 m
+(\(********** Variables of ASKTTY \(#leader, #quick\) ************\))s
+370 2866 m
+(54)s
+470 2866 m
+(VAR)s
+12 FAB
+295 2786 m
+(Remarks:)s
+12 FA
+389 2726 m
+(A)s
+437(clear)ms
+546(cut)ms
+620(example)ms
+802(of)ms
+856(a)ms
+890(subroutine)ms
+1114(definition)ms
+1320(in)ms
+1372(VAX/VMS)ms
+1614(Pascal)ms
+1755(that)ms
+1842(is)ms
+1888(to)ms
+1939(be)ms
+1998(compiled)ms
+295 2666 m
+(independently.)s
+606(The)ms
+699(refinement)ms
+931(contains)ms
+1113(stubs)ms
+1232(at)ms
+1283(lines)ms
+1393(1-46,)ms
+1513(49-50,)ms
+1657(51-52)ms
+1789(and)ms
+1877(53-54.)ms
+2022(The)ms
+2115(last)ms
+295 2606 m
+(three)s
+407(stubs)ms
+522(are)ms
+596(all)ms
+658(quick)ms
+782(stubs.)ms
+389 2546 m
+(The)s
+479(first)ms
+572(stub)ms
+668(is)ms
+714(a)ms
+749(main)ms
+861(stub.)ms
+970(It)ms
+1013(carries)ms
+1159(no)ms
+1221(identification)ms
+1501(and)ms
+1585(only)ms
+1687(specifies)ms
+1874(the)ms
+1948(name)ms
+2069(of)ms
+2123(the)ms
+295 2486 m
+(file)s
+374(that)ms
+461(will)ms
+551(finally)ms
+694(hold)ms
+795(the)ms
+869(module.)ms
+1044(Had)ms
+1140(the)ms
+1213(file-option)ms
+1437(be)ms
+1496(omitted,)ms
+1674(this)ms
+1758(would)ms
+1896(have)ms
+2003(meant)ms
+2137(an)ms
+295 2426 m
+(error.)s
+389 2366 m
+(Lines)s
+514(4,)ms
+567(16,)ms
+644(17,)ms
+721(18)ms
+786(and)ms
+873(19)ms
+937(are)ms
+1013(single-line)ms
+1239(slot)ms
+1326(for)ms
+1399(future)ms
+1533(declarations.)ms
+1802(The)ms
+1894(leader)ms
+2031(stubs)ms
+2148(at)ms
+295 2306 m
+(the)s
+368(end)ms
+453(secure)ms
+593(syntactic)ms
+783(details.)ms
+939(Lines)ms
+1062(24-26,)ms
+1204(31-34)ms
+1333(and)ms
+1418(38-40)ms
+1547(are)ms
+1621(ordinary)ms
+1803(slots)ms
+1907(again.)ms
+8 FA
+295 254 m
+(CLiP)s
+373(provisional)ms
+532(user)ms
+595(manual)ms
+702(\(version)ms
+819(2.100\))ms
+4 200 430 2944 li
+endpage
+%%Page: 10 11
+begpage
+10 FC
+1562 3182 m
+(4 Semantics of options)s
+10 FCB
+2138 3182 m
+(11)s
+14 FCB
+295 3001 m
+(4 Semantics of options)s
+12 FAB
+295 2906 m
+(#Comment)s
+12 FA
+543(\(stub,)ms
+668(slot\))ms
+389 2846 m
+(The)s
+478(comment)ms
+676(option)ms
+816(transforms)ms
+1042(the)ms
+1115(special)ms
+1266(CLIP-characters)ms
+1606(to)ms
+1657(a)ms
+1691(predefined)ms
+1917(format)ms
+2062(which)ms
+389 2786 m
+(suits)s
+501(a)ms
+544(particular)ms
+756(programming)ms
+1049(language.)ms
+1262(The)ms
+1361(option)ms
+1509(has)ms
+1596(an)ms
+1664(obligatory)ms
+1890(argument,)ms
+2112(e.g.)ms
+12 FAB
+389 2726 m
+(PASCAL)s
+12 FA
+(,)s
+12 FAB
+610(FORTRAN)ms
+12 FA
+(,)s
+12 FAB
+878(C)ms
+12 FA
+(,)s
+12 FAB
+936(ADA)ms
+12 FA
+1053(etc.)ms
+1133(or)ms
+12 FAB
+1183(ON)ms
+12 FA
+(/)s
+12 FAB
+(OFF)s
+12 FA
+(.)s
+1394(The)ms
+1480(ON/OFF)ms
+1667(argument)ms
+1865(specifies)ms
+2048(wether)ms
+389 2666 m
+(or)s
+443(not)ms
+520(the)ms
+594(slot-)ms
+696(or)ms
+750(stub-segment)ms
+1030(is)ms
+1076(to)ms
+1128(be)ms
+1188(included)ms
+1373(upon)ms
+1486(substitution.)ms
+1745(Comment)ms
+1955(options)ms
+2115(can)ms
+389 2606 m
+(be)s
+448(nested)ms
+588(and)ms
+673(the)ms
+747(most)ms
+857(local)ms
+966(version)ms
+1126(controls)ms
+1300(the)ms
+1373(operation.)ms
+12 FAB
+295 2516 m
+(#Default)s
+12 FA
+490(\(stub\))ms
+389 2456 m
+(A)s
+432(default)ms
+578(stub)ms
+668(is)ms
+708(prefixed)ms
+882(to)ms
+928(exclusively)ms
+1163(substituted)ms
+1387(if)ms
+1424(no)ms
+1481(other)ms
+1591(stub)ms
+1681(is)ms
+1722(found)ms
+1845(for)ms
+1911(that)ms
+1993(particular)ms
+389 2396 m
+(slot.)s
+12 FAB
+295 2306 m
+(#Indent)s
+12 FA
+474(\(stub,)ms
+599(slot\))ms
+389 2246 m
+(The)s
+481(indent)ms
+621(option)ms
+763(controls)ms
+939(the)ms
+1015(indentation)ms
+1255(of)ms
+1311(the)ms
+1387(generated)ms
+1596(listing.)ms
+1749(Indent)ms
+1891(options)ms
+2053(can)ms
+2137(be)ms
+389 2186 m
+(nested)s
+527(and)ms
+610(the)ms
+682(most)ms
+790(local)ms
+898(option)ms
+1036(overrules)ms
+1233(the)ms
+1305(more)ms
+1419(global)ms
+1554(ones.)ms
+1669(Indent)ms
+1808(has)ms
+1885(as)ms
+1938(one)ms
+2021(optional)ms
+389 2126 m
+(argument,)s
+12 FAB
+602(ON)ms
+12 FA
+690(or)ms
+12 FAB
+744(OFF)ms
+12 FA
+(.)s
+12 FAB
+295 2036 m
+(#File)s
+12 FA
+413(\(stub\))ms
+389 1976 m
+(The)s
+476(file)ms
+553(option)ms
+691(identifies)ms
+887(the)ms
+959(stub)ms
+1052(as)ms
+1104(a)ms
+1136(main)ms
+1246(stub)ms
+1340(\(viz.)ms
+1440(the)ms
+1511(root)ms
+1602(of)ms
+1654(a)ms
+1686(new)ms
+1780(module\).)ms
+1969(The)ms
+2057(option)ms
+389 1916 m
+(carries)s
+535(a)ms
+570(string)ms
+697(in)ms
+749(quotes)ms
+893(as)ms
+948(argument.)ms
+1162(This)ms
+1264(string)ms
+1391(specifies)ms
+1579(the)ms
+1653(name)ms
+1775(of)ms
+1829(the)ms
+1904(file)ms
+1983(to)ms
+2035(be)ms
+2096(gen-)ms
+389 1856 m
+(erated.)s
+12 FAB
+295 1766 m
+(#Leader)s
+12 FA
+485(\(stub\))ms
+389 1706 m
+(The)s
+477(leader)ms
+611(stub)ms
+705(is)ms
+750(usually)ms
+905(combined)ms
+1114(with)ms
+1214(multiple)ms
+1391(slots.)ms
+1507(It)ms
+1548(modifies)ms
+1734(the)ms
+1807(environment)ms
+2071(of)ms
+2123(the)ms
+389 1646 m
+(stubs)s
+506(that)ms
+596(will)ms
+688(be)ms
+750(substituted)ms
+982(by)ms
+1046(inserting)ms
+1236(the)ms
+1312(leader)ms
+1449(stub)ms
+1547(in)ms
+1601(front)ms
+1713(of)ms
+1769(the)ms
+1845(first)ms
+1940(encountered)ms
+389 1586 m
+(normal)s
+543(stub.)ms
+12 FAB
+295 1496 m
+(#Multiple)s
+12 FA
+515(\(slot\))ms
+389 1436 m
+(A)s
+437(multiple)ms
+616(slot)ms
+701(accepts)ms
+861(the)ms
+934(substitution)ms
+1180(of)ms
+1234(any)ms
+1319(number)ms
+1484(of)ms
+1538(stubs.)ms
+12 FAB
+295 1346 m
+(#Optional)s
+12 FA
+521(\(slot\))ms
+389 1286 m
+(An)s
+462(optional)ms
+639(slot)ms
+723(accepts)ms
+883(the)ms
+957(substitution)ms
+1202(of)ms
+1257(0)ms
+1294(or)ms
+1348(1)ms
+1386(stubs)ms
+1501(only.)ms
+12 FAB
+295 1196 m
+(#Overrule)s
+12 FA
+526(\(stub\))ms
+389 1136 m
+(The)s
+478(overrule)ms
+657(stub)ms
+752(replaces)ms
+928(the)ms
+1001(stub)ms
+1096(already)ms
+1255(substituted)ms
+1484(in)ms
+1535(a)ms
+1569(particular)ms
+1772(position.)ms
+1958(It)ms
+2000(is)ms
+2046(mainly)ms
+389 1076 m
+(meant)s
+523(for)ms
+594(testing)ms
+740(purposes.)ms
+12 FAB
+295 986 m
+(#Quick)s
+12 FA
+463(\(stub\))ms
+389 926 m
+(A)s
+440(quick)ms
+567(stub)ms
+666(is)ms
+715(a)ms
+753(stub)ms
+851(without)ms
+1020(internal)ms
+1188(structure)ms
+1379(\(viz.)ms
+1485(slots\).)ms
+1621(Following)ms
+1842(the)ms
+1919(stub)ms
+2018(segment)ms
+389 866 m
+(only)s
+490(L6-type)ms
+661(lines)ms
+768(are)ms
+841(allowed.)ms
+1025(Any)ms
+1123(other)ms
+1238(type)ms
+1337(of)ms
+1391(line)ms
+1479(will)ms
+1569(end)ms
+1654(the)ms
+1727(stub.)ms
+12 FAB
+295 776 m
+(#Separator)s
+12 FA
+546(\(stub\))ms
+389 716 m
+(A)s
+437(separator)ms
+633(stub)ms
+729(is)ms
+775(to)ms
+826(be)ms
+886(inserted)ms
+1056(between)ms
+1236(two)ms
+1323(consecutive)ms
+1572(stubs)ms
+1687(of)ms
+1741(the)ms
+1815(same)ms
+1930(slot.)ms
+12 FAB
+295 626 m
+(#Trailer)s
+12 FA
+485(\(stub\))ms
+389 566 m
+(The)s
+476(trailer)ms
+606(stub)ms
+699(is)ms
+742(the)ms
+814(counterpart)ms
+1051(of)ms
+1103(the)ms
+1174(default)ms
+1323(stub.)ms
+1429(It)ms
+1469(modifies)ms
+1654(the)ms
+1726(environment)ms
+1988(by)ms
+2048(adding)ms
+389 506 m
+(the)s
+462(trailer)ms
+594(stub)ms
+690(after)ms
+794(the)ms
+868(last)ms
+950(encountered)ms
+1206(normal)ms
+1361(stub.)ms
+8 FA
+295 254 m
+(CLiP)s
+373(provisional)ms
+532(user)ms
+595(manual)ms
+702(\(version)ms
+819(2.100\))ms
+endpage
+%%Page: 11 12
+begpage
+10 FCB
+295 3182 m
+(12)s
+10 FC
+460 3182 m
+(Using CLiP)s
+14 FCB
+295 3001 m
+(5 Using CLiP)s
+12 FA
+295 2906 m
+(The)s
+399(complete)ms
+610(CLiP)ms
+742(system)ms
+908(for)ms
+994(DOS)ms
+1121(and)ms
+1220(VMS)ms
+1356(consists)ms
+1541(of)ms
+1610(two)ms
+1712(independent)ms
+1983(programs,)ms
+295 2846 m
+(CLIP_1.EXE)s
+584(and)ms
+678(CLIP_2.EXE.)ms
+980(The)ms
+1079(Unix)ms
+1201(version)ms
+1369(has)ms
+1457(only)ms
+1568(one)ms
+1662(program,)ms
+1865(CLIP,)ms
+2007(which)ms
+2151(is)ms
+295 2786 m
+(functionally)s
+549(identical)ms
+734(to)ms
+785(CLIP_2.)ms
+969(CLIP_1)ms
+1140(prepares)ms
+1321(a)ms
+1356(file,)ms
+1448(CLIP.INI,)ms
+1663(telling)ms
+1804(CLIP_2)ms
+1975(\(the)ms
+2065(actual)ms
+295 2726 m
+(module)s
+465(extractor\))ms
+679(literally)ms
+855(everything)ms
+1089(it)ms
+1137(has)ms
+1223(to)ms
+1282(know)ms
+1414(in)ms
+1473(order)ms
+1598(to)ms
+1657(perform)ms
+1838(a)ms
+1881(run)ms
+1967(\(a)ms
+2026(detailed)ms
+295 2666 m
+(description)s
+534(of)ms
+592(the)ms
+670(structure)ms
+862(of)ms
+921(an)ms
+985(INI-file)ms
+1155(is)ms
+1205(in)ms
+1261(the)ms
+1339(next)ms
+1442(section\).)ms
+1630(Thus)ms
+1747(CLIP.INI)ms
+1954(specifies)ms
+2146(to)ms
+295 2606 m
+(CLIP_2)s
+465(\(CLIP\):)ms
+389 2546 m
+(-)s
+460(the)ms
+534(files)ms
+632(it)ms
+673(has)ms
+752(to)ms
+803(read)ms
+902(\(i.e.)ms
+992(the)ms
+1066(source)ms
+1209(files\),)ms
+389 2486 m
+(-)s
+460(the)ms
+534(modules)ms
+716(it)ms
+756(should)ms
+902(extract)ms
+1050(\(i.e.)ms
+1141(target)ms
+1267(modules\),)ms
+389 2426 m
+(-)s
+460(the)ms
+534(name)ms
+655(of)ms
+709(the)ms
+782(report)ms
+914(file,)ms
+389 2366 m
+(-)s
+460(the)ms
+532(syntax)ms
+674(of)ms
+726(the)ms
+798(CLiP-lines)ms
+1026(\(i.e.)ms
+1114(the)ms
+1186(style)ms
+1292(of)ms
+1344(the)ms
+1416(lines)ms
+1522(that)ms
+1607(trigger)ms
+1752(the)ms
+1824(module)ms
+1984(extraction)ms
+460 2306 m
+(process\).)s
+295 2246 m
+(CLIP_1)s
+465(allows)ms
+607(a)ms
+641(very)ms
+742(detailed)ms
+912(specification)ms
+1179(of)ms
+1232(the)ms
+1305(extraction)ms
+1517(process,)ms
+1691(much)ms
+1814(more)ms
+1928(detailed)ms
+2098(than)ms
+295 2186 m
+(you)s
+384(will)ms
+477(need)ms
+586(in)ms
+640(general.)ms
+815(For)ms
+899(this)ms
+986(reason)ms
+1131(the)ms
+1207(CLiP)ms
+1328(system)ms
+1482(comes)ms
+1624(with)ms
+1728(a)ms
+1765(couple)ms
+1913(of)ms
+1970(routines)ms
+2146(to)ms
+295 2126 m
+(shortcut)s
+465(CLIP_1)ms
+632(and)ms
+713(for)ms
+781(Unix)ms
+890(users)ms
+1002(these)ms
+1113(routines)ms
+1284(are)ms
+1354(the)ms
+1424(primary)ms
+1591(tool)ms
+1678(to)ms
+1726(construct)ms
+1919(their)ms
+2019(INI-file.)ms
+295 2066 m
+(For)s
+378(a)ms
+414(description)ms
+650(of)ms
+706(these)ms
+823(routines)ms
+998(we)ms
+1070(refer)ms
+1179(to)ms
+1232(section)ms
+1387("Using)ms
+1541(CLiP")ms
+1681(of)ms
+1737(the)ms
+1812(READ_ME)ms
+2062(file)ms
+2143(of)ms
+295 2006 m
+(this)s
+379(release.)ms
+389 1946 m
+(When)s
+520(using)ms
+641(CLiP)ms
+759(it)ms
+800(is)ms
+846(recommended)ms
+1141(to)ms
+1193(introduce)ms
+1394(at)ms
+1443(least)ms
+1547(the)ms
+1620(following)ms
+1827(directories:)ms
+389 1886 m
+(-)s
+460(A)ms
+514(directory)ms
+711(for)ms
+787(the)ms
+865(source)ms
+1013(files)ms
+1117(CLiP)ms
+1240(will)ms
+1335(use.)ms
+1431(This)ms
+1537(directory)ms
+1735(also)ms
+1833(holds)ms
+1959(the)ms
+2037(various)ms
+460 1826 m
+(INI-file)s
+625(you)ms
+713(maintain)ms
+900(to)ms
+952(conduct)ms
+1123(the)ms
+1196(extraction)ms
+1409(process.)ms
+389 1766 m
+(-)s
+460(A)ms
+509(directory)ms
+702(to)ms
+753(contain)ms
+913(the)ms
+986(extracted)ms
+1182(modules.)ms
+389 1706 m
+(-)s
+460(A)ms
+509(directory)ms
+702(to)ms
+753(contain)ms
+913(the)ms
+986(results)ms
+1130(of)ms
+1184(the)ms
+1257(compilation)ms
+1509(and)ms
+1593(linking)ms
+1748(of)ms
+1802(the)ms
+1875(modules.)ms
+389 1646 m
+(-)s
+460(In)ms
+521(case)ms
+627(CLiP)ms
+753(is)ms
+806(used)ms
+917(in)ms
+975(combination)ms
+1245(with)ms
+1354(a)ms
+1396(word-processor,)ms
+1739(it)ms
+1786(is)ms
+1839(wise)ms
+1951(to)ms
+2009(keep)ms
+2123(the)ms
+460 1586 m
+(word-processor)s
+784(files)ms
+882(again)ms
+1003(in)ms
+1054(a)ms
+1089(separate)ms
+1265(directory.)ms
+1471(In)ms
+1525(this)ms
+1610(case)ms
+1708(the)ms
+1782(source)ms
+1925(file)ms
+2004(directory)ms
+460 1526 m
+(should)s
+606(be)ms
+666(fed)ms
+742(with)ms
+843(ASCII)ms
+987(exports)ms
+1146(from)ms
+1256(word-processor)ms
+1579(files.)ms
+8 FA
+295 254 m
+(CLiP)s
+373(provisional)ms
+532(user)ms
+595(manual)ms
+702(\(version)ms
+819(2.100\))ms
+endpage
+%%Page: 12 13
+begpage
+10 FC
+1467 3182 m
+(6 The structure of an INI-file)s
+10 FCB
+2138 3182 m
+(13)s
+14 FCB
+295 3001 m
+(6 The structure of an INI-file)s
+12 FA
+295 2906 m
+(This)s
+402(section)ms
+562(explains)ms
+748(the)ms
+828(structure)ms
+1021(of)ms
+1082(an)ms
+1148(INI-file)ms
+1319(by)ms
+1388(means)ms
+1534(of)ms
+1595(an)ms
+1660(example)ms
+1849(file.)ms
+1946(You)ms
+2051(should)ms
+295 2846 m
+(understand)s
+528(this)ms
+615(structure)ms
+804(thoroughly)ms
+1038(before)ms
+1179(your)ms
+1285(try)ms
+1355(to)ms
+1408(edit)ms
+1497(INI-files)ms
+1684(yourself)ms
+1862(directly)ms
+2029(through)ms
+295 2786 m
+(an)s
+354(editor)ms
+483([Ammers 1993].)ms
+389 2726 m
+(The)s
+481(example)ms
+665(is)ms
+714(an)ms
+776(INI-file)ms
+943(for)ms
+1017(MS-DOS.)ms
+1233(The)ms
+1326(only)ms
+1429(difference)ms
+1647(with)ms
+1751(other)ms
+1869(platforms)ms
+2075(is)ms
+2123(the)ms
+295 2666 m
+(specification)s
+558(of)ms
+607(directories.)ms
+838(The)ms
+923(numbers)ms
+1103(at)ms
+1147(the)ms
+1215(beginning)ms
+1423(of)ms
+1472(every)ms
+1591(line)ms
+1673(are)ms
+1742(added)ms
+1869(for)ms
+1935(convenience)ms
+295 2606 m
+(of)s
+349(reference.)ms
+560(They)ms
+675(are)ms
+748(not)ms
+825(part)ms
+915(of)ms
+969(the)ms
+1043(file)ms
+1122(itself.)ms
+10 FH
+470 2495 m
+(<================= Example of an INI-file ====================>)s
+395 2453 m
+(1)s
+470 2453 m
+(This file contains data that is needed to run CLiP)s
+395 2411 m
+(2)s
+470 2411 m
+(And is generated by CLiP_MENU)s
+395 2370 m
+(3)s
+470 2370 m
+(Modifying this file at own risk.)s
+395 2328 m
+(4)s
+470 2328 m
+(Using CLiP_MENU is definitely recommended.)s
+395 2286 m
+(5)s
+395 2245 m
+(6)s
+470 2245 m
+(INTERACTIVE_MODE Mode \(INTERACTIVE/DEBUG/HELPFUL/AUTO\))s
+395 2203 m
+(7)s
+470 2203 m
+(NO Interactive fault correction \(YES/NO\))s
+395 2161 m
+(8)s
+470 2161 m
+(BOTH Error message destination \(TERMINAL/......\))s
+395 2120 m
+(9)s
+470 2120 m
+(\(* Left comment string)s
+370 2078 m
+(10)s
+470 2078 m
+(*\) Right comment string)s
+370 2036 m
+(11)s
+470 2036 m
+(* Command character)s
+370 1995 m
+(12)s
+470 1995 m
+(ENDOF END string)s
+370 1953 m
+(13)s
+470 1953 m
+(# Option marker)s
+370 1911 m
+(14)s
+470 1911 m
+(EXTRACTED The specified modules are \(OMITTED/EX-)s
+370 1870 m
+(15)s
+470 1870 m
+(TRACTED\))s
+370 1828 m
+(16)s
+470 1828 m
+(------------ REPORT FILE -----------)s
+370 1786 m
+(17)s
+470 1786 m
+(CLIP.RPT)s
+370 1745 m
+(18)s
+470 1745 m
+(------------ INPUT FILES -----------)s
+370 1703 m
+(19)s
+470 1703 m
+(f:\\LPT\\MAN\\EX01_A.ASC)s
+370 1661 m
+(20)s
+470 1661 m
+(f:\\LPT\\MAN\\EX01_B.ASC)s
+370 1620 m
+(21)s
+470 1620 m
+(------------ MODULES ---------------)s
+370 1578 m
+(22)s
+470 1578 m
+(F:\\TEST\\)s
+370 1536 m
+(23)s
+470 1536 m
+(PALINDRO.PAS)s
+370 1495 m
+(24)s
+470 1495 m
+(F:\\TEST\\)s
+370 1453 m
+(25)s
+470 1453 m
+(TESTDATA.IN)s
+370 1411 m
+(26)s
+470 1411 m
+(------------ MODULE DIRECTORY ------)s
+370 1370 m
+(27)s
+470 1370 m
+(f:\\LPT\\)s
+470 1328 m
+(------------ END OF INI FILE -------)s
+470 1286 m
+(<================= End of Example INI-file ===================>)s
+12 FA
+295 1178 m
+(Lines 1-5:)s
+602(Descriptive)ms
+845(lines)ms
+952(that)ms
+1039(are)ms
+1113(flushed)ms
+1272(upon)ms
+1385(reading.)ms
+295 1088 m
+(Lines 6-14:)s
+602(Information)ms
+853(behind)ms
+1002(position)ms
+1175(24)ms
+1238(is)ms
+1284(not)ms
+1360(interpreted.)ms
+295 998 m
+(Lines 6-7:)s
+602(These)ms
+734(lines)ms
+841(refer)ms
+947(to)ms
+999(unimplemented)ms
+1322(options.)ms
+1495(They)ms
+1610(should)ms
+1756(not)ms
+1832(be)ms
+1892(changed.)ms
+295 908 m
+(Lines 8:)s
+602(Identifies)ms
+804(the)ms
+877(output)ms
+1018(device)ms
+1161(for)ms
+1232(messages)ms
+1433(and)ms
+1518(reports.)ms
+1682(The)ms
+1773(first)ms
+1866(word)ms
+1981(of)ms
+2036(the)ms
+2110(line)ms
+602 848 m
+(must)s
+712(be)ms
+773(on)ms
+837(of)ms
+892(the)ms
+967(following)ms
+1175(keywords)ms
+1383(TERMINAL,)ms
+1667(REPORTFILE)ms
+1978(\(or)ms
+2050(FILE\),)ms
+602 788 m
+(BOTH)s
+750(or)ms
+804(NONE)ms
+956(and)ms
+1040(we)ms
+1111(assume)ms
+1271(the)ms
+1344(meaning)ms
+1529(self)ms
+1614(evident.)ms
+295 698 m
+(Lines 9-13:)s
+602(These)ms
+735(lines)ms
+844(together)ms
+1022(define)ms
+1161(the)ms
+1236(syntax)ms
+1381(of)ms
+1437(the)ms
+1512(lines)ms
+1621(CLiP)ms
+1741(will)ms
+1833(recognize.)ms
+2054(For)ms
+2137(an)ms
+602 638 m
+(explanation)s
+847(of)ms
+901(the)ms
+975(CLiP)ms
+1093(syntax,)ms
+1249(refer)ms
+1356(to)ms
+1407([Ammers)ms
+1608(1993].)ms
+295 548 m
+(Lines 9:)s
+602(At)ms
+659(most)ms
+763(6)ms
+795(characters)ms
+1004(to)ms
+1050(specify)ms
+1201(the)ms
+1269("left)ms
+1363(comment)ms
+1556(string")ms
+1697(i.e.)ms
+1765(the)ms
+1833(opening)ms
+2001(sequence)ms
+602 488 m
+(of)s
+650(a)ms
+680(comment)ms
+873(string)ms
+994(of)ms
+1043(the)ms
+1111(programming)ms
+1390(language)ms
+1578(you)ms
+1660(want)ms
+1765(to)ms
+1811(use.)ms
+1897(The)ms
+1982(characters)ms
+602 428 m
+(cannot)s
+747(be)ms
+807(letters)ms
+942(\(A-Z,)ms
+1067(a-z\),)ms
+1169(digits)ms
+1293(\(0-9\))ms
+1405(or)ms
+1460(a)ms
+1494(dot)ms
+1571(\(.\).)ms
+8 FA
+295 254 m
+(CLiP)s
+373(provisional)ms
+532(user)ms
+595(manual)ms
+702(\(version)ms
+819(2.100\))ms
+4 1250 430 1894 li
+endpage
+%%Page: 13 14
+begpage
+10 FCB
+295 3182 m
+(14)s
+10 FC
+460 3182 m
+(The structure of an INI-file)s
+12 FA
+295 3011 m
+(Lines 10:)s
+602(At)ms
+674(most)ms
+793(6)ms
+840(characters)ms
+1064(to)ms
+1125(specify)ms
+1291(the)ms
+1374("right)ms
+1510(comment)ms
+1718(string")ms
+1874(i.e.)ms
+1957(the)ms
+2040(closing)ms
+602 2951 m
+(sequence)s
+801(of)ms
+858(a)ms
+896(comment)ms
+1098(string)ms
+1228(of)ms
+1285(the)ms
+1362(programming)ms
+1650(language)ms
+1847(you)ms
+1938(want)ms
+2051(to)ms
+2105(use.)ms
+602 2891 m
+(The)s
+692(characters)ms
+907(cannot)ms
+1053(be)ms
+1112(letters)ms
+1247(\(A-Z,)ms
+1372(a-z\),)ms
+1475(digits)ms
+1598(\(0-9\))ms
+1711(or)ms
+1765(a)ms
+1800(dot)ms
+1876(\(.\).)ms
+295 2801 m
+(Lines 11:)s
+602(The)ms
+694(character)ms
+892(that)ms
+982(is)ms
+1030(postfixed)ms
+1231(to)ms
+1284(a)ms
+1321(left)ms
+1402(comment)ms
+1603(string)ms
+1732(and)ms
+1818(prefixed)ms
+2000(to)ms
+2053(a)ms
+2090(right)ms
+602 2741 m
+(comment)s
+805(string)ms
+936(in)ms
+992(order)ms
+1115(to)ms
+1171(identify)ms
+1344(it)ms
+1389(as)ms
+1448(a)ms
+1487(special)ms
+1643(comment)ms
+1847(that)ms
+1939(CLiP)ms
+2062(has)ms
+2146(to)ms
+602 2681 m
+(process,)s
+773(a)ms
+804(so)ms
+857(called)ms
+985(CLiP-line.)ms
+1203(The)ms
+1290(character)ms
+1482(cannot)ms
+1624(be)ms
+1680(a)ms
+1711(letter)ms
+1822(\(A-Z,)ms
+1943(a-z\),)ms
+2042(a)ms
+2073(digits)ms
+602 2621 m
+(\(0-9\))s
+714(or)ms
+768(a)ms
+803(dot)ms
+879(\(.\).)ms
+295 2531 m
+(Lines 12:)s
+602(The)ms
+693(leading)ms
+854(characters)ms
+1071(that)ms
+1160(identify)ms
+1329(a)ms
+1365(particular)ms
+1570(CLiP-line)ms
+1781(as)ms
+1836(the)ms
+1911(end)ms
+1997(of)ms
+2053(a)ms
+2089(stub,)ms
+602 2471 m
+(i.e.)s
+675(a)ms
+710(particular)ms
+914(section)ms
+1068(that)ms
+1156(can)ms
+1237(be)ms
+1297(substituted)ms
+1526(elsewhere.)ms
+295 2381 m
+(Lines 13:)s
+602(The)ms
+692(character)ms
+888(that)ms
+975(identifies)ms
+1174(the)ms
+1248(options.)ms
+295 2291 m
+(Line 14:)s
+602(Relates)ms
+758(to)ms
+807(the)ms
+878(modules)ms
+1057(in)ms
+1105(the)ms
+1176(module)ms
+1335(section)ms
+1487(below.)ms
+1631(The)ms
+1718(specified)ms
+1908(modules)ms
+2087(must)ms
+602 2231 m
+(either)s
+723(be)ms
+777(extracted)ms
+967(or)ms
+1016(omitted)ms
+1176(and)ms
+1256(the)ms
+1324(first)ms
+1412(word)ms
+1522(of)ms
+1571(this)ms
+1650(line)ms
+1732(can)ms
+1809(only)ms
+1905(be)ms
+1960(OMITTED)ms
+602 2171 m
+(or)s
+656(EXTRACTED.)ms
+295 2081 m
+(Line 15:)s
+602(Starts)ms
+729(the)ms
+804(section)ms
+959(defining)ms
+1139(the)ms
+1214(file)ms
+1294(that)ms
+1382(mirrors)ms
+1543(the)ms
+1618(extraction)ms
+1831(process.)ms
+2007(This)ms
+2110(line)ms
+602 2021 m
+(should)s
+747(be)ms
+807(copied)ms
+953(literally.)ms
+295 1931 m
+(Line 16:)s
+602(Path)ms
+703(and)ms
+788(file)ms
+867(specification)ms
+1135(of)ms
+1189(the)ms
+1263(report)ms
+1394(file.)ms
+295 1841 m
+(Line 17:)s
+602(Starts)ms
+726(the)ms
+799(section)ms
+951(defining)ms
+1129(the)ms
+1201(input)ms
+1315(files)ms
+1412(for)ms
+1481(the)ms
+1553(extraction)ms
+1764(process,)ms
+1938(the)ms
+2010(so)ms
+2065(called)ms
+602 1781 m
+(source)s
+745(files.)ms
+856(This)ms
+957(line)ms
+1045(should)ms
+1190(be)ms
+1250(copied)ms
+1396(literally.)ms
+295 1691 m
+(Line 18-19:)s
+602(Every)ms
+736(line)ms
+825(specifies)ms
+1014(a)ms
+1051(path)ms
+1151(and)ms
+1238(source)ms
+1382(file.)ms
+1476(There)ms
+1607(may)ms
+1707(be)ms
+1769(up)ms
+1833(to)ms
+1886(64)ms
+1950(lines)ms
+2059(in)ms
+2112(this)ms
+602 1631 m
+(section.)s
+295 1541 m
+(Line 20:)s
+602(Starts)ms
+727(the)ms
+799(section)ms
+952(defining)ms
+1130(the)ms
+1203(modules)ms
+1384(that)ms
+1470(are)ms
+1542(considered)ms
+1770(during)ms
+1912(the)ms
+1985(extraction)ms
+602 1481 m
+(process.)s
+776(Whether)ms
+959(the)ms
+1032(modules)ms
+1213(are)ms
+1286(extracted)ms
+1480(or)ms
+1534(omitted)ms
+1698(depends)ms
+1873(on)ms
+1935(line)ms
+2022(14.)ms
+2096(This)ms
+602 1421 m
+(line)s
+689(should)ms
+835(be)ms
+895(copied)ms
+1040(literally.)ms
+295 1331 m
+(Line 21-24:)s
+602(Every)ms
+735(line)ms
+824(pair)ms
+915(specifies)ms
+1104(a)ms
+1139(path)ms
+1239(and)ms
+1325(a)ms
+1361(module)ms
+1524(file.)ms
+1617(There)ms
+1747(may)ms
+1847(be)ms
+1908(up)ms
+1971(to)ms
+2024(64)ms
+2087(pairs)ms
+602 1271 m
+(\(128)s
+706(lines\))ms
+829(in)ms
+881(this)ms
+965(section.)ms
+295 1181 m
+(Line 25:)s
+602(Starts)ms
+728(the)ms
+801(section)ms
+955(to)ms
+1007(identify)ms
+1175(the)ms
+1248(default)ms
+1399(directory)ms
+1592(for)ms
+1663(modules,)ms
+1857(i.e.)ms
+1931(the)ms
+2004(directory)ms
+602 1121 m
+(where)s
+734(modules)ms
+913(go)ms
+973(to)ms
+1022(that)ms
+1107(have)ms
+1211(no)ms
+1271(explicit)ms
+1431(directory)ms
+1621(specified)ms
+1812(by)ms
+1872(the)ms
+1943(MODULES)ms
+602 1061 m
+(section.)s
+768(This)ms
+870(line)ms
+957(should)ms
+1103(be)ms
+1163(copied)ms
+1308(literally.)ms
+295 971 m
+(Line 26:)s
+602(Default)ms
+764(directory)ms
+957(for)ms
+1028(extracted)ms
+1224(modules.)ms
+295 881 m
+(Line 27:)s
+602(Identifies)ms
+803(the)ms
+877(end)ms
+961(of)ms
+1015(the)ms
+1089(INI-file.)ms
+1267(This)ms
+1368(line)ms
+1456(should)ms
+1601(be)ms
+1661(copied)ms
+1807(literally.)ms
+8 FA
+295 254 m
+(CLiP)s
+373(provisional)ms
+532(user)ms
+595(manual)ms
+702(\(version)ms
+819(2.100\))ms
+endpage
+%%Page: 14 15
+begpage
+10 FC
+926 3182 m
+(7.1 "SP_EXTR_STR: system failure .... call maintenance")s
+10 FCB
+2138 3182 m
+(15)s
+14 FCB
+295 3001 m
+(7 Bugs, work-arounds and undocumented features)s
+12 FCB
+295 2868 m
+(7.1 "SP_EXTR_STR: system failure .... call maintenance")s
+12 FA
+295 2781 m
+(This)s
+394(failure)ms
+536(may)ms
+633(happen)ms
+788(if)ms
+829(the)ms
+901(stubs)ms
+1015(have)ms
+1120(not)ms
+1195(been)ms
+1300(correctly)ms
+1488(closed)ms
+1627(with)ms
+1727(the)ms
+1799(END-STRING)ms
+2110(that)ms
+295 2721 m
+(has)s
+378(been)ms
+489(specified)ms
+686(as)ms
+744(the)ms
+822(syntax.)ms
+982(The)ms
+1076(default)ms
+1232(value)ms
+1356(of)ms
+1415(this)ms
+1504(string)ms
+1634(is)ms
+1684("ENDOF".)ms
+1921(Also)ms
+2032(the)ms
+2110(line)ms
+295 2661 m
+(containing)s
+518(the)ms
+592(END-STRING)ms
+904(should)ms
+1050(be)ms
+1110(properly)ms
+1292(closed.)ms
+1444(For)ms
+1526(example)ms
+1708(in)ms
+1760(a)ms
+1794(Pascal)ms
+1935(situation)ms
+10 FH
+345 2580 m
+( \(********* End of module \(2.1\) ***\))s
+12 FA
+295 2496 m
+(should)s
+440(be)ms
+500(all)ms
+563(right,)ms
+682(but)ms
+10 FH
+345 2415 m
+( \(****** End of module \(2.1\) **\))s
+12 FA
+295 2331 m
+(may)s
+393(give)ms
+492(trouble)ms
+646(since)ms
+761(the)ms
+835(string)ms
+961("**\)")ms
+1081(is)ms
+1127(incorrect)ms
+1317(here.)ms
+12 FCB
+295 2178 m
+(7.2 Options in general)s
+12 FA
+295 2091 m
+(Several)s
+453(options)ms
+608(have)ms
+711(been)ms
+814(introduces)ms
+1030(with)ms
+1128(very)ms
+1225(advanced)ms
+1422(applications)ms
+1672(in)ms
+1719(mind.)ms
+1843(They)ms
+1954(have)ms
+2057(hardly)ms
+295 2031 m
+(been)s
+402(tested)ms
+532(will)ms
+624(probably)ms
+815(not)ms
+892(work.)ms
+1021(You)ms
+1121(won't)ms
+1251(need)ms
+1358(them)ms
+1472(either.)ms
+1612(For)ms
+1695(this)ms
+1780(reason)ms
+1924(don't)ms
+2043(use)ms
+2123(the)ms
+295 1971 m
+(options)s
+454(OVERRULE,)ms
+746(SEPARATOR)ms
+1050(and)ms
+1135(TRAILER.)ms
+12 FCB
+295 1818 m
+(7.3 Multiple option)s
+12 FA
+295 1731 m
+(A)s
+343(slot)ms
+427(with)ms
+529(the)ms
+602("MULTIPLE")ms
+902(option)ms
+1042(raises)ms
+1169(an)ms
+1228(error)ms
+1338(if)ms
+1380(no)ms
+1443(stubs)ms
+1558(are)ms
+1631(found)ms
+1760(matching)ms
+1959(the)ms
+2032(slot.)ms
+2129(To)ms
+295 1671 m
+(prevent)s
+457(this)ms
+542(error)ms
+651(message)ms
+833(one)ms
+918(should)ms
+1064(specify)ms
+1221(the)ms
+1294(option)ms
+1435("OPTIONAL")ms
+1738(also)ms
+1831(for)ms
+1902(the)ms
+1975(slot.)ms
+12 FCB
+295 1518 m
+(7.4 Report file option NONE)s
+12 FA
+295 1431 m
+(This)s
+395(option)ms
+535(to)ms
+586(suppress)ms
+770(the)ms
+842(printing)ms
+1013(of)ms
+1066(reports)ms
+1217(to)ms
+1267(the)ms
+1340(terminal)ms
+1519(has)ms
+1597(not)ms
+1673(been)ms
+1779(implemented.)ms
+2064(It)ms
+2107(will)ms
+295 1371 m
+(be)s
+354(eliminated)ms
+578(in)ms
+629(some)ms
+747(later)ms
+849(version.)ms
+12 FCB
+295 1218 m
+(7.5 Generating target modules)s
+12 FAB
+295 1101 m
+(7.5.1 Specification)s
+12 FA
+295 1011 m
+(If)s
+339(CLIP.INI)ms
+541(specifies)ms
+728(a)ms
+761(target)ms
+887(module)ms
+1048(that)ms
+1135(matches)ms
+1310(no)ms
+1372(file-option)ms
+1594(argument)ms
+1794(anywhere)ms
+2000(in)ms
+2051(the)ms
+2123(list)ms
+295 951 m
+(of)s
+345(specified)ms
+534(source)ms
+672(files,)ms
+779(CLiP)ms
+893(does)ms
+994(not)ms
+1066(complain.)ms
+1273(The)ms
+1359(matching)ms
+1554(is)ms
+1595(case)ms
+1690(sensitive)ms
+1873(and)ms
+1954(for)ms
+2021(instance)ms
+295 891 m
+(a)s
+329(file-option)ms
+553(argument)ms
+10 FH
+545 810 m
+(\(********** #file "EXAMPLE.PAS" ***********************\))s
+12 FA
+295 726 m
+(does)s
+399(not)ms
+475(fit)ms
+532(a)ms
+567(module)ms
+729(specification)ms
+997(in)ms
+1049(CLIP.INI)ms
+1251(of)ms
+1306(the)ms
+1379(form)ms
+10 FH
+545 645 m
+(Example.PAS)s
+12 FA
+295 561 m
+(This)s
+396(may)ms
+495(lead)ms
+590(to)ms
+642(unpleasant)ms
+868(surprises.)ms
+389 501 m
+(On)s
+464(MS-DOS)ms
+668(and)ms
+755(VAX/VMS)ms
+1000(platforms)ms
+1206(the)ms
+1282(specification)ms
+1552(of)ms
+1608(files)ms
+1709(is)ms
+1757(not)ms
+1835(context)ms
+1997(sensitive.)ms
+295 441 m
+(For)s
+371(this)ms
+450(reason)ms
+588(the)ms
+656(CLIP_1)ms
+821(program)ms
+998(\(which)ms
+1144(is)ms
+1184(available)ms
+1372(for)ms
+1437(the)ms
+1505(MS-DOS)ms
+1701(and)ms
+1780(VAX/VMS)ms
+2018(versions)ms
+295 381 m
+(of)s
+355(CLiP\))ms
+496(converts)ms
+684(those)ms
+808(names)ms
+955(to)ms
+1012(upper)ms
+1145(case)ms
+1250(in)ms
+1307(the)ms
+1387(INI-file)ms
+1558(it)ms
+1605(creates.)ms
+1775(Thus)ms
+1894(the)ms
+1973(file-option)ms
+8 FA
+295 254 m
+(CLiP)s
+373(provisional)ms
+532(user)ms
+595(manual)ms
+702(\(version)ms
+819(2.100\))ms
+endpage
+%%Page: 15 16
+begpage
+10 FCB
+295 3182 m
+(16)s
+10 FC
+460 3182 m
+(Bugs, work-arounds and undocumented features)s
+12 FA
+295 3011 m
+(arguments)s
+515(in)ms
+567(the)ms
+640(source)ms
+783(files)ms
+882(should)ms
+1028(definitely)ms
+1232(be)ms
+1292(specified)ms
+1485(in)ms
+1536(upper)ms
+1662(case)ms
+1761(too.)ms
+389 2951 m
+(In)s
+441(a)ms
+475(Unix)ms
+586(environment)ms
+850(a)ms
+884(file)ms
+962(name)ms
+1082(is)ms
+1126(case)ms
+1224(sensitive)ms
+1410(indeed.)ms
+1567(Currently)ms
+1770(no)ms
+1831(CLIP_1)ms
+2001(exists)ms
+2126(for)ms
+295 2891 m
+(Unix)s
+410(and)ms
+498(an)ms
+561(INI-file)ms
+730(has)ms
+812(to)ms
+867(be)ms
+930(created)ms
+1090(by)ms
+1156(means)ms
+1299(of)ms
+1357(the)ms
+1434(short-cut)ms
+1627(routine)ms
+1784(CLP)ms
+1892(\(or)ms
+1966(directly)ms
+2135(by)ms
+295 2831 m
+(means)s
+434(of)ms
+488(an)ms
+548(editor,)ms
+689(cf.)ms
+752(section 6\).)ms
+973(No)ms
+1046(conversion)ms
+1278(is)ms
+1323(performed)ms
+1544(in)ms
+1595(this)ms
+1679(case)ms
+1777(and)ms
+1862(one)ms
+1946(has)ms
+2025(to)ms
+2076(make)ms
+295 2771 m
+(sure)s
+390(the)ms
+464(file-option)ms
+688(argument)ms
+889(is)ms
+935(identical)ms
+1119(to)ms
+1171(the)ms
+1244(corresponding)ms
+1543(name)ms
+1664(in)ms
+1715(the)ms
+1789(INI-file.)ms
+12 FAB
+295 2621 m
+(7.5.2 Omitted modules)s
+12 FA
+295 2531 m
+(If)s
+340(modules)ms
+521(are)ms
+593(specified)ms
+786(for)ms
+856(being)ms
+978(OMITTED)ms
+1215(at)ms
+1263(extraction)ms
+1475(time,)ms
+1588(it)ms
+1627(will)ms
+1717(be)ms
+1776(omitted)ms
+1940(independent)ms
+295 2471 m
+(of)s
+349(the)ms
+422(path)ms
+521(that)ms
+608(may)ms
+707(have)ms
+814(been)ms
+921(specified.)ms
+1126(The)ms
+1217(module)ms
+1379(will)ms
+1469(never)ms
+1593(be)ms
+1653(generated.)ms
+12 FAB
+295 2321 m
+(7.5.3 Empty run)s
+12 FA
+295 2231 m
+(CLiP)s
+415(does)ms
+521(not)ms
+600(always)ms
+754(recognize)ms
+963(a)ms
+1000(corrupted)ms
+1206(INI-file.)ms
+1386(Thus)ms
+1501(if)ms
+1546(you)ms
+1636(run)ms
+1717(CLiP)ms
+1838(and)ms
+1925(it)ms
+1967(produces)ms
+2162(a)ms
+295 2171 m
+(report)s
+426(of)ms
+481(the)ms
+554(form)ms
+10 FH
+345 2090 m
+(============================ CLiP version 2.1 ==========================)s
+345 2006 m
+(============================ Busy scanning =============================)s
+345 1965 m
+(Scanning file: ..................)s
+345 1923 m
+(.................................)s
+345 1840 m
+(============================ End scanning ==============================)s
+345 1756 m
+(============================ Busy analysing ============================)s
+345 1673 m
+(============================ End analysing =============================)s
+345 1590 m
+(============================ Busy generating ===========================)s
+345 1506 m
+(============================ End generating ============================)s
+345 1465 m
+(Used \(CPU\) time :5.88 Sec.)s
+345 1423 m
+(See you next time !)s
+12 FA
+295 1339 m
+(then)s
+397(you)ms
+489(start)ms
+591(checking)ms
+788(the)ms
+866(specifications)ms
+1157(of)ms
+1215(the)ms
+1293(target)ms
+1423(modules,)ms
+1622(since)ms
+1741(this)ms
+1830(is)ms
+1879(the)ms
+1957(most)ms
+2071(likely)ms
+295 1279 m
+(source)s
+437(of)ms
+490(trouble.)ms
+655(Keep)ms
+772(in)ms
+823(mind)ms
+937(however,)ms
+1133(that)ms
+1220(the)ms
+1292(problem)ms
+1471(may)ms
+1568(be)ms
+1627(also)ms
+1719(arise)ms
+1825(due)ms
+1909(to)ms
+1959(a)ms
+1993(corrupted)ms
+295 1219 m
+(INI-file.)s
+12 FCB
+295 1066 m
+(7.6 Lost lines)s
+12 FA
+295 979 m
+(If)s
+340(you)ms
+428(have)ms
+535(stubs)ms
+650(of)ms
+704(the)ms
+778(form)ms
+10 FH
+345 898 m
+(\(****************** GEN_POOL global routines ********************\))s
+345 856 m
+(\(******************************************************************\))s
+345 815 m
+(\(* routine: write_string .... *\))s
+345 773 m
+(\(* ................... *\))s
+345 731 m
+(\(******************************************************************\))s
+12 FA
+295 648 m
+(you)s
+385(will)ms
+479(see)ms
+559(that)ms
+650(the)ms
+727(second)ms
+881(line)ms
+972(of)ms
+1030(the)ms
+1107(stub)ms
+1206(\(the)ms
+1299("starred")ms
+1492(line\))ms
+1600(is)ms
+1649(not)ms
+1729(generated)ms
+1939(in)ms
+1994(the)ms
+2071(target)ms
+295 588 m
+(modules.)s
+488(For)ms
+569(this)ms
+652(reason)ms
+794(it)ms
+833(is)ms
+878(better)ms
+1003(to)ms
+1053(put)ms
+1129(an)ms
+1187(additional)ms
+1399(empty)ms
+1535(line)ms
+1621(in)ms
+1671(between.)ms
+1862(For)ms
+1943(example)ms
+2123(the)ms
+295 528 m
+(following)s
+501(stub)ms
+597(will)ms
+688(be)ms
+747(extracted)ms
+943(correctly.)ms
+8 FA
+295 254 m
+(CLiP)s
+373(provisional)ms
+532(user)ms
+595(manual)ms
+702(\(version)ms
+819(2.100\))ms
+endpage
+%%Page: 16 17
+begpage
+10 FC
+1736 3182 m
+(8 References)s
+10 FCB
+2138 3182 m
+(17)s
+10 FH
+345 3020 m
+(\(****************** GEN_POOL global routines ********************\))s
+345 2936 m
+(\(******************************************************************\))s
+345 2895 m
+(\(* routine: write_string .... *\))s
+345 2853 m
+(\(* ................... *\))s
+345 2811 m
+(\(******************************************************************\))s
+12 FCB
+295 2674 m
+(7.7 DOS version only)s
+12 FA
+295 2588 m
+(If)s
+344(you)ms
+435(activate)ms
+607(the)ms
+685(PROJECT/Load)ms
+1029(INI-file)ms
+1198(or)ms
+1256(PROJECT/Save)ms
+1594(INI-file)ms
+1763(menu)ms
+1891(of)ms
+1949(the)ms
+2026(CLIP_1)ms
+295 2528 m
+(program)s
+481(and)ms
+569(you)ms
+661(specify)ms
+822(an)ms
+886(illegal)ms
+1028(drive)ms
+1147(in)ms
+1203(the)ms
+1280(Current)ms
+1450(Directory)ms
+1658(option,)ms
+1815(you)ms
+1907(may)ms
+2009(hang)ms
+2123(the)ms
+295 2468 m
+(system.)s
+458(For)ms
+540(instance)ms
+717(a)ms
+751(drive)ms
+867(specification)ms
+1135(preceeded)ms
+1350(by)ms
+1412(a)ms
+1447(space)ms
+1571(will)ms
+1661(produce)ms
+1834(this)ms
+1919(bug.)ms
+14 FCB
+295 2308 m
+(8 References)s
+12 FA
+295 2213 m
+(Ammers)s
+480(E.W.)ms
+596(van,)ms
+693(M.R.)ms
+809(Kramer)ms
+975(\(1993\),)ms
+1134(The)ms
+1225(CLiP)ms
+1343(Style)ms
+1459(of)ms
+1514(Literate)ms
+1683(Programming)ms
+1971(\(submitted)ms
+389 2153 m
+(for)s
+467(publication\).)ms
+742(Anonymously)ms
+1046(ftp-able)ms
+1222(as)ms
+1284(CLIP_STYLE.PS,)ms
+1674(CLIP_STYLE_A.PS)ms
+2112(and)ms
+389 2093 m
+(CLIP_STYLE_B.PS)s
+816(from)ms
+926(directory)ms
+1119(CLIP)ms
+1240(on)ms
+1302(sun01.info.wau.nl.)ms
+295 2003 m
+(Ammers)s
+475(E.W.)ms
+587(van,)ms
+680(Kramer)ms
+842(M.R.)ms
+953(\(1992\),)ms
+1108(VAMP:)ms
+1275(A)ms
+1319(Tool)ms
+1423(for)ms
+1490(Literate)ms
+1654(Programming)ms
+1937(Independent)ms
+389 1943 m
+(of)s
+441(Programming)ms
+728(Language)ms
+936(and)ms
+1020(Formatter.)ms
+1241(CompEuro '92)ms
+1551(Proceedings,)ms
+1819(May)ms
+1922(4-8)ms
+2000(1992,)ms
+2123(the)ms
+389 1883 m
+(Hague,)s
+544(pg.)ms
+619(371-376.)ms
+295 1793 m
+(Knuth)s
+432(D.E.)ms
+536(\(1984\).)ms
+694(Literate)ms
+862(Programming.)ms
+1162(The)ms
+1253(Computer)ms
+1465(Journal)ms
+1625(27,)ms
+1700(2,)ms
+1750(97-111.)ms
+8 FA
+295 254 m
+(CLiP)s
+373(provisional)ms
+532(user)ms
+595(manual)ms
+702(\(version)ms
+819(2.100\))ms
+endpage
+%%Page: Contents-0 18
+begpage
+12 FAB
+1049 3019 m
+(Table of Contents)s
+12 FA
+295 2919 m
+(CLiP - )s
+12 FAI
+(C)s
+12 FA
+( ode from )s
+12 FAI
+(Li)s
+12 FA
+( terate )s
+12 FAI
+(P)s
+12 FA
+( rograms Provisional User Manual )s
+1596(................................)ms
+2019 2919 m
+(1)s
+295 2819 m
+(1 Introduction )s
+608(...............................................................................................................)ms
+2019 2819 m
+(1)s
+295 2719 m
+(2 Syntax \(programming style\) )s
+933(.....................................................................................)ms
+2019 2719 m
+(2)s
+365 2669 m
+(2.1 Stub blocks and documentation blocks )s
+1245(............................................................)ms
+2019 2669 m
+(3)s
+365 2619 m
+(2.2 Segments )s
+670(..........................................................................................................)ms
+2019 2619 m
+(3)s
+365 2569 m
+(2.3 Options )s
+632(.............................................................................................................)ms
+2019 2569 m
+(3)s
+295 2469 m
+(3 Examples )s
+558(...................................................................................................................)ms
+2019 2469 m
+(4)s
+365 2419 m
+(3.1 Example 1: Defining a module )s
+1082(.........................................................................)ms
+2019 2419 m
+(4)s
+365 2369 m
+(3.2 Example 2: Multiple slots )s
+995(................................................................................)ms
+2019 2369 m
+(5)s
+365 2319 m
+(3.3 Example 3: Quick stubs and abstract data types )s
+1420(..............................................)ms
+2019 2319 m
+(6)s
+365 2269 m
+(3.4 Example 4: An ordinary refinement step )s
+1282(.........................................................)ms
+2019 2269 m
+(7)s
+365 2219 m
+(3.5 Example 5: A subroutine module )s
+1132(.....................................................................)ms
+2019 2219 m
+(9)s
+295 2119 m
+(4 Semantics of options )s
+783(.................................................................................................)ms
+2019 2119 m
+(11)s
+295 2019 m
+(5 Using CLiP )s
+596(................................................................................................................)ms
+2019 2019 m
+(12)s
+295 1919 m
+(6 The structure of an INI-file )s
+908(.......................................................................................)ms
+2019 1919 m
+(13)s
+295 1819 m
+(7 Bugs, work-arounds and undocumented features )s
+1333(.....................................................)ms
+2019 1819 m
+(15)s
+365 1769 m
+(7.1 "SP_EXTR_STR: system failure .... call maintenance" )s
+1570(..................................)ms
+2019 1769 m
+(15)s
+365 1719 m
+(7.2 Options in general )s
+845(............................................................................................)ms
+2019 1719 m
+(15)s
+365 1669 m
+(7.3 Multiple option )s
+782(.................................................................................................)ms
+2019 1669 m
+(15)s
+365 1619 m
+(7.4 Report file option NONE )s
+982(.................................................................................)ms
+2019 1619 m
+(15)s
+365 1569 m
+(7.5 Generating target modules )s
+1007(...............................................................................)ms
+2019 1569 m
+(15)s
+436 1519 m
+(7.5.1 Specification )s
+845(............................................................................................)ms
+2019 1519 m
+(15)s
+436 1469 m
+(7.5.2 Omitted modules )s
+920(......................................................................................)ms
+2019 1469 m
+(16)s
+436 1419 m
+(7.5.3 Empty run )s
+795(................................................................................................)ms
+2019 1419 m
+(16)s
+365 1369 m
+(7.6 Lost lines )s
+670(..........................................................................................................)ms
+2019 1369 m
+(16)s
+365 1319 m
+(7.7 DOS version only )s
+832(.............................................................................................)ms
+2019 1319 m
+(17)s
+295 1219 m
+(8 References )s
+583(.................................................................................................................)ms
+2019 1219 m
+(17)s
+8 FA
+295 254 m
+(CLiP)s
+373(provisional)ms
+532(user)ms
+595(manual)ms
+702(\(version)ms
+819(2.100\))ms
+endpage
+%%Trailer
+enddocument
+%%Pages: 18
+%%DocumentFonts:
+%%+ Times-Roman
+%%+ Times-Italic
+%%+ Times-Bold
+%%+ Times-BoldItalic
+%%+ Helvetica
+%%+ Helvetica-Bold
+%%+ Helvetica-BoldOblique
+%%+ Courier
+%%EOF
+ \ No newline at end of file
diff --git a/web/clip/ms_dos/manual.txt b/web/clip/ms_dos/manual.txt
new file mode 100644
index 0000000000..b7e319fd8f
--- /dev/null
+++ b/web/clip/ms_dos/manual.txt
@@ -0,0 +1,854 @@
+
+
+
+ CLiP - C ode from Li terate P rograms
+ *************************************
+
+ Provisional User Manual
+
+
+
+Disclaimer:
+ This document is meant for programmers who are already familiar with the
+literate programming paradigm. It pretends in no way to be a complete user
+manual in the real meaning of the word. But the document should supply
+sufficient hints to experiment successfully with the CLiP system.
+ You are assumed to be familiar with the ideas and design goals of the CLiP
+system as explained in [Ammers and Kramer 1993]. Also you should have read *
+READ_ME.TXT* or *READ_ME.PS* which come with the executables and understand the
+meaning of the INI-file which guides the extraction process.
+ The DOS and VMS versions of CLiP consist of two independent programs,
+CLIP_1 and CLIP_2. CLIP_1 is purely to create an INI-file for CLIP_2, which
+performs the actual work. The Unix version consists of only one program, CLIP
+(which is identical to CLIP_2), and an INI-file should be made using the
+supplied scripts or an editor. This manual only deals with the second program.
+
+
+
+ Table of Contents
+
+1 Introduction 1
+
+2 Syntax (programming style) 2
+ 2.1 Stub blocks and documentation blocks 3
+ 2.2 Segments 3
+ 2.3 Options 3
+3 Examples 4
+ 3.1 Example 1: Defining a module 4
+ 3.2 Example 2: Multiple slots 5
+ 3.3 Example 3: Quick stubs and abstract data types 6
+ 3.4 Example 4: An ordinary refinement step 7
+ 3.5 Example 5: A subroutine module 9
+4 Semantics of options 11
+
+5 Using CLiP 12
+
+6 The structure of an INI-file 13
+
+7 Bugs, work-arounds and undocumented features 15
+ 7.1 "SP_EXTR_STR: system failure .... call maintenance" 15
+ 7.2 Options in general 15
+ 7.3 Multiple option 15
+ 7.4 Report file option NONE 15
+ 7.5 Generating target modules 15
+ 7.5.1 Specification 15
+ 7.5.2 Omitted modules 16
+ 7.5.3 Empty run 16
+ 7.6 Lost lines 16
+ 7.7 DOS version only 17
+8 References 17
+
+
+1 Introduction
+
+In short the idea behind CLiP is to define a style of programming sufficiently
+formal to be recognized by a literate programming automaton. This syntax (which
+we will refer to as the CLiP-syntax) should not obstruct a natural way of
+programming. Ideally the system should be smart enough to "see" stubs, slots
+and the like by "inspecting" the documentation and simply "understanding" the
+refinements the programmer has made. Alas, this is far beyond the current
+potential of artificial intelligence and we will have to reach the automaton a
+helping hand by defining a special syntax.
+ So we want the "look and feel" of a documentation to be as "natural" as
+possible, but with CLiP features that can be recognized by an automaton. On the
+other hand should the reader be burdened as little as possible with the fact
+that additional processing is needed to extract the modules. In systems like
+VAMP [Ammers 1984] and WEB [Knuth 1984] - which use batch formatters - this is
+achieved by adding explicit commands in the source-files that are suppressed in
+the formatted documentation. But this technique does not work if the
+documentation environment is an interactive word-processor (Word Perfect, Lotus
+Manuscript, MS-Word, Ami Pro, etc.). So CLiP uses either the ASCII-export from
+a word-processors or the ASCII input of a formatter and extracts modules from
+there. In these files CLiP recognizes the important sections by a particular
+programming-style rather than by explicit commands.
+ The first section describes the syntax that CLiP "sees". The next section
+gives a couple of useful examples. In section 4 we describe the options that
+may be used to customize the process of module generation. In section 5 we give
+some hints on how to organize your working with CLiP efficiently. Stubs and
+slots my remaining sections illustrate the style of documentation and programs
+that would result. CLiP is in development and we compile the known bugs in
+section 6.
+
+2 Syntax (programming style)
+
+CLiP-lines [-] that is lines which have a special meaning to CLiP [-] start
+with a CLIP-left-parenthesis (CLIP-lpar) and end with a CLIP-right-parenthesis
+(CLIP-rpar). Both tokens are constructed as extensions of the tokens
+encapsulating comments which we will refer to as *COMM-START* and *COMM-END*.
+If we program in Pascal then everything between "*(**" and "**)*" is seen as
+comment, thus we have the convention:
+
+ *COMM-START* = "*(**"
+ *COMM-END* = "**)*"
+
+Extension of the comment token is by a character with a special meaning to
+clip, the *CLIP-CHAR*. In our case we assume
+
+ *CLIP-CHAR* = "***"
+
+Thus CLiP-lines are enclosed by
+
+ CLIP-lpar of the form "*(***"
+
+and
+
+ CLIP-rpar of the form "***)*"
+
+The parameters *COMM-START*, *COMM-END* and *CLIP-CHAR* are set by the INI-file
+and it is evident that the convention can be adjusted.
+
+
+ CLiP distinguishes six source line categories:
+
+ 1 (******************* <arbitrary string> **********************)
+ 2 (**************** End of <arbitrary string> ******************)
+ 3 (** <arbitrary string> **)
+ 4 (***************************************************************)
+ 5 <the empty string>
+ 6 <any string not falling in one of the above categories>
+
+We will refer to a line from the second category as an "L2" and so on and
+investigate the meaning is of the various categories for CLiP.
+ The string "*End of*" of an L2 has a special meaning that distinguishes an
+L2 from an L1. Again this special string is defined by a parameter in the
+INI-file
+
+ *END-STRING* = "*ENDOF*"
+
+Observe that CLiP does not distinguish between upper and lower case and forgets
+about spaces. In fact CLiP reduces the <arbitrary string> internally to a
+sequence of the characters "*A*"-"*Z*", "*0*"-"*9*" and "*.*"
+ Note that for an L3 the character immediately following the *CLIP-CHAR* on
+the left side and the character preceding the *CLIP-CHAR* on the right side may
+be anything apart from the *CLIP-CHAR* itself.
+
+2.1 Stub blocks and documentation blocks
+
+From CLiP's point of view the source-files are divided in documentation blocks
+and stub-blocks. A stub-block starts with an L1 and usually ends with an L2. A
+special kind of stub, a so called quick stub (see sect. 3.3 and 4), is ended by
+an L5 or an <EOF>. Everything outside a stub-block is a documentation block and
+ignored by CLiP. For this reason we say that CLiP is in active mode during the
+processing of a stub-block and in passive mode otherwise. The only way to
+change CLiP from passive to active mode is by an L1 and the usual way from
+active to passive is through an L2. An L2 in passive mode is presumably an
+error and will be ignored.
+
+2.2 Segments
+
+A stub-block contains one and only one stub-segment, which starts the
+stub-block. The stub-segment may be followed by any number of slot-segments
+and/or code-segments.
+ An L1 always starts a new stub- or slot-segment and the segment continues
+with any number of lines of type L3 or L4. A segment is a slot-segment if and
+only if it is not the first one of a stub-block. A code-segment consists of any
+number of contiguous lines of type L5. Stub- and slot-segments have an
+identification or name which is constructed somehow from the *<arbitrary string>
+*s inside the segment.
+ L3 and L4 are continuations of stub- and slot-segments, but with a slightly
+different status. An L3 that cannot be pasted to a segment is flagged as an
+error. But an L4 under the same conditions is interpreted as belonging to the
+current code-segment.
+
+2.3 Options
+
+The module extraction process can be tuned by means of options. Stub-segments
+as well as slot-segments may have options. An option starts with a keyword
+signalled by a special *OPTION-MARKER*. The option keyword may be abbreviated
+to a unique headerstring for that option. We will assume "*#*" for *
+OPTION-MARKER*, but of course this again is a parameter set by the INI-file.
+
+
+The argument(s) following an option continue till the next option-keyword or
+till the end of the segment. Therefore the name of a segment must precede the
+options.
+ In general options operate on the inside of the stub only, since that is
+the part of the program that the programmer of this particular refinement has
+in his or her mind. In addition options can be inherited. The meaning of the
+various options is explained in section 4. Some frequently used options show up
+in the examples of section 3.
+
+
+3 Examples
+
+In the examples we will illustrate the most important features of CLiP by
+making remarks on excerpts drawn from the documentation of CLiPs predecessor,
+VAMP.
+
+3.1 Example 1: Defining a module
+
+ The module VAMP:
+ Starting from nowhere, the empty program will do.
+
+
+ 1 (**** #File "VAMP.PAS". #Indent on. ****)
+ 2
+ 3 (***************************************************************)
+ 4 (* Routine: VAMP - Main module of the VAMP system. *)
+ 5 (* Purpose: Main module and unique entry point to the *)
+ 6 (* VAMP-system. *)
+ 7 (* Interface: TTY - All communication with the user *)
+ 8 (* proceeds via the terminal. *)
+ 9 (* Author/Date: VAMP project management, Sept. 12, 1983. *)
+ 10 (***************************************************************)
+ 11
+ 12 (********************** VAMP (body) **************************)
+ 13
+ 14 (*********************** End of VAMP *************************)
+ 15
+ 16
+ 18 (********* VAMP (body) #def ***********)
+ 19 PROGRAM VAMP (INPUT, OUTPUT);
+ 20 BEGIN
+ 21 WRITELN ('!!! VAMP was here !!!');
+ 22 END (*VAMP*).
+ 23 (********** End of VAMP (body) *********)
+
+Remarks:
+ There are two stubs in this section. Line 1-14 and line 18-23. Both
+stub-blocks have a stub-segment of one line only (lines 1 and 18 respectively).
+ The first stub-segment has no identification. It specifies the start of a
+new output module by the FILE option and thus is not meant to be referenced
+(see also example 5).
+ Line 2 (an L5) separates line 3 (an L4) from the stub-segment and makes it
+belong to the code-segment which expands over lines 2-11.
+ There resides only one slot inside the first stub (line 12) and this slot
+is identified as "*VAMPBODY*". The second stub has no slots at all.
+ Line 13 is a trivial code-segment and line 14 marks the end of the first
+stub-block. The string following the "End of" is optional and does not have to
+match the stub name in any way.
+
+
+3.2 Example 2: Multiple slots
+
+ Environment module:
+ In the past there have been made several changes in the VAMP
+ program. These changes have been made in the extracted modules rather
+ then in the VAMP source. To make source files consistent with the
+ modules, the source files have been updated in march 1990 by Jeroen
+ Reef.
+
+ Furthermore, the updated source files contain two additional
+ modules, VAMP.MSG and DECLAR_MOD. The module VAMP.MSG contains the error
+ messages of VAMP and the module DECLAR_MOD contains the types and
+ constants used by several modules of VAMP. This module uses the
+ ENVIRONMENT, which directs the compiler to generate an environment file
+ DECLAR.PEN. Other modules can reference the identifiers declared in
+ DECLAR_MOD by inheriting the environment with the INHERIT attribute.
+
+
+
+ 1 (****** #File "DECLAR_MOD.PAS". #Indent ON. ******)
+ 2
+ 3 (***************************************************************)
+ 4 (* Module to contain all parameters and global declarations *)
+ 5 (* of the VAMP system. *)
+ 6 (***************************************************************)
+ 7 [ENVIRONMENT ('DECLAR.PEN')] MODULE DECLARS;
+ 8
+ 9 (********** Parameters of the VAMP-system (#mul) *************)
+ 10
+ 11 TYPE
+ 12 ABSTRACT = (DEFINED, UNDEFINED);
+ 13 (********* Simple types of the VAMP-system (#mul) ********)
+ 14 (******** Structured types of the VAMP-system (#mul) ******)
+ 15 END.
+ 16 (***************** End of DECLARE_MOD.PAS ********************)
+
+Remarks:
+ The stub-block extends over 16 lines. Line 1 is the stub-segment and line
+16 closes the stub-block. Lines 2-8 constitute the first code-segment of the
+stub, lines 10-12 the middle one and line 15 the last one.
+ There are three slots (or slot-segments), lines 9, 13 and 14. All slots
+consist of one line only and carry the multiple option. For instance the first
+slot can swallow any number of parameter definition that might turn up in the
+future.
+ The names (identifications) of the slots are respectively
+
+ "*PARAMETERSOFTHEVAMPSYSTEM*"
+ "*SIMPLETYPESOFTHEVAMPSYSTEM*"
+ "*STRUCTUREDTYPESOFTHEVAMPSYSTEM*"
+
+
+3.3 Example 3: Quick stubs and abstract data types
+
+ First level data structures:
+ This level introduces the data-structure TTY_INFO, containing the
+ initial communication between the terminal and the program. The
+ definition requires in addition four system parameters and some
+ constants and types which are related to file specifications. The
+ structure of CODE_INFO is left open for the time being.
+
+
+ 1 (********** Parameters of the VAMP-system (#quick) ***********)
+ 2 (* -------- Parameters of TTY_INFO --------- *)
+ 3 MAX_FILE_SPEC_L = 255; (* Maximum length file-specific. *)
+ 4 MAX_FILE_NAME_L = 39; (* Maximum length file-name. *)
+ 5 MAX_FILE_EXT_L = 39; (* Maximum length file-extension. *)
+ 6 MAX_IN_FILES = 8; (* Maximum number of in-files for *)
+ 7 (* a single run. *)
+ 8 UPB_IN_FILES = 9; (* = MAX_IN_FILES + 1. *)
+ 9 MAX_MODULES = 10; (* Maximum number of modules *)
+ 10 (* specified for a run. *)
+ 11 UPB_MODULES = 11; (* = MAX_MODULES + 1. *)
+ 12 EMPTY = '';
+ 13
+ 14 (********* Simple types of the VAMP-system (#quick) **********)
+ 15 (* -------- Simple types of TTY_INFO --------- *)
+ 16 FILE_SPEC = VARYING [MAX_FILE_SPEC_L] OF CHAR;
+ 17 FILE_NAME = VARYING [MAX_FILE_NAME_L] OF CHAR;
+ 18 FILE_EXT = VARYING [MAX_FILE_EXT_L] OF CHAR;
+ 19
+ 20 (******** Structured types of the VAMP-system ****************)
+ 21 (* -------- Structured types of TTY_INFO --------- *)
+ 22 TTY_INFO = RECORD
+ 23 IN_FILES: ARRAY [1..UPB_IN_FILES] OF FILE_SPEC;
+ 24 MODULES: ARRAY [1..UPB_MODULES] OF FILE_NAME;
+ 25 DFLT_EXT: FILE_EXT;
+ 26 INV_MODE,
+ 27 GO: BOOLEAN;
+ 29 END (*RECORD*);
+ 30 (**************** Declaration of CODE_INFO *******************)
+ 31 (******** End of Structured types of the VAMP-system *********)
+ 32
+ 33
+ 34 (************* Declaration of CODE_INFO (#def) ***************)
+ 35 CODE_INFO = ABSTRACT;
+ 36 (******************** End of declaration *********************)
+
+Remarks:
+ This section contains five stubs altogether, i.e. lines 1-12, 14-18, 20-31
+and 34-36. The first two blocks one have no internal slots. The quick option
+promotes them to quick stubs, which means that they are completed by the first
+line that is not an L6.
+ The third stub (20-31) illustrates how an abstract data type can be
+implemented. The stub is an ordinary one with one slot - identified as "*
+DECLARATIONOFCODEINFO*" - at line 30. The slot is by default satisfied with the
+stub at lines 34-36. But this declaration will be replaced by a new one at some
+time in the future.
+
+
+3.4 Example 4: An ordinary refinement step
+
+ Body of VAMP:
+ The input-files will be processed sequentially in the same order as
+ given by the user. The intermediate file "VAMP.TMP" is guarded by a
+ sentinel to simplify backspacing later on and it needs an additional
+ global declaration.
+
+
+ 1 (*********** Simple types of the VAMP-system ************)
+ 2 FTYPE = FILE OF CHAR;
+ 3 (****************** End of declaration ******************)
+
+
+ Now the body of VAMP expands to
+
+ 4 (********************** VAMP (body) **************************)
+ 5 [INHERIT ('SYS$LIBRARY:STARLET.PEN', 'DECLAR.PEN')]
+ 6 PROGRAM VAMP (INPUT, OUTPUT);
+ 7
+ 8 (***************** Constants of VAMP (#mult) *****************)
+ 9 (***************** Types of VAMP (#mult) *********************)
+ 10 VAR
+ 11 FILE_CNT: 1..UPB_IN_FILES;
+ 12 CURR_IN_FILE: TEXT; (* Currently read file. *)
+ 13 CODE_LINES: FTYPE; (* From input extracted code. *)
+ 14 TTY_DATA: TTY_INFO;
+ 15 CODE_STRUCT: CODE_INFO;
+ 16 (************ Variables of VAMP (#mult) ******************)
+ 17
+ 18 [EXTERNAL] PROCEDURE ASKTTY (VAR TTY_DATA: TTY_INFO); EXTERN;
+ 19 (*************** Functions of VAMP (#mult) *******************)
+ 20
+ 21 BEGIN
+ 22 (* Take the data, that are needed for this VAMP run from *)
+ 23 (* the terminal. *)
+ 24 ASKTTY (TTY_DATA);
+ 25 WITH TTY_DATA DO
+ 26 IF GO THEN
+ 27 BEGIN
+ 28 (********************* VAMP (C) **********************)
+ 29 (** Initialize CODE_STRUCT. **)
+ 30 (*******************************************************)
+ 31
+ 32 OPEN (CODE_LINES, FILE_NAME :='VAMP.TMP',
+ 33 ORGANIZATION := RELATIVE, ACCESS_METHOD := DIRECT,
+ 34 DISPOSITION := DELETE);
+ 35 REWRITE (CODE_LINES);
+ 36 FILE_CNT := 1;
+ 37 WHILE (IN_FILES [FILE_CNT] <> EMPTY) DO
+ 38 BEGIN
+ 39 WRITELN ('Proceeding on file ',IN_FILES [FILE_CNT]);
+ 40 OPEN (CURR_IN_FILE, FILE_NAME := IN_FILES [FILE_CNT],
+ 41 HISTORY := READONLY);
+ 42 RESET (CURR_IN_FILE);
+ 43 PUT (CODE_LINES); (* Start file with a sentinel. *)
+ 44
+
+
+ 45 (****************** VAMP (A) *********************)
+ 46 (** Build CODE_STRUCT and fill CODE_LINES by a **)
+ 47 (** scan of CURR_IN_FILE, using the information **)
+ 48 (** of MODULES, DFLT_EXT and INV_MODE. **)
+ 49 (***************************************************)
+ 50
+ 51 CLOSE (CURR_IN_FILE);
+ 52 FILE_CNT := FILE_CNT + 1;
+ 53 END (*WHILE*);
+ 54
+ 55 (******************** VAMP (B) ***********************)
+ 56 (** Generate the files as specified by CODE_STRUCT **)
+ 57 (** from the data contained by CODE_LINES. **)
+ 58 (*******************************************************)
+ 59
+ 60 (* Close and Delete scratch-file CODE_LINES. *)
+ 61 CLOSE (CODE_LINES, DELETE);
+ 62 END
+ 63 ELSE
+ 64 WRITELN ('!!! You specified an empty run - try again !!!');
+ 65 END (*VAMP*).
+ 66 (******************* End of VAMP (body) **********************)
+ 67
+ 68
+ 69 (************ Constants of VAMP (#leader, #quick) ************)
+ 70 CONST
+ 71 (************ Types of VAMP (#leader, #quick) ****************)
+ 72 TYPE
+
+Remarks:
+ This refinement contains four stubs (lines 1-3, 4-66, 69-70 and 71-72). The
+second stub has seven slots (lines 8, 9, 16, 19, 28-30, 45-49 and 55-58). Lines
+22, 23 and 60 are simple code-lines from CLiPs point of view.
+ The leader option of the last two stubs defines the code that will be
+inserted in front of a stub that matches the slot.
+
+
+3.5 Example 5: A subroutine module
+
+ 1 (****** #File "ASKTTY.PAS" ******)
+ 2 [INHERIT ('DECLAR.PEN')] MODULE ASKTTY (INPUT, OUTPUT);
+ 3
+ 4 (*********** External procedures of ASKTTY (#mult) ************)
+ 5
+ 6 (***************************************************************)
+ 7 (* Routine: ASKTTY - ASK information from TTY. *)
+ 8 (* Purpose: To obtain from the TTY the information which *)
+ 9 (* is needed to perform a VAMP run. *)
+ 10 (* Interface: TTY_DATA - Data from TTY to VAMP. *)
+ 11 (* TTY - Source of all knowledge. *)
+ 12 (* Author/Date: VAMP project management, September 29, 1983. *)
+ 13 (***************************************************************)
+ 14 [GLOBAL] PROCEDURE ASKTTY (VAR TTY_DATA: TTY_INFO);
+ 15
+ 16 (************* Constants of ASKTTY (#multiple) ***************)
+ 17 (************* Types of ASKTTY (#multiple) *******************)
+ 18 (************* Variables of ASKTTY (#multiple) ***************)
+ 19 (************* Procedures of ASKTTY (#multiple) **************)
+ 20
+ 21 BEGIN
+ 22 WITH TTY_DATA DO
+ 23 BEGIN
+ 24 (******************** ASKTTY (1) *********************)
+ 25 (** Get IN_FILES from TTY. **)
+ 26 (*******************************************************)
+ 27
+ 28 GO := NOT (IN_FILES[1] = EMPTY);
+ 29 IF GO THEN
+ 30 BEGIN
+ 31 (**************** ASKTTY (2) *********************)
+ 32 (** Ask which modules must be generated by VAMP. **)
+ 33 (** Set INV_MODE, MODULES and GO accordingly. **)
+ 34 (***************************************************)
+ 35 END (*IF*);
+ 36 IF GO THEN
+ 37 BEGIN
+ 38 (**************** ASKTTY (3) *********************)
+ 39 (** Ask DFLT_EXT from the terminal. **)
+ 40 (***************************************************)
+ 41 END (*IF*);
+ 42 END (*WITH*);
+ 43 END (*ASKTTY*);
+ 44
+ 45 END (*MODULE*).
+ 46 (********************** End of MODULE ************************)
+ 47
+ 48
+ 49 (********** Constants of ASKTTY (#leader, #quick) ************)
+ 50 CONST
+
+
+ 51 (********** Types of ASKTTY (#leader, #quick) ****************)
+ 52 TYPE
+ 53 (********** Variables of ASKTTY (#leader, #quick) ************)
+ 54 VAR
+
+Remarks:
+ A clear cut example of a subroutine definition in VAX/VMS Pascal that is to
+be compiled independently. The refinement contains stubs at lines 1-46, 49-50,
+51-52 and 53-54. The last three stubs are all quick stubs.
+ The first stub is a main stub. It carries no identification and only
+specifies the name of the file that will finally hold the module. Had the
+file-option be omitted, this would have meant an error.
+ Lines 4, 16, 17, 18 and 19 are single-line slot for future declarations.
+The leader stubs at the end secure syntactic details. Lines 24-26, 31-34 and
+38-40 are ordinary slots again.
+
+
+4 Semantics of options
+
+#Comment (stub, slot)
+ The comment option transforms the special CLIP-characters to a predefined
+ format which suits a particular programming language. The option has an
+ obligatory argument, e.g. PASCAL, FORTRAN, C, ADA etc. or ON/OFF. The
+ ON/OFF argument specifies wether or not the slot- or stub-segment is to be
+ included upon substitution. Comment options can be nested and the most
+ local version controls the operation.
+
+#Default (stub)
+ A default stub is prefixed to exclusively substituted if no other stub is
+ found for that particular slot.
+
+#Indent (stub, slot)
+ The indent option controls the indentation of the generated listing. Indent
+ options can be nested and the most local option overrules the more global
+ ones. Indent has as one optional argument, ON or OFF.
+
+#File (stub)
+ The file option identifies the stub as a main stub (viz. the root of a new
+ module). The option carries a string in quotes as argument. This string
+ specifies the name of the file to be generated.
+
+#Leader (stub)
+ The leader stub is usually combined with multiple slots. It modifies the
+ environment of the stubs that will be substituted by inserting the leader
+ stub in front of the first encountered normal stub.
+
+#Multiple (slot)
+ A multiple slot accepts the substitution of any number of stubs.
+
+#Optional (slot)
+ An optional slot accepts the substitution of 0 or 1 stubs only.
+
+#Overrule (stub)
+ The overrule stub replaces the stub already substituted in a particular
+ position. It is mainly meant for testing purposes.
+
+#Quick (stub)
+ A quick stub is a stub without internal structure (viz. slots). Following
+ the stub segment only L6-type lines are allowed. Any other type of line
+ will end the stub.
+
+#Separator (stub)
+ A separator stub is to be inserted between two consecutive stubs of the
+ same slot.
+
+#Trailer (stub)
+ The trailer stub is the counterpart of the default stub. It modifies the
+ environment by adding the trailer stub after the last encountered normal
+ stub.
+
+
+5 Using CLiP
+
+The complete CLiP system for DOS and VMS consists of two independent programs,
+CLIP_1.EXE and CLIP_2.EXE. The Unix version has only one program, CLIP, which
+is functionally identical to CLIP_2. CLIP_1 prepares a file, CLIP.INI, telling
+CLIP_2 (the actual module extractor) literally everything it has to know in
+order to perform a run (a detailed description of the structure of an INI-file
+is in the next section). Thus CLIP.INI specifies to CLIP_2 (CLIP):
+ - the files it has to read (i.e. the source files),
+ - the modules it should extract (i.e. target modules),
+ - the name of the report file,
+ - the syntax of the CLiP-lines (i.e. the style of the lines that trigger
+ the module extraction process).
+CLIP_1 allows a very detailed specification of the extraction process, much
+more detailed than you will need in general. For this reason the CLiP system
+comes with a couple of routines to shortcut CLIP_1 and for Unix users these
+routines are the primary tool to construct their INI-file. For a description of
+these routines we refer to section "Using CLiP" of the READ_ME file of this
+release.
+ When using CLiP it is recommended to introduce at least the following
+directories:
+ - A directory for the source files CLiP will use. This directory also
+ holds the various INI-file you maintain to conduct the extraction
+ process.
+ - A directory to contain the extracted modules.
+ - A directory to contain the results of the compilation and linking of
+ the modules.
+ - In case CLiP is used in combination with a word-processor, it is wise
+ to keep the word-processor files again in a separate directory. In this
+ case the source file directory should be fed with ASCII exports from
+ word-processor files.
+
+
+6 The structure of an INI-file
+
+This section explains the structure of an INI-file by means of an example file.
+You should understand this structure thoroughly before your try to edit
+INI-files yourself directly through an editor [Ammers 1993].
+ The example is an INI-file for MS-DOS. The only difference with other
+platforms is the specification of directories. The numbers at the beginning of
+every line are added for convenience of reference. They are not part of the
+file itself.
+
+ <================= Example of an INI-file ====================>
+ 1 This file contains data that is needed to run CLiP
+ 2 And is generated by CLiP_MENU
+ 3 Modifying this file at own risk.
+ 4 Using CLiP_MENU is definitely recommended.
+ 5
+ 6 INTERACTIVE_MODE Mode (INTERACTIVE/DEBUG/HELPFUL/AUTO)
+ 7 NO Interactive fault correction (YES/NO)
+ 8 BOTH Error message destination (TERMINAL/......)
+ 9 (* Left comment string
+ 10 *) Right comment string
+ 11 * Command character
+ 12 ENDOF END string
+ 13 # Option marker
+ 14 EXTRACTED The specified modules are (OMITTED/EXTRACTED)
+ 15 ------------ REPORT FILE -----------
+ 16 CLIP.RPT
+ 17 ------------ INPUT FILES -----------
+ 18 f:\LPT\MAN\EX01_A.ASC
+ 19 f:\LPT\MAN\EX01_B.ASC
+ 20 ------------ MODULES ---------------
+ 21 F:\TEST\
+ 22 PALINDRO.PAS
+ 23 F:\TEST\
+ 24 TESTDATA.IN
+ 25 ------------ MODULE DIRECTORY ------
+ 26 f:\LPT\
+ 27 ------------ END OF INI FILE -------
+ <================= End of Example INI-file ===================>
+
+Lines 1-5: Descriptive lines that are flushed upon reading.
+
+Lines 6-14: Information behind position 24 is not interpreted.
+
+Lines 6-7: These lines refer to unimplemented options. They should not be
+ changed.
+
+Lines 8: Identifies the output device for messages and reports. The first
+ word of the line must be on of the following keywords TERMINAL,
+ REPORTFILE (or FILE), BOTH or NONE and we assume the meaning self
+ evident.
+
+Lines 9-13: These lines together define the syntax of the lines CLiP will
+ recognize. For an explanation of the CLiP syntax, refer to [Ammers
+ 1993].
+
+
+Lines 9: At most 6 characters to specify the "left comment string" i.e. the
+ opening sequence of a comment string of the programming language
+ you want to use. The characters cannot be letters (A-Z, a-z),
+ digits (0-9) or a dot (.).
+
+Lines 10: At most 6 characters to specify the "right comment string" i.e.
+ the closing sequence of a comment string of the programming
+ language you want to use. The characters cannot be letters (A-Z,
+ a-z), digits (0-9) or a dot (.).
+
+Lines 11: The character that is postfixed to a left comment string and
+ prefixed to a right comment string in order to identify it as a
+ special comment that CLiP has to process, a so called CLiP-line.
+ The character cannot be a letter (A-Z, a-z), a digits (0-9) or a
+ dot (.).
+
+Lines 12: The leading characters that identify a particular CLiP-line as the
+ end of a stub, i.e. a particular section that can be substituted
+ elsewhere.
+
+Lines 13: The character that identifies the options.
+
+Line 14: Relates to the modules in the module section below. The specified
+ modules must either be extracted or omitted and the first word of
+ this line can only be OMITTED or EXTRACTED.
+
+Line 15: Starts the section defining the file that mirrors the extraction
+ process. This line should be copied literally.
+
+Line 16: Path and file specification of the report file.
+
+Line 17: Starts the section defining the input files for the extraction
+ process, the so called source files. This line should be copied
+ literally.
+
+Line 18-19: Every line specifies a path and source file. There may be up to 64
+ lines in this section.
+
+Line 20: Starts the section defining the modules that are considered during
+ the extraction process. Whether the modules are extracted or
+ omitted depends on line 14. This line should be copied literally.
+
+Line 21-24: Every line pair specifies a path and a module file. There may be
+ up to 64 pairs (128 lines) in this section.
+
+Line 25: Starts the section to identify the default directory for modules,
+ i.e. the directory where modules go to that have no explicit
+ directory specified by the MODULES section. This line should be
+ copied literally.
+
+Line 26: Default directory for extracted modules.
+
+Line 27: Identifies the end of the INI-file. This line should be copied
+ literally.
+
+
+7 Bugs, work-arounds and undocumented features
+
+7.1 "SP_EXTR_STR: system failure .... call maintenance"
+
+This failure may happen if the stubs have not been correctly closed with the
+END-STRING that has been specified as the syntax. The default value of this
+string is "ENDOF". Also the line containing the END-STRING should be properly
+closed. For example in a Pascal situation
+
+ (********* End of module (2.1) ***)
+
+should be all right, but
+
+ (****** End of module (2.1) **)
+
+may give trouble since the string "**)" is incorrect here.
+
+7.2 Options in general
+
+Several options have been introduces with very advanced applications in mind.
+They have hardly been tested will probably not work. You won't need them
+either. For this reason don't use the options OVERRULE, SEPARATOR and TRAILER.
+
+7.3 Multiple option
+
+A slot with the "MULTIPLE" option raises an error if no stubs are found
+matching the slot. To prevent this error message one should specify the option
+"OPTIONAL" also for the slot.
+
+7.4 Report file option NONE
+
+This option to suppress the printing of reports to the terminal has not been
+implemented. It will be eliminated in some later version.
+
+7.5 Generating target modules
+
+7.5.1 Specification
+
+If CLIP.INI specifies a target module that matches no file-option argument
+anywhere in the list of specified source files, CLiP does not complain. The
+matching is case sensitive and for instance a file-option argument
+
+ (********** #file "EXAMPLE.PAS" ***********************)
+
+does not fit a module specification in CLIP.INI of the form
+
+ Example.PAS
+
+This may lead to unpleasant surprises.
+ On MS-DOS and VAX/VMS platforms the specification of files is not context
+sensitive. For this reason the CLIP_1 program (which is available for the
+MS-DOS and VAX/VMS versions of CLiP) converts those names to upper case in the
+INI-file it creates. Thus the file-option arguments in the source files should
+definitely be specified in upper case too.
+ In a Unix environment a file name is case sensitive indeed. Currently no
+CLIP_1 exists for Unix and an INI-file has to be created by means of the
+short-cut routine CLP (or directly by means of an editor, cf. section 6). No
+conversion is performed in this case and one has to make sure the file-option
+argument is identical to the corresponding name in the INI-file.
+
+
+7.5.2 Omitted modules
+
+If modules are specified for being OMITTED at extraction time, it will be
+omitted independent of the path that may have been specified. The module will
+never be generated.
+
+7.5.3 Empty run
+
+CLiP does not always recognize a corrupted INI-file. Thus if you run CLiP and
+it produces a report of the form
+
+ ============================ CLiP version 2.1 ==========================
+
+ ============================ Busy scanning =============================
+ Scanning file: ..................
+ .................................
+
+ ============================ End scanning ==============================
+
+ ============================ Busy analysing ============================
+
+ ============================ End analysing =============================
+
+ ============================ Busy generating ===========================
+
+ ============================ End generating ============================
+ Used (CPU) time :5.88 Sec.
+ See you next time !
+
+then you start checking the specifications of the target modules, since this is
+the most likely source of trouble. Keep in mind however, that the problem may
+be also arise due to a corrupted INI-file.
+
+7.6 Lost lines
+
+If you have stubs of the form
+
+ (****************** GEN_POOL global routines ********************)
+ (******************************************************************)
+ (* routine: write_string .... *)
+ (* ................... *)
+ (******************************************************************)
+
+you will see that the second line of the stub (the "starred" line) is not
+generated in the target modules. For this reason it is better to put an
+additional empty line in between. For example the following stub will be
+extracted correctly.
+
+ (****************** GEN_POOL global routines ********************)
+
+ (******************************************************************)
+ (* routine: write_string .... *)
+ (* ................... *)
+ (******************************************************************)
+
+
+7.7 DOS version only
+
+If you activate the PROJECT/Load INI-file or PROJECT/Save INI-file menu of the
+CLIP_1 program and you specify an illegal drive in the Current Directory
+option, you may hang the system. For instance a drive specification preceeded
+by a space will produce this bug.
+
+
+8 References
+
+Ammers E.W. van, M.R. Kramer (1993), The CLiP Style of Literate Programming
+ (submitted for publication). Anonymously ftp-able as CLIP_STYLE.PS,
+ CLIP_STYLE_A.PS and CLIP_STYLE_B.PS from directory CLIP on
+ sun01.info.wau.nl.
+
+Ammers E.W. van, Kramer M.R. (1992), VAMP: A Tool for Literate Programming
+ Independent of Programming Language and Formatter. CompEuro '92
+ Proceedings, May 4-8 1992, the Hague, pg. 371-376.
+
+Knuth D.E. (1984). Literate Programming. The Computer Journal 27, 2, 97-111.
diff --git a/web/clip/ms_dos/modula.ini b/web/clip/ms_dos/modula.ini
new file mode 100644
index 0000000000..892efa30b0
--- /dev/null
+++ b/web/clip/ms_dos/modula.ini
@@ -0,0 +1,21 @@
+This file contains data that is needed to run CLiP
+And is generated by CLiP_MENU
+Modifying this file at own risk.
+Using CLiP_MENU is definitely recommended.
+
+INTERACTIVE_MODE Mode (INTERACTIVE/DEBUG/HELPFUL/AUTO)
+YES Interactive fault correction (YES/NO)
+BOTH Error message destination (TERMINAL/REPORTFILE/BOTH/NONE)
+(* Left comment string
+*) Right comment string
+* Command character
+ENDOF END string
+# Option marker
+OMITTED The specified modules are (OMITTED/EXTRACTED)
+------------ REPORT FILE -----------
+CLIP.RPT
+------------ INPUT FILES -----------
+------------ MODULES ---------------
+------------ MODULE DIRECTORY ------
+
+------------ END OF INI FILE -------
diff --git a/web/clip/ms_dos/pascal.ini b/web/clip/ms_dos/pascal.ini
new file mode 100644
index 0000000000..892efa30b0
--- /dev/null
+++ b/web/clip/ms_dos/pascal.ini
@@ -0,0 +1,21 @@
+This file contains data that is needed to run CLiP
+And is generated by CLiP_MENU
+Modifying this file at own risk.
+Using CLiP_MENU is definitely recommended.
+
+INTERACTIVE_MODE Mode (INTERACTIVE/DEBUG/HELPFUL/AUTO)
+YES Interactive fault correction (YES/NO)
+BOTH Error message destination (TERMINAL/REPORTFILE/BOTH/NONE)
+(* Left comment string
+*) Right comment string
+* Command character
+ENDOF END string
+# Option marker
+OMITTED The specified modules are (OMITTED/EXTRACTED)
+------------ REPORT FILE -----------
+CLIP.RPT
+------------ INPUT FILES -----------
+------------ MODULES ---------------
+------------ MODULE DIRECTORY ------
+
+------------ END OF INI FILE -------
diff --git a/web/clip/ms_dos/read_me.ps b/web/clip/ms_dos/read_me.ps
new file mode 100644
index 0000000000..9d84e121c6
--- /dev/null
+++ b/web/clip/ms_dos/read_me.ps
@@ -0,0 +1,1812 @@
+%!PS-Adobe-2.0
+%%DocumentFonts: (atend)
+%%Title: F:\\LPT\\DOS\\READ_ME.DOC
+%%Creator: Lotus Manuscript
+%%For: Eric W. van Ammers
+%%CreationDate: November 17, 1993
+%%Pages: (atend)
+%%BoundingBox: 0 0 595 841
+%%EndComments
+% PostScript Prologue (initialization) for Manuscript
+% Copyright (c) 1985,1986,1987,1988 Lotus Development Corporation
+% There is no user servicable code in this file.
+
+% set timeouts to infinite
+statusdict begin
+0 setjobtimeout
+/manualfeedtimeout 3600 def
+/waittimeout 0 def
+end
+
+% correct bug correction in rev 41.0
+/idiv{div cvi}bind def
+
+% define User Dictionary
+/msdict 300 dict def msdict begin
+/bd{bind def}bind def
+
+% Define commonly used things
+/delay{usertime 5000 add{dup usertime lt{pop exit}if}loop}bd
+/mfeed{statusdict begin /manualfeed true def end}bd
+/afeed{statusdict begin /manualfeed false def end}bd
+/bfeed{ afeed statusdict begin /setpapertray where
+ {pop setpapertray}{pop} ifelse end}bd
+
+/dpi{0.24 dup scale}bd
+
+% These two are called for each page
+/inpage false def
+/begpage{save dpi /inpage true def}bd
+/endpage{inpage {restore showpage}if }bd
+
+% for possible banner
+/fileinfo {pop pop pop}bd
+/enddocument {end} bd
+
+% these are also used by eqn & gmf
+/ld{load def}bd
+/x/exch ld
+/cu{300 mul 72 div}bd
+/m/moveto ld
+/t/translate ld
+/rm/rmoveto ld
+/cp/currentpoint ld
+/st/stroke ld
+/ln/lineto ld
+/rlt/rlineto ld
+/slw/setlinewidth ld
+
+/ff/findfont ld
+/scf/scalefont ld
+/sf/setfont ld
+/fs{x /pt x def ff pt cu scf sf}bd
+
+% linedraw
+/li{4 2 roll setlinewidth 3 1 roll moveto 0.0 rlineto st}bd
+
+% outline factor
+/olwid 40.0 def
+% stroke width for outline
+/uoslw {pt cu x div slw}bd
+% relative horizontal move
+/xm{x currentpoint pop sub 0.0 rmoveto}bd
+
+% The basic show
+/s/show ld
+% move horizontal and show
+/ms{xm s}bd
+
+% variations
+% outline show - first printer attribute
+/ppss{dup cp 3 -1 roll false charpath st
+x 3 -1 roll stringwidth pop add x moveto}bd
+/pss{olwid uoslw { ( ) dup 0 4 -1 roll put ppss}forall}bd
+/ps{pss}bd
+/mps{xm ps}bd
+
+% graybox show - second printer attribute
+/gb{cp 3 -1 roll pt cu dup 4 div neg 0 x rm dup 0 x rlt x 0 rlt
+neg 0 x rlt closepath currentgray .9 setgray fill setgray m}bd
+/usi{dup stringwidth pop gb}bd
+/us{usi s}bd
+/xum{x cp pop sub dup gb 0 rmoveto}bd
+
+% combinations of PD1 and PD2
+/ups{usi pss}bd
+/mups{xm ups}bd
+/mus{xm us}bd
+
+% define a new encoding vector (code page 850 based)
+/PC 256 array def
+StandardEncoding PC copy pop
+
+/dotaccent/bullet
+/quotesingle/quotedblleft/quotedblright/quotesinglbase
+/quotedblbase/guilsinglleft/guilsinglright/.notdef
+/ellipsis/perthousand/.notdef/.notdef/paragraph/section/dagger/daggerdbl
+/OE/oe/fi/fl/endash/emdash/fraction/Ydieresis
+PC 6 26 getinterval astore pop
+
+/Ccedilla/udieresis/eacute/acircumflex/adieresis/agrave/aring/ccedilla
+/ecircumflex/edieresis/egrave/idieresis/icircumflex/igrave/Adieresis/Aring
+/Eacute/ae/AE/ocircumflex/odieresis/ograve/ucircumflex/ugrave
+/ydieresis/Odieresis/Udieresis/oslash/sterling/Oslash/.notdef/florin
+/aacute/iacute/oacute/uacute/ntilde/Ntilde/ordfeminine/ordmasculine
+/questiondown/.notdef/.notdef/onehalf/onequarter/exclamdown/guillemotleft/guillemotright
+/.notdef/.notdef/.notdef/.notdef/.notdef/Aacute/Acircumflex/Agrave
+/.notdef/.notdef/.notdef/.notdef/.notdef/cent/yen/.notdef
+/.notdef/grave/.notdef/circumflex/tilde/.notdef/atilde/Atilde
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/currency
+/eth/Eth/Ecircumflex/Edieresis/Egrave/dotlessi/Iacute/Icircumflex
+/Idieresis/.notdef/.notdef/.notdef/.notdef/brokenbar/Igrave/.notdef
+/Oacute/germandbls/Ocircumflex/Ograve/otilde/Otilde/.notdef/thorn
+/Thorn/Uacute/Ucircumflex/Ugrave/yacute/Yacute/.notdef/acute
+/.notdef/.notdef/.notdef/threequarters/paragraph/section/.notdef/cedilla
+/ring/dieresis/periodcentered/onesuperior/threesuperior/twosuperior/.notdef/.notdef
+
+PC 128 128 getinterval astore pop
+
+% duplicate fonts with a new encoding vector
+/recd 5 dict def
+/pcft
+{recd begin
+/ncs PC def /nfn x def
+/bfn x def /bfd bfn findfont def
+/nf bfd maxlength dict def
+bfd{x dup dup /FID ne x /Encoding ne and
+{x nf 3 1 roll put}{pop pop}ifelse
+}forall
+nf/FontName nfn put
+nf/Encoding ncs put
+nfn nf definefont pop
+end}bd
+
+/fs{x /pt x def ff pt cu scf sf}bd
+
+% used by eqn
+/Times-Roman/TR pcft /Times-Bold/TRB pcft
+/Times-Italic/TRI pcft /Times-BoldItalic/TRBI pcft
+/Helvetica/HV pcft /Helvetica-Bold/HVB pcft
+/Helvetica-Oblique/HVO pcft /Helvetica-BoldOblique/HVBO pcft
+/Courier/CR pcft /Courier-Bold/CRB pcft
+/Sym{/Symbol fs}bd
+
+% Bit map image data decompression code
+/xx 0 def /yy 0 def
+/xbytes 0 def
+/lbuf 1200 string def /obuf 600 string def
+/bval <FFFEFCF8F0E0C080000103070F1F3F7F> def
+/blacks 96 string def /whites 96 string def
+0 1 95 {whites x 255 put} for
+
+/dispatch [
+{
+dup 47 le {32 sub 4 bitshift x pop 1}{
+dup 63 le {x pop 48 sub bval x get
+3 copy put x 1 add x 0} {
+dup 79 le {62 sub} {
+80 sub { 3 copy put x 1 add x } repeat 0
+}ifelse }ifelse }ifelse
+}bind
+{
+32 sub add
+3 copy put
+x 1 add x 0
+} bind
+{
+32 sub x pop add 255 0
+}bind
+{
+32 sub x pop
+3 copy getinterval
+whites 0 3 index getinterval
+x copy pop add 255 0
+}bind
+{
+32 sub x pop
+3 copy getinterval
+blacks 0 3 index getinterval
+x copy pop add 0 0
+}bind
+]def
+
+% read a raster line and unpack
+/readx{
+obuf 0 255 0
+currentfile lbuf readline pop
+{x dispatch x get exec} forall
+pop pop pop 0 xbytes getinterval}bd
+
+/mspic{
+/yy x def/xx x def
+/xbytes xx 8 idiv def
+xx yy 1 [xx 0 0 0 yy sub 0 yy]{readx}image}bd
+
+
+
+/Helvetica/fA pcft/FA{/fA fs}bd
+/Helvetica-Oblique/fAI pcft/FAI{/fAI fs}bd
+/Helvetica-Bold/fAB pcft/FAB{/fAB fs}bd
+/Helvetica-BoldOblique/fAIB pcft/FAIB{/fAIB fs}bd
+/Times-Roman/fB pcft/FB{/fB fs}bd
+/Times-Italic/fBI pcft/FBI{/fBI fs}bd
+/Times-Bold/fBB pcft/FBB{/fBB fs}bd
+/Times-BoldItalic/fBIB pcft/FBIB{/fBIB fs}bd
+/Courier/fQ pcft/FQ{/fQ fs}bd
+/Courier-Oblique/fQI pcft/FQI{/fQI fs}bd
+/Courier-Bold/fQB pcft/FQB{/fQB fs}bd
+/Courier-BoldOblique/fQIB pcft/FQIB{/fQIB fs}bd
+(F:\\LPT\\DOS\\READ_ME.DOC)(Eric W. van Ammers)(November 17, 1993)fileinfo
+%%EndProlog
+%%Page: 0 1
+begpage
+18 FAB
+731 2938 m
+(READ_ME for CLIP/MS_DOS)s
+12 FAB
+295 2588 m
+(1 Directory CLIP/MS_DOS)s
+12 FB
+295 2517 m
+(The)s
+385(directory)ms
+578(contains)ms
+757(the)ms
+831(files)ms
+389 2457 m
+(a.)s
+484(READ_ME.PS,)ms
+813(READ_ME.TXT)ms
+1172(\(this)ms
+1273(file\).)ms
+389 2397 m
+(b.)s
+484(CLIP_1.EXE,)ms
+777(CLIP_2.EXE,)ms
+1070(CLIPHELP.HLP,)ms
+1435(CLIP_MSG.DAT)ms
+1805(\(CLiP)ms
+1940(system\).)ms
+389 2337 m
+(c.)s
+484(CL.BAT,)ms
+686(CLP.BAT,)ms
+915(CLIP.BAT,)ms
+1161(CLP_ENV.BAT)ms
+1505(\(user)ms
+1618(support\).)ms
+389 2277 m
+(d.)s
+484(EX01_A.PS,)ms
+755(EX01_A.ASC,)ms
+1067(EX01_A.INI,)ms
+1352(EX01_A.PAS,)ms
+484 2217 m
+(EX01_B.PS,)s
+752(EX01_B.ASC,)ms
+1061(EX01_B.INI,)ms
+1343(EX01_B.PAS)ms
+1635(\(example\).)ms
+389 2157 m
+(e.)s
+484(ADA.INI,)ms
+698(C.INI,)ms
+838(FORTRAN.INI,)ms
+1177(LISP.INI,)ms
+1385(MODULA.INI,)ms
+1711(PASCAL.INI)ms
+1996(\(template)ms
+484 2097 m
+(INI-files)s
+669(for)ms
+740(some)ms
+858(languages\).)ms
+389 2037 m
+(f.)s
+484(MANUAL.PS,)ms
+796(MANUAL.TXT)ms
+1138(\(manual\).)ms
+295 1977 m
+(File)s
+385(extensions:)ms
+389 1917 m
+(PS-files)s
+560(are)ms
+633(postscript)ms
+840(files)ms
+939(and)ms
+1024(represent)ms
+1220(the)ms
+1294(type-set)ms
+1465(versions)ms
+1644(of)ms
+1698(the)ms
+1772(corresponding)ms
+2071(ASC-)ms
+389 1857 m
+(or)s
+443(TXT-files.)ms
+389 1797 m
+(ASC-files)s
+600(are)ms
+673(derived)ms
+835(by)ms
+896(ASCII-export)ms
+1183(from)ms
+1292(the)ms
+1365(original)ms
+1532(word-processor)ms
+1855(files)ms
+1953(\(in)ms
+2020(our)ms
+2098(case)ms
+389 1737 m
+(Lotus)s
+515(Manuscript\).)ms
+389 1677 m
+(TXT-files)s
+601(are)ms
+674(ASCII)ms
+816(versions)ms
+995(of)ms
+1049(the)ms
+1122(corresponding)ms
+1420(PS-files.)ms
+1603(They)ms
+1718(are)ms
+1791(slightly)ms
+1953(modified)ms
+2146(to)ms
+389 1617 m
+(improve)s
+574(the)ms
+655(lay-out.)ms
+828(TXT-files)ms
+1048(are)ms
+1128(a)ms
+1169(service)ms
+1330(for)ms
+1408(people)ms
+1561(who)ms
+1666(have)ms
+1780(no)ms
+1849(easy)ms
+1957(access)ms
+2104(to)ms
+2162(a)ms
+389 1557 m
+(postscript)s
+595(printer.)ms
+12 FAB
+295 1428 m
+(2 Installing CLiP)s
+12 FB
+389 1357 m
+(a.)s
+484(Use)ms
+588(FTP)ms
+699(to)ms
+764(copy)ms
+886(the)ms
+973(CLiP)ms
+1104(system)ms
+1269(to)ms
+1333(your)ms
+1450(local)ms
+1573(site.)ms
+1681(Note)ms
+1803(that)ms
+1904(CLIP_1.EXE,)ms
+484 1297 m
+(CLIP_2.EXE)s
+765(and)ms
+849(CLIPHELP.HLP)ms
+1202(should)ms
+1348(be)ms
+1408(FTP-ed)ms
+1570(in)ms
+1622(binary)ms
+1762(mode.)ms
+389 1237 m
+(b.)s
+484(Create)ms
+641(a)ms
+690(directory)ms
+897(for)ms
+982(the)ms
+1069(CLiP-system.)ms
+1370(This)ms
+1485(directory)ms
+1692(will)ms
+1797(be)ms
+1870(referred)ms
+2055(as)ms
+2123(the)ms
+484 1177 m
+(CLIP_DIR.)s
+728(Let)ms
+808(us)ms
+865(assume)ms
+1024(this)ms
+1109(directory)ms
+1302(is)ms
+578 1117 m
+(C:\\CLIP)s
+389 1057 m
+(c.)s
+484(Copy)ms
+605(the)ms
+679(files)ms
+578 997 m
+(CLIPHELP.HLP,)s
+943(CLIP_1.EXE,)ms
+1236(CLIP_2.EXE)ms
+1516(and)ms
+1601(CLIP_MSG.DAT)ms
+484 937 m
+(to)s
+535(the)ms
+609(CLIP_DIR.)ms
+389 877 m
+(d.)s
+484(Copy)ms
+605(the)ms
+678(files)ms
+578 817 m
+(CL.BAT,)s
+779(CLP.BAT,)ms
+1008(CLIP.BAT,)ms
+1254(CLP_ENV.BAT)ms
+484 757 m
+(to)s
+538(the)ms
+614(directory)ms
+810(that)ms
+901(contains)ms
+1083(your)ms
+1190(batch)ms
+1314(files)ms
+1415(\(this)ms
+1520(directory)ms
+1716(is)ms
+1764(assumed)ms
+1952(to)ms
+2006(be)ms
+2069(in)ms
+2123(the)ms
+484 697 m
+(PATH)s
+627(definition)ms
+834(of)ms
+888(the)ms
+961(AUTOEXEC.BAT\).)ms
+389 637 m
+(e.)s
+484(If)ms
+529(the)ms
+601(name)ms
+721(of)ms
+773(your)ms
+876(CLIP_DIR)ms
+1107(differs)ms
+1249(from)ms
+1357(the)ms
+1429(name)ms
+1549("C:\\CLIP")ms
+1770(as)ms
+1823(suggested)ms
+2032(in)ms
+2082(point)ms
+484 577 m
+(2.a,)s
+569(the)ms
+643(batch)ms
+763(files)ms
+578 517 m
+(CL.BAT,)s
+779(CLP.BAT)ms
+996(and)ms
+1080(CLIP.BAT)ms
+484 457 m
+(have)s
+591(to)ms
+642(be)ms
+702(adjusted.)ms
+894(That)ms
+998(is)ms
+1045(the)ms
+1118(string)ms
+1245("C:\\CLIP")ms
+1468(has)ms
+1547(to)ms
+1599(be)ms
+1659(replaced)ms
+1841(by)ms
+1904(a)ms
+1939(string)ms
+2065(repre-)ms
+484 397 m
+(senting)s
+640(the)ms
+714(correct)ms
+865(name)ms
+986(of)ms
+1040(your)ms
+1144(CLIP_DIR.)ms
+8 FB
+295 145 m
+(READ_ME)s
+460(for)ms
+507(CLIP/MS_DOS)ms
+729(\(READ_ME.DOC,)ms
+993(2.106,)ms
+1084(November 17, 1993\))ms
+12 FB
+2100 145 m
+(1)s
+50 2 2130 157 li
+50 2 2045 157 li
+endpage
+%%Page: 1 2
+begpage
+12 FAB
+295 3136 m
+(3 A quick installation test)s
+12 FB
+295 3064 m
+(To)s
+363(have)ms
+470(a)ms
+505(partial)ms
+645(test)ms
+727(\(it)ms
+785(does)ms
+889(not)ms
+966(check)ms
+1095(CLIP_1\))ms
+1283(to)ms
+1334(see)ms
+1411(if)ms
+1454(your)ms
+1559(CLiP)ms
+1677(system)ms
+1829(has)ms
+1908(been)ms
+2015(properly)ms
+295 3004 m
+(installed,)s
+489(perform)ms
+663(the)ms
+736(following)ms
+943(steps:)ms
+389 2944 m
+(a.)s
+484(Choose)ms
+647(a)ms
+681(test)ms
+763(directory)ms
+956(and)ms
+1041(make)ms
+1162(it)ms
+1202(current.)ms
+1369(Let)ms
+1448(us)ms
+1505(assume)ms
+1665("C:\\TEST".)ms
+389 2884 m
+(b.)s
+484(Copy)ms
+643(the)ms
+756(files)ms
+893(EX01_A.ASC,)ms
+1244(EX01_B.ASC,)ms
+1592(EX01_A.INI,)ms
+1915(EX02_B.INI,)ms
+484 2824 m
+(EX01_A.PAS)s
+778(and)ms
+863(EX01_B.PAS)ms
+1155(to)ms
+1206(this)ms
+1291(test)ms
+1373(directory.)ms
+389 2764 m
+(c.)s
+484(Type)ms
+599(the)ms
+673(command)ms
+578 2704 m
+(>CL)s
+682(EX01_A.INI)ms
+484 2644 m
+(to)s
+542(produce)ms
+722(the)ms
+803(file)ms
+889(PALINDRO.PAS.)ms
+1278(Note)ms
+1394(that)ms
+1489(EX01_A.INI)ms
+1768(specifies)ms
+1962(the)ms
+2043(current)ms
+484 2584 m
+(directory)s
+677(for)ms
+747(the)ms
+821(source)ms
+964(files)ms
+1063(as)ms
+1117(well)ms
+1215(as)ms
+1269(for)ms
+1340(the)ms
+1414(target)ms
+1540(modules.)ms
+389 2524 m
+(d.)s
+484(Compare)ms
+680(the)ms
+753(file)ms
+833(PALINDRO.PAS)ms
+1202(with)ms
+1303(EX01_A.PAS)ms
+1598(by)ms
+1660(means)ms
+1801(of)ms
+1855(the)ms
+1928(command)ms
+578 2464 m
+(>COMP)s
+760(PALINDRO.PAS)ms
+1129(EX01_A.PAS)ms
+484 2404 m
+(There)s
+613(should)ms
+758(be)ms
+818(no)ms
+881(differences.)ms
+389 2344 m
+(e.)s
+484(Now)ms
+594(type)ms
+693(the)ms
+766(command)ms
+578 2284 m
+(>CL)s
+682(EX01_B.INI)ms
+484 2224 m
+(to)s
+535(produce)ms
+708(a)ms
+743(new)ms
+839(file)ms
+918(PALINDRO.PAS.)ms
+389 2164 m
+(f.)s
+484(Compare)ms
+679(the)ms
+753(new)ms
+849(PALINDRO.PAS)ms
+1218(with)ms
+1320(EX01_B.PAS)ms
+578 2104 m
+(>COMP)s
+760(PALINDRO.PAS)ms
+1129(EX01_B.PAS)ms
+484 2044 m
+(Again)s
+618(there)ms
+731(should)ms
+877(be)ms
+936(no)ms
+999(differences.)ms
+12 FAB
+295 1916 m
+(4 What you should know)s
+12 FB
+295 1844 m
+(The)s
+385(complete)ms
+581(system)ms
+732(executes)ms
+917(in)ms
+968(two)ms
+1056(passes.)ms
+389 1784 m
+(The)s
+482(second)ms
+637(pass,)ms
+751(CLIP_2.EXE,)ms
+1047(performs)ms
+1243(the)ms
+1320(actual)ms
+1455(module)ms
+1621(extraction.)ms
+1849(It)ms
+1896(is)ms
+1945(guided)ms
+2097(by)ms
+2162(a)ms
+295 1724 m
+(file,)s
+386(CLIP.INI,)ms
+602(which)ms
+737(tells)ms
+833(it)ms
+873(literally)ms
+1041(everything)ms
+1268(it)ms
+1308(has)ms
+1388(to)ms
+1439(know)ms
+1563(in)ms
+1614(order)ms
+1733(to)ms
+1784(perform)ms
+1958(a)ms
+1993(run.)ms
+2085(Thus)ms
+295 1664 m
+(CLIP.INI)s
+497(specifies)ms
+685(to)ms
+736(CLIP_2.EXE:)ms
+389 1604 m
+(-)s
+484(the)ms
+558(files)ms
+656(it)ms
+697(has)ms
+776(to)ms
+827(read)ms
+926(\(i.e.)ms
+1016(the)ms
+1090(source)ms
+1233(files\),)ms
+389 1544 m
+(-)s
+484(the)ms
+558(modules)ms
+740(it)ms
+780(should)ms
+926(extract)ms
+1074(\(i.e.)ms
+1165(target)ms
+1291(modules\),)ms
+389 1484 m
+(-)s
+484(the)ms
+558(report)ms
+690(file,)ms
+389 1424 m
+(-)s
+484(the)ms
+561(syntax)ms
+708(of)ms
+765(the)ms
+842(CLiP-lines)ms
+1075(\(i.e.)ms
+1168(the)ms
+1245(lines)ms
+1355(which)ms
+1493(trigger)ms
+1643(the)ms
+1720(module)ms
+1885(extraction)ms
+2101(pro-)ms
+484 1364 m
+(cess\).)s
+295 1304 m
+(CLIP.INI)s
+496(is)ms
+541(a)ms
+574(straight)ms
+735(forward)ms
+905(ASCII-file.)ms
+1142(Its)ms
+1203(fairly)ms
+1323(simple)ms
+1467(structure)ms
+1654(is)ms
+1698(explained)ms
+1904(in)ms
+1954(section)ms
+2107(6)ms
+2143(of)ms
+295 1244 m
+(the)s
+368(manual.)ms
+389 1184 m
+(The)s
+477(responsibility)ms
+759(of)ms
+812(the)ms
+883(first)ms
+974(pass)ms
+1071(of)ms
+1123(the)ms
+1195(CLiP-system,)ms
+1479(CLIP_1.EXE,)ms
+1770(is)ms
+1814(purely)ms
+1952(to)ms
+2001(construct)ms
+295 1124 m
+(an)s
+355(appropriate)ms
+597(INI-file)ms
+763(for)ms
+835(the)ms
+909(task)ms
+1003(you)ms
+1092(want)ms
+1203(CLIP_2)ms
+1375(to)ms
+1427(perform.)ms
+1614(More)ms
+1736(often)ms
+1852(than)ms
+1952(not)ms
+2029(the)ms
+2104(first)ms
+295 1064 m
+(pass)s
+393(can)ms
+475(be)ms
+535(short-cut)ms
+725(and)ms
+810(several)ms
+964(batch)ms
+1085(files)ms
+1183(are)ms
+1257(supplied)ms
+1439(for)ms
+1509(this)ms
+1594(reason)ms
+1737(\(see)ms
+1830(section)ms
+1984(5\).)ms
+12 FAB
+295 936 m
+(5 Using CLiP ...)s
+12 FB
+295 864 m
+(The)s
+385(batch)ms
+505(procedures)ms
+737(below)ms
+871(are)ms
+945(designed)ms
+1135(to)ms
+1186(make)ms
+1307(your)ms
+1410(working)ms
+1589(directories)ms
+1813(independent)ms
+2069(of)ms
+2123(the)ms
+295 804 m
+(CLIP_DIR.)s
+542(Remark)ms
+716(that)ms
+807(the)ms
+884(original)ms
+1055(batch)ms
+1180(files)ms
+1281(assume)ms
+1444(that)ms
+1535(your)ms
+1643(CLIP_DIR)ms
+1878(is)ms
+1927(the)ms
+2004(directory)ms
+295 744 m
+("C:\\CLIP".)s
+10 FAB
+295 647 m
+(5.1 ... via CLIP.BAT)s
+12 FB
+295 582 m
+(CLIP.BAT)s
+528(performs)ms
+720(the)ms
+794(complete)ms
+990(cycle)ms
+1107(to)ms
+1159(define)ms
+1296(and)ms
+1380(execute)ms
+1545(a)ms
+1580(run)ms
+1659(of)ms
+1713(CLiP.)ms
+1843(Thus)ms
+1955(both)ms
+2057(passes)ms
+295 522 m
+(of)s
+347(CLiP)ms
+464(are)ms
+537(executed)ms
+726(by)ms
+787(this)ms
+871(command.)ms
+1092(The)ms
+1181(procedure)ms
+1392(gives)ms
+1509(the)ms
+1581(user)ms
+1676(complete)ms
+1870(control)ms
+2023(over)ms
+2123(the)ms
+295 462 m
+(extraction)s
+505(process)ms
+665(and)ms
+748(supplies)ms
+922(context)ms
+1080(sensitive)ms
+1265(HELP)ms
+1401(when)ms
+1519(asked.)ms
+1656(The)ms
+1744(procedure)ms
+1955(works)ms
+2087(most)ms
+295 402 m
+(comfortable)s
+549(when)ms
+669(a)ms
+704(mouse)ms
+847(is)ms
+893(available.)ms
+295 342 m
+(PROJECT)s
+515(menu)ms
+635(allows)ms
+775(your)ms
+876(to)ms
+924(LOAD)ms
+1072(an)ms
+1129(already)ms
+1285(existing)ms
+1453(INI-file)ms
+1615(or)ms
+1666(to)ms
+1714(SAVE)ms
+1854(the)ms
+1924(one)ms
+2006(you)ms
+2090(have)ms
+484 282 m
+(defined)s
+646(so)ms
+703(far.)ms
+783(In)ms
+838(addition)ms
+1014(you)ms
+1101(can)ms
+1183(start)ms
+1282(the)ms
+1356(extraction)ms
+1568(process)ms
+1730(from)ms
+1840(here.)ms
+8 FB
+295 145 m
+(READ_ME)s
+460(for)ms
+507(CLIP/MS_DOS)ms
+729(\(READ_ME.DOC,)ms
+993(2.106,)ms
+1084(November 17, 1993\))ms
+12 FB
+2100 145 m
+(2)s
+50 2 2130 157 li
+50 2 2045 157 li
+endpage
+%%Page: 2 3
+begpage
+12 FB
+295 3139 m
+(SETTINGS/SOURCEFILES)s
+888(allows)ms
+1032(you)ms
+1120(to)ms
+1172(define)ms
+1310(the)ms
+1384(sources)ms
+1547(files)ms
+1647(that)ms
+1735(CLiP)ms
+1854(has)ms
+1933(to)ms
+1985(include)ms
+2146(in)ms
+484 3079 m
+(the)s
+557(extraction)ms
+770(process.)ms
+945(The)ms
+1035(source)ms
+1178(files)ms
+1276(may)ms
+1375(reside)ms
+1507(in)ms
+1558(different)ms
+1743(directories.)ms
+295 3019 m
+(SETTINGS/TARGETMODULES)s
+1000(lets)ms
+1086(you)ms
+1178(specify)ms
+1339(which)ms
+1478(modules)ms
+1664(you)ms
+1755(want)ms
+1869(to)ms
+1925(be)ms
+1989(extracted.)ms
+484 2959 m
+(The)s
+575(names)ms
+716(of)ms
+771(modules)ms
+955(you)ms
+1043(put)ms
+1121(in)ms
+1173(the)ms
+1248(list)ms
+1323(are)ms
+1397(used)ms
+1503(either)ms
+1630(to)ms
+1683(identify)ms
+1852(the)ms
+1926(modules)ms
+2110(that)ms
+484 2899 m
+(have)s
+596(to)ms
+653(be)ms
+718(extracted)ms
+919(\(in)ms
+993(which)ms
+1133(case)ms
+1237(you)ms
+1330(set)ms
+1404(the)ms
+1483(radiobutton)ms
+1732(EXTRACTED\))ms
+2064(or)ms
+2123(the)ms
+484 2839 m
+(modules)s
+666(that)ms
+755(have)ms
+863(to)ms
+915(be)ms
+975(omitted)ms
+1142(during)ms
+1286(the)ms
+1360(extraction)ms
+1573(process)ms
+1737(\(in)ms
+1806(which)ms
+1941(case)ms
+2041(you)ms
+2129(set)ms
+484 2779 m
+(of)s
+545(course)ms
+695(the)ms
+775(radiobutton)ms
+1025(OMITTED\).)ms
+1299(The)ms
+1396(default)ms
+1554(is)ms
+1607(OMITTED)ms
+1851(which)ms
+1993(of)ms
+2054(course)ms
+484 2719 m
+(implies)s
+643(that)ms
+731(if)ms
+774(no)ms
+836(modules)ms
+1018(are)ms
+1092(listed,)ms
+1225(CLiP)ms
+1343(will)ms
+1434(extract)ms
+1582(every)ms
+1706(module)ms
+1868(it)ms
+1908(finds.)ms
+295 2659 m
+(SETTINGS/PARAMETERS)s
+888(refers)ms
+1015(partly)ms
+1145(to)ms
+1198(non)ms
+1286(implemented)ms
+1560(features.)ms
+1744(Therefore)ms
+1955(don't)ms
+2073(touch)ms
+484 2599 m
+(the)s
+563(CLIP_MOD)ms
+831(radiobuttons)ms
+1100(and)ms
+1190(forget)ms
+1328(about)ms
+1457(the)ms
+1537(INTERACTIVE)ms
+1886(FAULT)ms
+2065(COR-)ms
+484 2539 m
+(RECTION.)s
+725(If)ms
+771(you)ms
+859(want)ms
+969(error)ms
+1079(messages)ms
+1280(to)ms
+1332(be)ms
+1392(filed,)ms
+1509(you)ms
+1596(have)ms
+1703(to)ms
+1755(specify)ms
+1912(the)ms
+1986(report)ms
+2118(file)ms
+484 2479 m
+(in)s
+535(this)ms
+620(menu.)ms
+295 2419 m
+(SETTINGS/SYNTAX)s
+772(allows)ms
+928(you)ms
+1027(to)ms
+1091(change)ms
+1258(the)ms
+1344(appearance)ms
+1593(of)ms
+1660(the)ms
+1746(lines)ms
+1865(that)ms
+1965(trigger)ms
+2123(the)ms
+484 2359 m
+(CLiPping)s
+695(process.)ms
+874(By)ms
+949(LOADing)ms
+1168(an)ms
+1232(appropriate)ms
+1476(INI-file)ms
+1646(\(like)ms
+1754(PASCAL.INI,)ms
+2057(C.INI,)ms
+484 2299 m
+(MODULA.INI)s
+794(or)ms
+845(FORTRAN.INI\))ms
+1186(you)ms
+1271(have)ms
+1374(an)ms
+1431(adequate)ms
+1618(suggestion)ms
+1841(for)ms
+1909(that)ms
+1993(particular)ms
+484 2239 m
+(language.)s
+689(The)ms
+779(choice)ms
+922(SHOW)ms
+1082(SYNTAX)ms
+1297(displays)ms
+1474(the)ms
+1547(way)ms
+1643(CLiP)ms
+1761(lines)ms
+1868(will)ms
+1958(look.)ms
+10 FAB
+295 2142 m
+(5.2 ... via CLP.BAT and CLP_ENV.BAT)s
+12 FB
+295 2077 m
+(This)s
+396(procedure)ms
+609(can)ms
+691(be)ms
+751(used)ms
+855(in)ms
+907(a)ms
+942(situation)ms
+1127(where)ms
+1262(on)ms
+1324(wants)ms
+1454(to)ms
+1505(extract)ms
+1654(all)ms
+1717(the)ms
+1791(modules)ms
+1973(from)ms
+2083(up)ms
+2146(to)ms
+295 2017 m
+(nine)s
+394(source)ms
+538(files.)ms
+651(The)ms
+742(source)ms
+886(files)ms
+986(are)ms
+1060(passed)ms
+1207(as)ms
+1263(parameters.)ms
+1508(CLP.BAT)ms
+1726(creates)ms
+1878(a)ms
+1914(CLIP.INI)ms
+2118(file)ms
+295 1957 m
+(and)s
+379(starts)ms
+497(the)ms
+571(CLIP_2)ms
+742(program)ms
+924(afterwards.)ms
+389 1897 m
+(All)s
+464(setting)ms
+608(are)ms
+681(assumed)ms
+864(by)ms
+926(the)ms
+998(batch)ms
+1118(procedure.)ms
+1342(Originally)ms
+1558(it)ms
+1598(is)ms
+1642(tailored)ms
+1806(to)ms
+1857(Pascal)ms
+1996(programs)ms
+295 1837 m
+(of)s
+350(the)ms
+425(sort)ms
+514(displayed)ms
+720(in)ms
+773(the)ms
+848(example)ms
+1031(EX01)ms
+1162(\(i.e.)ms
+1253(the)ms
+1329(files)ms
+1429(EX01_?.*\))ms
+1661(on)ms
+1725(the)ms
+1800(directory)ms
+1994(CLIP.)ms
+2129(To)ms
+295 1777 m
+(adjust)s
+427(CLP.BAT)ms
+644(one)ms
+730(should)ms
+876(sufficiently)ms
+1117(understand)ms
+1349(the)ms
+1423(syntax)ms
+1567(of)ms
+1622(CLiP)ms
+1740([Ammers)ms
+1942(1993].)ms
+2085(Only)ms
+295 1717 m
+(modify)s
+451(the)ms
+525(lines)ms
+632(of)ms
+686(CLP.BAT)ms
+903(as)ms
+957(follows)ms
+389 1657 m
+(line)s
+476(16:)ms
+552(Replace)ms
+726("\(*")ms
+896(with)ms
+997(the)ms
+1071(COMM-START)ms
+1417(of)ms
+1471(your)ms
+1575(choice.)ms
+389 1597 m
+(line)s
+476(17:)ms
+552(Replace)ms
+726("*\)")ms
+896(with)ms
+997(the)ms
+1071(COMM-END)ms
+1361(of)ms
+1415(your)ms
+1519(choice.)ms
+389 1537 m
+(line)s
+476(18:)ms
+552(Replace)ms
+726("*")ms
+892(with)ms
+993(the)ms
+1067(CLIP-CHAR)ms
+1343(of)ms
+1397(your)ms
+1501(choice.)ms
+389 1477 m
+(line)s
+476(19:)ms
+552(Replace)ms
+726("ENDOF")ms
+983(with)ms
+1085(the)ms
+1158(END-STRING)ms
+1471(of)ms
+1525(your)ms
+1629(choice.)ms
+389 1417 m
+(line)s
+476(20:)ms
+552(Replace)ms
+726("#")ms
+892(with)ms
+993(the)ms
+1067(OPTION-MARKER)ms
+1493(of)ms
+1547(your)ms
+1651(choice.)ms
+389 1357 m
+(line)s
+476(23:)ms
+552(Replace)ms
+726("CLIP.RPT")ms
+992(with)ms
+1093(the)ms
+1167(report)ms
+1299(file)ms
+1378(name)ms
+1499(of)ms
+1553(your)ms
+1657(choice.)ms
+295 1297 m
+(Note)s
+412(that)ms
+508(the)ms
+590(characters)ms
+813("a"-"z",)ms
+989("A"-"Z",)ms
+1187("0"-"9")ms
+1356(and)ms
+1449(".")ms
+1523(do)ms
+1594(not)ms
+1678(qualify)ms
+1841(as)ms
+1903(characters)ms
+2126(for)ms
+295 1237 m
+(COMM-START,)s
+649(COMM-END,)ms
+948(CLIP-CHAR)ms
+1221(or)ms
+1272(OPTION-MARKER)ms
+1695(while)ms
+1815(the)ms
+1885(END-STRING)ms
+295 1177 m
+(should)s
+440(be)ms
+500(chosen)ms
+651(from)ms
+761(letters)ms
+896(only.)ms
+389 1117 m
+(If)s
+438(you)ms
+529(are)ms
+607(not)ms
+687(sure)ms
+787(of)ms
+845(your)ms
+953(modifications,)ms
+1256(you)ms
+1348(should)ms
+1497(compare)ms
+1686(the)ms
+1763(INI-file)ms
+1932(produced)ms
+2135(by)ms
+295 1057 m
+(CLP.BAT)s
+511(with)ms
+613(the)ms
+686(one)ms
+771(that)ms
+858(CLIP.BAT)ms
+1092(produces)ms
+1285(from)ms
+1394(the)ms
+1468(same)ms
+1583(set)ms
+1651(of)ms
+1706(preferences.)ms
+389 997 m
+(CLP.BAT)s
+614(must)ms
+732(know)ms
+864(the)ms
+946(directory)ms
+1147(of)ms
+1209(the)ms
+1291(source)ms
+1443(files)ms
+1550(and)ms
+1643(the)ms
+1725(directory)ms
+1926(of)ms
+1989(the)ms
+2071(target)ms
+295 937 m
+(modules.)s
+487(This)ms
+587(information)ms
+833(is)ms
+877(taken)ms
+996(from)ms
+1104(the)ms
+1176(environment)ms
+1439(variables)ms
+1630(CLIP_SRC)ms
+1868(and)ms
+1951(CLIP_TRG)ms
+295 877 m
+(that)s
+381(can)ms
+462(be)ms
+521(set)ms
+588(using)ms
+708(CLP_ENV.BAT.)ms
+1064(Note)ms
+1173(that)ms
+1259(the)ms
+1332(directories)ms
+1555(must)ms
+1664(be)ms
+1722(specified)ms
+1915(excluding)ms
+2123(the)ms
+295 817 m
+(trailing)s
+451(backslash.)ms
+671(For)ms
+753(example)ms
+484 757 m
+(>CLP_ENV)s
+756(D:)ms
+831(C:\\PROJECT\\PASCAL)ms
+295 697 m
+(defines)s
+451(the)ms
+524(home)ms
+647(directory)ms
+839(of)ms
+892(drive)ms
+1007(D:)ms
+1069(as)ms
+1122(source)ms
+1264(file)ms
+1343(directory)ms
+1535(while)ms
+1658(the)ms
+1731(subdirectory)ms
+1993(PASCAL)ms
+295 637 m
+(of)s
+349(directory)ms
+542(PROJECT)ms
+765(on)ms
+828(drive)ms
+943(C:)ms
+1003(will)ms
+1093(receive)ms
+1250(the)ms
+1324(extracted)ms
+1519(modules.)ms
+10 FAB
+295 539 m
+(5.3 ... via CL.BAT)s
+12 FB
+295 474 m
+(CL.BAT)s
+483(is)ms
+528(the)ms
+600(fastest)ms
+740(way)ms
+835(to)ms
+885(run)ms
+964(CLiP)ms
+1081(and)ms
+1165(will)ms
+1254(probably)ms
+1443(be)ms
+1502(invoked)ms
+1675(most)ms
+1784(often.)ms
+1911(It)ms
+1953(can)ms
+2034(be)ms
+2093(used)ms
+295 414 m
+(whenever)s
+503(an)ms
+563(INI-file)ms
+730(already)ms
+891(is)ms
+938(available.)ms
+1145(It)ms
+1189(copies)ms
+1330(the)ms
+1405(information)ms
+1655(of)ms
+1710(the)ms
+1785(specified)ms
+1979(INI-file)ms
+2146(to)ms
+295 354 m
+(CLIP.INI)s
+497(and)ms
+582(runs)ms
+681(the)ms
+754(CLIP_2)ms
+925(program.)ms
+389 294 m
+(The)s
+486(INI-file)ms
+658(to)ms
+717(be)ms
+783(used)ms
+895(is)ms
+948(passed)ms
+1100(as)ms
+1162(an)ms
+1228(optional)ms
+1412(parameter.)ms
+1644(If)ms
+1697(no)ms
+1766(INI-file)ms
+1939(is)ms
+1991(specified,)ms
+8 FB
+295 145 m
+(READ_ME)s
+460(for)ms
+507(CLIP/MS_DOS)ms
+729(\(READ_ME.DOC,)ms
+993(2.106,)ms
+1084(November 17, 1993\))ms
+12 FB
+2100 145 m
+(3)s
+50 2 2130 157 li
+50 2 2045 157 li
+endpage
+%%Page: 3 4
+begpage
+12 FB
+295 3139 m
+(CL.BAT)s
+483(simply)ms
+632(assumes)ms
+811(CLIP.INI.)ms
+1026(For)ms
+1108(example)ms
+484 3079 m
+(>CL)s
+588(EX01_A.INI)ms
+295 3019 m
+(will)s
+385(copy)ms
+495(the)ms
+568(file)ms
+647(EX01_A.INI)ms
+919(to)ms
+971(CLIP.INI)ms
+1174(and)ms
+1258(run)ms
+1337(CLIP_2.)ms
+1521(However)ms
+1717(the)ms
+1790(command)ms
+484 2959 m
+(>CL)s
+295 2899 m
+(immediately)s
+557(runs)ms
+656(CLIP_2)ms
+826(on)ms
+889(the)ms
+963(basis)ms
+1075(of)ms
+1129(an)ms
+1189(already)ms
+1349(existing)ms
+1519(CLIP.INI)ms
+1722(file.)ms
+12 FAB
+295 2771 m
+(6 Specimen INI-files)s
+12 FB
+295 2699 m
+(The)s
+400(files)ms
+514(ADA.INI,)ms
+745(C.INI,)ms
+901(FORTRAN.INI,)ms
+1256(LISP.INI,)ms
+1482(MODULA.INI)ms
+1811(and)ms
+1911(PASCAL.INI)ms
+295 2639 m
+(suggest)s
+459(a)ms
+495(suitable)ms
+664(CLiP)ms
+784(syntax)ms
+929(for)ms
+1001(a)ms
+1037(start.)ms
+1150(To)ms
+1220(customize)ms
+1436(such)ms
+1542(an)ms
+1603(INI-file)ms
+1770(run)ms
+1851(the)ms
+1926(CLiP)ms
+2046(system)ms
+295 2579 m
+(through)s
+470(CLIP.BAT.)ms
+723(Then)ms
+846(load)ms
+952(the)ms
+1033(proper)ms
+1183(INI-file)ms
+1356(and)ms
+1448(modify)ms
+1613(the)ms
+1694(syntax)ms
+1844(by)ms
+1914(means)ms
+2062(of)ms
+2123(the)ms
+295 2519 m
+(SETTINGS/SYNTAX)s
+760(menu)ms
+883(\(see)ms
+976(sect.)ms
+1079(5.1\).)ms
+12 FAB
+295 2391 m
+(7 References)s
+12 FB
+295 2319 m
+(Ammers)s
+480(E.W.)ms
+596(van,)ms
+693(M.R.)ms
+809(Kramer)ms
+975(\(1993\),)ms
+1134(The)ms
+1225(CLiP)ms
+1343(Style)ms
+1459(of)ms
+1514(Literate)ms
+1683(Programming)ms
+1971(\(submitted)ms
+389 2259 m
+(for)s
+467(publication\).)ms
+742(Anonymously)ms
+1046(ftp-able)ms
+1222(as)ms
+1284(CLIP_STYLE.PS,)ms
+1674(CLIP_STYLE_A.PS)ms
+2112(and)ms
+389 2199 m
+(CLIP_STYLE_B.PS)s
+816(from)ms
+926(directory)ms
+1119(CLIP)ms
+1240(on)ms
+1302(sun01.info.wau.nl.)ms
+8 FB
+295 145 m
+(READ_ME)s
+460(for)ms
+507(CLIP/MS_DOS)ms
+729(\(READ_ME.DOC,)ms
+993(2.106,)ms
+1084(November 17, 1993\))ms
+12 FB
+2100 145 m
+(4)s
+50 2 2130 157 li
+50 2 2045 157 li
+endpage
+%%Page: Contents-0 5
+begpage
+12 FAB
+1028 3136 m
+(Table of Contents)s
+12 FB
+295 3039 m
+(1 Directory CLIP/MS_DOS )s
+896(........................................................................................)ms
+2019 3039 m
+(1)s
+295 2939 m
+(2 Installing CLiP )s
+683(.........................................................................................................)ms
+2019 2939 m
+(1)s
+295 2839 m
+(3 A quick installation test )s
+858(...........................................................................................)ms
+2019 2839 m
+(2)s
+295 2739 m
+(4 What you should know )s
+846(............................................................................................)ms
+2019 2739 m
+(2)s
+295 2639 m
+(5 Using CLiP ... )s
+658(...........................................................................................................)ms
+2019 2639 m
+(2)s
+365 2589 m
+(5.1 ... via CLIP.BAT )s
+832(.............................................................................................)ms
+2019 2589 m
+(2)s
+365 2539 m
+(5.2 ... via CLP.BAT and CLP_ENV.BAT )s
+1245(............................................................)ms
+2019 2539 m
+(3)s
+365 2489 m
+(5.3 ... via CL.BAT )s
+782(.................................................................................................)ms
+2019 2489 m
+(3)s
+295 2389 m
+(6 Specimen INI-files )s
+746(....................................................................................................)ms
+2019 2389 m
+(4)s
+295 2289 m
+(7 References )s
+583(.................................................................................................................)ms
+2019 2289 m
+(4)s
+8 FB
+295 135 m
+(READ_ME for CLIP/MS_DOS \(READ_ME.DOC, 2.106, November 17, 1993\))s
+12 FB
+2111 135 m
+(i)s
+50 2 2130 147 li
+50 2 2056 147 li
+endpage
+%%Trailer
+enddocument
+%%Pages: 5
+%%DocumentFonts:
+%%+ Helvetica-Bold
+%%+ Times-Roman
+%%EOF
+ \ No newline at end of file
diff --git a/web/clip/ms_dos/read_me.txt b/web/clip/ms_dos/read_me.txt
new file mode 100644
index 0000000000..634de18349
--- /dev/null
+++ b/web/clip/ms_dos/read_me.txt
@@ -0,0 +1,191 @@
+
+ READ_ME for CLIP/MS_DOS
+ ***********************
+
+
+
+1 Directory CLIP/MS_DOS
+
+The directory contains the files
+ a. READ_ME.PS, READ_ME.TXT (this file).
+ b. CLIP_1.EXE, CLIP_2.EXE, CLIPHELP.HLP, CLIP_MSG.DAT (CLiP system).
+ c. CL.BAT, CLP.BAT, CLIP.BAT, CLP_ENV.BAT (user support).
+ d. EX01_A.PS, EX01_A.ASC, EX01_A.INI, EX01_A.PAS,
+ EX01_B.PS, EX01_B.ASC, EX01_B.INI, EX01_B.PAS (example).
+ e. ADA.INI, C.INI, FORTRAN.INI, LISP.INI, MODULA.INI, PASCAL.INI
+ (template INI-files for some languages).
+ f. MANUAL.PS, MANUAL.TXT (manual).
+File extensions:
+ PS-files are postscript files and represent the type-set versions of the
+ corresponding ASC- or TXT-files.
+ ASC-files are derived by ASCII-export from the original word-processor
+ files (in our case Lotus Manuscript).
+ TXT-files are ASCII versions of the corresponding PS-files. They are
+ slightly modified to improve the lay-out. TXT-files are a service for
+ people who have no easy access to a postscript printer.
+
+2 Installing CLiP
+
+ a. Use FTP to copy the CLiP system to your local site. Note that
+ CLIP_1.EXE, CLIP_2.EXE and CLIPHELP.HLP should be FTP-ed in binary
+ mode.
+ b. Create a directory for the CLiP-system. This directory will be
+ referred as the CLIP_DIR. Let us assume this directory is
+ C:\CLIP
+ c. Copy the files
+ CLIPHELP.HLP, CLIP_1.EXE, CLIP_2.EXE and CLIP_MSG.DAT
+ to the CLIP_DIR.
+ d. Copy the files
+ CL.BAT, CLP.BAT, CLIP.BAT, CLP_ENV.BAT
+ to the directory that contains your batch files (this directory is
+ assumed to be in the PATH definition of the AUTOEXEC.BAT).
+ e. If the name of your CLIP_DIR differs from the name "C:\CLIP" as
+ suggested in point 2.a, the batch files
+ CL.BAT, CLP.BAT and CLIP.BAT
+ have to be adjusted. That is the string "C:\CLIP" has to be replaced
+ by a string representing the correct name of your CLIP_DIR.
+
+3 A quick installation test
+
+To have a partial test (it does not check CLIP_1) to see if your CLiP system
+has been properly installed, perform the following steps:
+ a. Choose a test directory and make it current. Let us assume "C:\TEST".
+ b. Copy the files EX01_A.ASC, EX01_B.ASC, EX01_A.INI, EX02_B.INI,
+ EX01_A.PAS and EX01_B.PAS to this test directory.
+ c. Type the command
+ >CL EX01_A.INI
+ to produce the file PALINDRO.PAS. Note that EX01_A.INI specifies the
+ current directory for the source files as well as for the target
+ modules.
+
+
+ d. Compare the file PALINDRO.PAS with EX01_A.PAS by means of the command
+ >COMP PALINDRO.PAS EX01_A.PAS
+ There should be no differences.
+ e. Now type the command
+ >CL EX01_B.INI
+ to produce a new file PALINDRO.PAS.
+ f. Compare the new PALINDRO.PAS with EX01_B.PAS
+ >COMP PALINDRO.PAS EX01_B.PAS
+ Again there should be no differences.
+
+4 What you should know
+
+The complete system executes in two passes.
+ The second pass, CLIP_2.EXE, performs the actual module extraction. It is
+guided by a file, CLIP.INI, which tells it literally everything it has to know
+in order to perform a run. Thus CLIP.INI specifies to CLIP_2.EXE:
+ - the files it has to read (i.e. the source files),
+ - the modules it should extract (i.e. target modules),
+ - the report file,
+ - the syntax of the CLiP-lines (i.e. the lines which trigger the module
+ extraction process).
+CLIP.INI is a straight forward ASCII-file. Its fairly simple structure is
+explained in section 6 of the manual.
+ The responsibility of the first pass of the CLiP-system, CLIP_1.EXE, is
+purely to construct an appropriate INI-file for the task you want CLIP_2 to
+perform. More often than not the first pass can be short-cut and several batch
+files are supplied for this reason (see section 5).
+
+5 Using CLiP ...
+
+The batch procedures below are designed to make your working directories
+independent of the CLIP_DIR. Remark that the original batch files assume that
+your CLIP_DIR is the directory "C:\CLIP".
+
+5.1 ... via CLIP.BAT
+
+CLIP.BAT performs the complete cycle to define and execute a run of CLiP. Thus
+both passes of CLiP are executed by this command. The procedure gives the user
+complete control over the extraction process and supplies context sensitive
+HELP when asked. The procedure works most comfortable when a mouse is
+available.
+
+PROJECT menu allows your to LOAD an already existing INI-file or to SAVE the
+ one you have defined so far. In addition you can start the extraction
+ process from here.
+
+SETTINGS/SOURCEFILES allows you to define the sources files that CLiP has to
+ include in the extraction process. The source files may reside in
+ different directories.
+
+SETTINGS/TARGETMODULES lets you specify which modules you want to be extracted.
+ The names of modules you put in the list are used either to identify
+ the modules that have to be extracted (in which case you set the
+ radiobutton EXTRACTED) or the modules that have to be omitted during
+ the extraction process (in which case you set of course the radiobutton
+ OMITTED). The default is OMITTED which of course implies that if no
+ modules are listed, CLiP will extract every module it finds.
+
+
+SETTINGS/PARAMETERS refers partly to non implemented features. Therefore don't
+ touch the CLIP_MOD radiobuttons and forget about the INTERACTIVE FAULT
+ CORRECTION. If you want error messages to be filed, you have to specify
+ the report file in this menu.
+
+SETTINGS/SYNTAX allows you to change the appearance of the lines that trigger
+ the CLiPping process. By LOADing an appropriate INI-file (like
+ PASCAL.INI, C.INI, MODULA.INI or FORTRAN.INI) you have an adequate
+ suggestion for that particular language. The choice SHOW SYNTAX
+ displays the way CLiP lines will look.
+
+5.2 ... via CLP.BAT and CLP_ENV.BAT
+
+This procedure can be used in a situation where on wants to extract all the
+modules from up to nine source files. The source files are passed as
+parameters. CLP.BAT creates a CLIP.INI file and starts the CLIP_2 program
+afterwards.
+ All setting are assumed by the batch procedure. Originally it is tailored
+to Pascal programs of the sort displayed in the example EX01 (i.e. the files
+EX01_?.*) on the directory CLIP. To adjust CLP.BAT one should sufficiently
+understand the syntax of CLiP [Ammers 1993]. Only modify the lines of CLP.BAT
+as follows
+
+ line 16: Replace "(*" with the COMM-START of your choice.
+ line 17: Replace "*)" with the COMM-END of your choice.
+ line 18: Replace "*" with the CLIP-CHAR of your choice.
+ line 19: Replace "ENDOF" with the END-STRING of your choice.
+ line 20: Replace "#" with the OPTION-MARKER of your choice.
+ line 23: Replace "CLIP.RPT" with the report file name of your choice.
+
+Note that the characters "a"-"z", "A"-"Z", "0"-"9" and "." do not qualify as
+characters for COMM-START, COMM-END, CLIP-CHAR or OPTION-MARKER while the
+END-STRING should be chosen from letters only.
+ If you are not sure of your modifications, you should compare the INI-file
+produced by CLP.BAT with the one that CLIP.BAT produces from the same set of
+preferences.
+ CLP.BAT must know the directory of the source files and the directory of
+the target modules. This information is taken from the environment variables
+CLIP_SRC and CLIP_TRG that can be set using CLP_ENV.BAT. Note that the
+directories must be specified excluding the trailing backslash. For example
+ >CLP_ENV D: C:\PROJECT\PASCAL
+defines the home directory of drive D: as source file directory while the
+subdirectory PASCAL of directory PROJECT on drive C: will receive the extracted
+modules.
+
+5.3 ... via CL.BAT
+
+CL.BAT is the fastest way to run CLiP and will probably be invoked most often.
+It can be used whenever an INI-file already is available. It copies the
+information of the specified INI-file to CLIP.INI and runs the CLIP_2 program.
+ The INI-file to be used is passed as an optional parameter. If no INI-file
+is specified, CL.BAT simply assumes CLIP.INI. For example
+ >CL EX01_A.INI
+will copy the file EX01_A.INI to CLIP.INI and run CLIP_2. However the command
+ >CL
+immediately runs CLIP_2 on the basis of an already existing CLIP.INI file.
+
+
+6 Specimen INI-files
+
+The files ADA.INI, C.INI, FORTRAN.INI, LISP.INI, MODULA.INI and PASCAL.INI
+suggest a suitable CLiP syntax for a start. To customize such an INI-file run
+the CLiP system through CLIP.BAT. Then load the proper INI-file and modify the
+syntax by means of the SETTINGS/SYNTAX menu (see sect. 5.1).
+
+7 References
+
+Ammers E.W. van, M.R. Kramer (1993), The CLiP Style of Literate Programming
+ (submitted for publication). Anonymously ftp-able as CLIP_STYLE.PS,
+ CLIP_STYLE_A.PS and CLIP_STYLE_B.PS from directory CLIP on
+ sun01.info.wau.nl.