home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.cs.arizona.edu
/
ftp.cs.arizona.edu.tar
/
ftp.cs.arizona.edu
/
icon
/
historic
/
v941.tgz
/
icon.v941src.tar
/
icon.v941src
/
ipl
/
packs
/
idol
/
mvs.icn
< prev
next >
Wrap
Text File
|
2000-07-29
|
2KB
|
100 lines
#
# @(#)mvs.icn 1.3 5/5/90
# OS-specific code for MVS Idol
# Adapted from os2.icn by Alan Beale (4/29/90)
# Modified by cjeffery (9/27/90)
#
global icontopt,cd,md,env,sysok,sysopen
procedure mysystem(s)
if \loud then write(s)
return system(s)
end
procedure filename(s,ext)
s $<9:0$> := ""
if \ext then return qualify(map(s, "_", "#"),ext)
else return map(s, "_", "#")
end
procedure writesublink(s)
writelink(qualify(map(s, "_", "#"),".u1"))
end
procedure envpath(filename)
return filename
end
#
# Installation.
# Uses hierarchical filesystem on some systems (see initialize)
#
procedure install(args)
fout := envopen("i#object.icn","w")
write(fout,"record idol_object(__state,__methods)")
close(fout)
fout := &null
cdicont($<"i#object"$>)
end
procedure uninstall(args)
# not implemented yet
end
procedure makeexe(args,i)
exe := args$<i$>
if icont(exe) = \sysok then {
mysystem("delete "||qualify(exe, ".icn"))
if \exec then {
write("Executing:")
exe := "iconx "||exe
every i := exec+1 to *args do exe ||:= " "||args$<i$>
mysystem(exe)
}
}
end
#
# system-dependent compilation of idolfile.icn
# (in the idol subdirectory, if there is one)
#
procedure cdicont(idolfiles)
if comp = -2 then return # -t --> don't call icont at all
args := " -c"
every ifile := !idolfiles do args ||:= " " || ifile
mysystem("icont " || args)
return
end
#
# force .icn files to receive large line size, hoping to avoid
# output line splitting
#
procedure myopen(file, mode)
if not(f := open(file,mode,if mode ~== "r" then
"recfm=v,reclen=4000" else &null)) then
halt("Couldn't open file ", file, " for mode ", mode)
return f
end
#
# generate a file name from a root and a qualifier. This procedure
# is required in MVS due to the file.icn(member) syntax!
#
procedure qualify(root, qual)
if (i := upto('(', root)) then
return root$<1:i$> || qual || root$<i:0$>
else return root || qual
end
#
# remove a qualifier from a file name (but leave any member name
# intact). Fail if qualifier not found.
#
procedure fileroot(name, qual)
if not (i := find(qual, name)) then fail
if name$<i+*qual$> ~== "(" then fail
name$<i+:*qual$> := ""
return name
end
procedure sysinitialize()
icontopt := " -Sr500 -SF30 -Si1000 "
sysok := 0
sysopen := myopen
end