205 lines
4.9 KiB
Plaintext
205 lines
4.9 KiB
Plaintext
|
*******************************************************************************
|
||
|
*
|
||
|
* Support of PR1ME INFORMATION subroutine '-SUBSTRINGS'
|
||
|
*
|
||
|
* Module %M% Version %I% Date %H%
|
||
|
*
|
||
|
* (c) Copyright 1998 Ardent Software Inc. - All Rights Reserved
|
||
|
* This is unpublished proprietary source code of Ardent Software Inc.
|
||
|
* The copyright notice above does not evidence any actual or intended
|
||
|
* publication of such source code.
|
||
|
*
|
||
|
*******************************************************************************
|
||
|
*
|
||
|
* Maintenence log - insert most recent change descriptions at top
|
||
|
*
|
||
|
* Date.... GTAR# WHO Description.........................................
|
||
|
* 10/13/98 23801 RGA Change copyright info.
|
||
|
* 08/10/95 17135 JC Added MAP argument for NLS.
|
||
|
* 07/02/90 6994 JWT integrate patch from ULTIMATE for syntax support
|
||
|
* 06/06/90 7077 JWT fix some typos
|
||
|
* 11/14/89 4743 KIS Print error if mode type greater than 3
|
||
|
* 07/27/88 5190 JSM Changed to get blocksiz from MT:Unit in &DEVICE&
|
||
|
* 07/25/88 - - Maintenence log purged at 5.2.1, see release 5.1.10.
|
||
|
*
|
||
|
*******************************************************************************
|
||
|
|
||
|
$OPTIONS DEFAULT
|
||
|
|
||
|
@SYSTEM.RETURN.CODE = -1
|
||
|
open "VOC" to f.VOC else
|
||
|
print 'Unable to open your VOC'
|
||
|
stop
|
||
|
end
|
||
|
|
||
|
open "&DEVICE&" to f.DEVICE else
|
||
|
print 'Unable to open the &DEVICE& file'
|
||
|
stop
|
||
|
end
|
||
|
|
||
|
dim line(9)
|
||
|
mat line = ""
|
||
|
|
||
|
matparse line from trim(@sentence) , " "
|
||
|
|
||
|
unit = -1; blocksiz = 'none'; mode = 0
|
||
|
mapname = ''
|
||
|
|
||
|
i = 2
|
||
|
scanlim = 8
|
||
|
|
||
|
* the following code was added to allow t.att to work like Ultimate
|
||
|
*
|
||
|
commapos = index(line(2),",",1)
|
||
|
if commapos # 0 then
|
||
|
line(9) = line(8)
|
||
|
line(8) = line(7)
|
||
|
line(7) = line(6)
|
||
|
line(6) = line(5)
|
||
|
line(5) = line(2)[commapos+1,999]
|
||
|
line(4) = "BLK"
|
||
|
line(3) = line(2)[1,commapos-1]
|
||
|
line(2)= "MTU"
|
||
|
scanlim += 3
|
||
|
end else
|
||
|
if inmat() = 2 and num(line(2)) then
|
||
|
line(3) = line(2)
|
||
|
line(2) = 'MTU'
|
||
|
end
|
||
|
end
|
||
|
|
||
|
loop
|
||
|
until line(i) = '' or i = scanlim do
|
||
|
read item from f.VOC,upcase(line(i)) then
|
||
|
if item<1>[1,1]='K' and item<2>=40 then line(i)='K_MTU'
|
||
|
if item<1>[1,1]='K' and item<2>=41 then line(i)='K_BLK'
|
||
|
if item<1>[1,1]='K' and item<2>=400 then line(i)='K_MAP'
|
||
|
end
|
||
|
|
||
|
begin case
|
||
|
case line(i)='K_MTU'
|
||
|
if unit # -1 then
|
||
|
print 'Keyword "MTU" previously specified'
|
||
|
stop
|
||
|
end
|
||
|
i+=1
|
||
|
if line(i) = '' then
|
||
|
print 'Missing MTU specifcation'
|
||
|
stop
|
||
|
end
|
||
|
if not(num(line(i))) then
|
||
|
print 'Illegal MTU specification "':line(i):'"'
|
||
|
stop
|
||
|
end
|
||
|
unit = mod(line(i),10)
|
||
|
if len(line(i)) = 3 then
|
||
|
mode = line(i)[1,1]
|
||
|
if mode > 3 then
|
||
|
print 'Mode value greater than 3--too large'
|
||
|
stop
|
||
|
end
|
||
|
end else
|
||
|
mode = 0
|
||
|
end
|
||
|
case line(i)='K_BLK'
|
||
|
if blocksiz # 'none' then
|
||
|
print 'Keyword "BLK" previously specified'
|
||
|
stop
|
||
|
end
|
||
|
i+=1
|
||
|
|
||
|
max = len(line(i))
|
||
|
if line(i)[1,1] = '(' then
|
||
|
line(i) = line(i)[2,max-1]
|
||
|
max-=1
|
||
|
end
|
||
|
if line(i)[max,1] = ')' then
|
||
|
line(i) = line(i)[1,max-1]
|
||
|
max-=1
|
||
|
end
|
||
|
if line(i) = '' then
|
||
|
print 'Missing tape block size specification'
|
||
|
stop
|
||
|
end
|
||
|
if not(num(line(i))) then
|
||
|
print 'Illegal tape block size specification "':line(i):'"'
|
||
|
stop
|
||
|
end
|
||
|
blocksiz = line(i)
|
||
|
case line(i)='K_MAP'
|
||
|
if mapname # '' then
|
||
|
print 'Keyword "MAP" previously specified'
|
||
|
stop
|
||
|
end
|
||
|
|
||
|
if NOT(SYSTEM(100)) then
|
||
|
print "Unable to set a mapname when NLS is not active"
|
||
|
stop
|
||
|
end
|
||
|
|
||
|
i+=1
|
||
|
|
||
|
max = len(line(i))
|
||
|
if line(i)[1,1] = '(' then
|
||
|
line(i) = line(i)[2,max-1]
|
||
|
max-=1
|
||
|
end
|
||
|
if line(i)[max,1] = ')' then
|
||
|
line(i) = line(i)[1,max-1]
|
||
|
max-=1
|
||
|
end
|
||
|
if line(i) = '' then
|
||
|
print 'Missing mapname specification'
|
||
|
stop
|
||
|
end
|
||
|
mapname = line(i)
|
||
|
|
||
|
case 1
|
||
|
if blocksiz # 'none' then
|
||
|
print 'Tape block size previously specified'
|
||
|
stop
|
||
|
end
|
||
|
max = len(line(i))
|
||
|
if line(i)[1,1] = '(' then
|
||
|
line(i) = line(i)[2,max-1]
|
||
|
max-=1
|
||
|
end
|
||
|
if line(i)[max,1] = ')' then
|
||
|
line(i) = line(i)[1,max-1]
|
||
|
max-=1
|
||
|
end
|
||
|
if line(i) = '' then
|
||
|
print 'Missing tape block size specification'
|
||
|
stop
|
||
|
end
|
||
|
if not(num(line(i))) then
|
||
|
print 'Illegal token "':line(i):'" on command line'
|
||
|
stop
|
||
|
end
|
||
|
blocksiz = line(i)
|
||
|
end case
|
||
|
i+=1
|
||
|
repeat
|
||
|
|
||
|
if unit = -1 then unit = 0
|
||
|
if blocksiz = 'none' then
|
||
|
read item from f.DEVICE,'MT':unit else
|
||
|
print "Unable to read &DEVICE& file entry for 'MT":unit:"'"
|
||
|
stop
|
||
|
end
|
||
|
blocksiz = item<3>
|
||
|
if blocksiz = '' then
|
||
|
read item from f.VOC,'T.ATT' else
|
||
|
print "Unable to read VOC entry for 'T.ATT'"
|
||
|
stop
|
||
|
end
|
||
|
blocksiz = item<5>
|
||
|
end
|
||
|
end
|
||
|
|
||
|
cmd="ASSIGN MT":unit:" TO MTU ":unit
|
||
|
if blocksiz # '' then cmd:=" BLK ":blocksiz
|
||
|
if mapname # '' then cmd:=" MAP ":mapname
|
||
|
|
||
|
chain cmd
|