home *** CD-ROM | disk | FTP | other *** search
-
- { Donated By Warren Smith, Feb 1982 }
-
- Program PARM;
- {***************************************************************}
- { Parameter Manipulation }
- { for Pascal/Z programs }
- { this code is designed to facilitate the coding of parsing }
- { routines embedded in Pascal/Z programs }
- {***************************************************************}
-
- Const PARM_LEN = 12 ; {Arbitrary max length for any parameter}
- LINE_LEN = 255; {Max buffer size allowed by Pascal/Z }
- {for disk files }
-
- Type SET_CHAR = set of char ;
- PARAMTER = Record
- PARM_STR : 1..255 ;
- PARM_END : 1..255
- end ;
- LINE_IDX = 1..LINE_LEN ;
- CARD_MGE = Array [LINE_IDX] of char ;
- BUFFER = Record
- CHARS : CARD_MGE ;
- CUR_PTR : LINE_IDX ;
- PARM : PARAMTER
- end ;
-
-
- Procedure GET_PTRS (Var IN_BUFF : BUFFER ;
- Var SLOUGHS,
- DELIMS : SET_CHAR ;
- MAX_LEN : integer) ;
-
- Function NXT_CHAR (Var INPUT_LN : BUFFER) : char ;
-
- Begin {NXT_CHAR}
- If INPUT_LN.CUR_PTR > LINE_LEN then
- NXT_CHAR := chr(0)
- else
- NXT_CHAR := INPUT_LN.CHARS[INPUT_LN.CUR_PTR]
- end ; {NXT_CHAR}
-
- Begin {GET_PTRS}
-
- {Slough off leading chars to find start of parameter}
-
- While (NXT_CHAR(IN_BUFF) in SLOUGHS) and
- (IN_BUFF.CUR_PTR <= LINE_LEN) do
- IN_BUFF.CUR_PTR := IN_BUFF.CUR_PTR + 1 ;
-
- With IN_BUFF do
- Begin {With}
- PARM.PARM_STR := CUR_PTR ;
-
- {Find the end of the parameter}
-
- While (not(NXT_CHAR(IN_BUFF) in SLOUGHS) andè (CUR_PTR <= LINE_LEN)) do
- CUR_PTR := CUR_PTR + 1 ;
-
- PARM.PARM_END := CUR_PTR ;
-
- If PARM.PARM_END - PARM.PARM_STR > MAX_LEN then
- PARM.PARM_END := PARM.PARM_STR + MAX_LEN ;
-
- end {with}
- end ; {GET_PTRS}
-
-
-
- Begin {dummy main program}
- end. {dummy main program}