diff options
Diffstat (limited to 'web/clip/ms_dos')
-rw-r--r-- | web/clip/ms_dos/ada.ini | 21 | ||||
-rw-r--r-- | web/clip/ms_dos/c.ini | 21 | ||||
-rw-r--r-- | web/clip/ms_dos/cl.bat | 5 | ||||
-rw-r--r-- | web/clip/ms_dos/clip.bat | 8 | ||||
-rw-r--r-- | web/clip/ms_dos/clip_msg.dat | 36 | ||||
-rw-r--r-- | web/clip/ms_dos/cliphelp.hlp | bin | 0 -> 12372 bytes | |||
-rw-r--r-- | web/clip/ms_dos/clp.bat | 44 | ||||
-rw-r--r-- | web/clip/ms_dos/clp_env.bat | 22 | ||||
-rw-r--r-- | web/clip/ms_dos/ex01_a.asc | 274 | ||||
-rw-r--r-- | web/clip/ms_dos/ex01_a.ini | 26 | ||||
-rw-r--r-- | web/clip/ms_dos/ex01_a.pas | 102 | ||||
-rw-r--r-- | web/clip/ms_dos/ex01_a.ps | 1416 | ||||
-rw-r--r-- | web/clip/ms_dos/ex01_b.asc | 42 | ||||
-rw-r--r-- | web/clip/ms_dos/ex01_b.ini | 27 | ||||
-rw-r--r-- | web/clip/ms_dos/ex01_b.pas | 119 | ||||
-rw-r--r-- | web/clip/ms_dos/ex01_b.ps | 370 | ||||
-rw-r--r-- | web/clip/ms_dos/fortran.ini | 21 | ||||
-rw-r--r-- | web/clip/ms_dos/lisp.ini | 21 | ||||
-rw-r--r-- | web/clip/ms_dos/manual.ps | 5813 | ||||
-rw-r--r-- | web/clip/ms_dos/manual.txt | 854 | ||||
-rw-r--r-- | web/clip/ms_dos/modula.ini | 21 | ||||
-rw-r--r-- | web/clip/ms_dos/pascal.ini | 21 | ||||
-rw-r--r-- | web/clip/ms_dos/read_me.ps | 1812 | ||||
-rw-r--r-- | web/clip/ms_dos/read_me.txt | 191 |
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 Binary files differnew file mode 100644 index 0000000000..29affb71ae --- /dev/null +++ b/web/clip/ms_dos/cliphelp.hlp 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. |