-
in filelocs.pl, define new path name(s):
rlogin parep2 or cedr (as merrill)
cd $MPUB/cgibin
vi plotcases.cgi
(for example)
# $nickelhexloc = URL of hexagon map, NICKEL format
# $nickelhexnfs = nfs loc of hexagon map, NICKEL format
$nickelhexloc = $htmlroot2 . $root1area . "/orig_hex.nickel";
$nickelhexnfs = $nfsroot2 . $root1area . "/orig_hex.nickel";
-
in plotcases.cgi, include comment lines for new file(s);
rlogin parep2 or cedr (as merrill)
cd $MPUB/cgibin
vi plotcases.cgi
(for example)
# $nickelhexloc = URL of hexagon map, NICKEL format
# $nickelhexnfs = nfs loc of hexagon map, NICKEL format
-
in plotcases.cgi, put additional arguments in call to filelocs:
rlogin parep2 or cedr (as merrill)
cd $MPUB/cgibin
vi plotcases.cgi
(for example)
$fdimetriloc,$nickeltriloc,$nickelhexloc,$triloc,
$fdimetrinfs,$nickeltrinfs,$nickelhexnfs,$trinfs,
-
in plotcases.cgi, print form with new path names:
rlogin parep2 or cedr (as merrill)
cd $MPUB/cgibin
vi plotcases.cgi
(for example)
if ($nickelhexnfs ne '' && -e $nickelhexnfs)
{ print '+ ';
print "<a href=\"$nickelhexloc\">\n";
print "hexagons, NICKEL format</a><br>\n";
}
elsif ($nickeltrinfs ne '' && -e $nickeltrinfs)
{
print '0 ';
print "hexagons, NICKEL format";
print <<ENDOFTEXT3;
<FORM METHOD=POST ACTION=/mpub/cgibin/dempcalc.cgi>
<!- pass through variables from earlier forms ->
<INPUT TYPE="HIDDEN" NAME="whattocalc" VALUE="nickelhex">
<INPUT TYPE="HIDDEN" NAME="user" VALUE=\"$user\">
<INPUT TYPE="HIDDEN" NAME="runid" VALUE=\"$runid\">
<INPUT TYPE="HIDDEN" NAME="area" VALUE=\"$area\">
<INPUT TYPE="HIDDEN" NAME="sumlevel" VALUE=\"$sumlevel\">
<INPUT TYPE="HIDDEN" NAME="nickeltrinfs" VALUE=\"$nickeltrinfs\">
<INPUT TYPE="HIDDEN" NAME="nickelhexnfs" VALUE=\"$nickelhexnfs\">
<INPUT TYPE="SUBMIT" VALUE="calculate">
</FORM>
ENDOFTEXT3
}
else
{ print '- ';
print "hexagons, NICKEL format<br>\n";
}
-
in dempcalc.cgi, input new path name(s):
rlogin parep2 or cedr (as merrill)
cd $MPUB/cgibin
vi plotcases.cgi
(for example)
$nickelhexnfs=$input{'nickelhexnfs'};
-
in dempcalc.cgi, write task directives file in /tmp/merrill/
rlogin parep2 or cedr (as merrill)
cd $MPUB/cgibin
vi plotcases.cgi
(for example)
elsif ( $whattocalc eq 'nickelhex' )
{
print "<p>\n";
print "input: triangles, NICKEL format: ",$nickeltrinfs,"<br>\n";
print "output: hexagons, NICKEL format: ",$nickelhexnfs,"<br>\n";
# store temporary script file to run in background
local($thisjob) = ">/tmp/merrill/" . $runid . ".tmp";
local($hostname) = `hostname`;
chop $hostname;
open (THISJOB,$thisjob);
print THISJOB $hostname, ' ',$runid, ' ',$user, ' ',$whattocalc,"\n";
print THISJOB "sumlevel ",$sumlevel,"\n";
print THISJOB "nickeltrinfs ",$nickeltrinfs,"\n";
print THISJOB "nickelhexnfs ",$nickelhexnfs,"\n";
close (THISJOB);
# make files world writeable so background job can delete them
`chmod 777 /tmp/merrill/*`;
# message to user
print "<p>Your request has been submitted. You will receive ";
print "e-mail when it is completed.<p> \n";
# send message to merrill
local($tomerrill) = "| /usr/ucb/mail -s dempdemon merrill";
open (TOMERRILL,$tomerrill);
print TOMERRILL "as user merrill on ",$hostname, ", type dempdemon\n";
close (TOMERRILL);
}
-
submit form by clicking "calculate" box in "plot cases" web page:
on parep2
on cedr
-
check correctness of submitted task:
rlogin parep2 (as merrill) if parep2 Web server was used
or rlogin cedr (as merrill) if cedr Web server was used
cat /tmp/merrill/*
-
in dempd.pl, point to new perl program file:
rlogin parep2 or cedr (as merrill)
cd $MPUB/cgibin/batch
vi dempd.pl
(for example)
require ("/CEDRCD/data1/merrill/cgibin/batch/nickelhex.pl");
-
in dempd.pl, call new perl program:
rlogin parep2 or cedr (as merrill)
cd $MPUB/cgibin/batch
vi dempd.pl
(for example)
elsif ($whattocalc eq 'nickelhex')
{ if ($lineno != 4)
{ $errors++;
print TOMERRILL "\nError. ";
print TOMERRILL $whattocalc," requires 4 lines."; }
else
{ # do calculation
&nickelhex (@params); } }
-
create new perl program file (for example nickelhex.pl):
rlogin parep2 or cedr (as merrill)
cd $MPUB/cgibin/batch
vi nickelhex.pl
(for example)
#!/usr/local/bin/perl
# /h/merrill/cgibin/batch/nickelhex.pl 10/1/96
require ("/CEDRCD/data1/merrill/cgibin/batch/rununix.pl");
sub nickelhex {
#convert triangulated NICKEL file to hexagons
local($runid,$sumlevel,$nickeltrinfs,$nickelhexnfs) = @_;
#TOMERRILL is the (global) descriptor of an open file.
#print parameters
print TOMERRILL "\n\n";
# unique run id
print TOMERRILL "runid=",$runid,"\n";
# summary geog level, eg nmcdtr80
print TOMERRILL "sumlevel=",$sumlevel,"\n";
# NFS location of triangle NICKEL file
print TOMERRILL "nickeltrinfs=",$nickeltrinfs,"\n";
# NFS location of hexagon NICKEL file
print TOMERRILL "nickelhexnfs=",$nickelhexnfs,"\n";
# create UNIX script file
local($unix) = ">/tmp/merrill/" . $runid . ".csh";
open (UNIX, $unix) || die "Cannot open $unix: $!";
# descriptive header lines
print UNIX '#!/bin/csh -fx',"\n";
print UNIX '# /tmp/merrill/',$runid,".csh\n";
# move to /tmp/merrill
print UNIX "cd /tmp/merrill\n";
# create seedis subdirectory
print UNIX 'mkdir /data/csa3/merrill/',$runid,"\n";
# copy triangulated nickel file to seedis
print UNIX 'cat ',$nickeltrinfs;
print UNIX ' >/data/csa3/merrill/',$runid,"/temp.nickel\n";
# check input files in seedis
print UNIX 'ls -al /data/csa3/merrill/',$runid,"\n";
# execute seedis job
print UNIX 'rsh -n seedis.lbl.gov "@[merrill.dempcalc]divide1.com ';
print UNIX $runid,' ',$sumlevel,'"',"\n";
# check output file in seedis
print UNIX 'ls -al /data/csa3/merrill/',$runid,"\n";
# copy output file from seedis
print UNIX 'cat /data/csa3/merrill/',$runid,'/temp_divided.nickel >';
print UNIX $nickelhexnfs,"\n";
# remove output file from seedis
print UNIX 'rm /data/csa3/merrill/',$runid,'/temp_divided.nickel',"\n";
# remove subdirectory from seedis
print UNIX 'rmdir /data/csa3/merrill/',$runid,"\n";
# check output file in final location
print UNIX 'ls -al ',$nickelhexnfs,"\n";
system ($cmd);
close UNIX;
# run UNIX script file, check output file,
# delete script, and send completion message
&rununix ($nickelhexnfs);
}
1; # return true
-
create new VMS program file (for example divide1.com):
rlogin seedis (as merrill)
set def [merrill.dempcalc]
vi divide1.com
(for example)
$! merrill_default_diski:[merrill.dempcalc]divide1.com 9/30/96
$! bisect all segments of a nickel file
$! calculate temp_divided.nickel from temp.nickel
$! 'p1' = runid. This process will run in [merrill.'p1']
$! 'p2' = summary level e.g. nmcdtr80
$pl:=$st_bin:pl
$set default [merrill.'p1']
$dir/size/date
$pl 1-10 temp.fdime
$define sy$seedis disk$seed3:
$define a sy$seedis:[seedis.map_routines]
$! bisect all segments of temp.nickel
$@a:nickel_divide temp.nickel 'p2' 2 temp_divided.nickel
$delete temp.nickel.*
$purge
$dir/size/date
$pl 1-10 temp_divided.nickel
-
check correctness of submitted task:
rlogin parep2 (as merrill) if parep2 Web server was used
or rlogin cedr (as merrill) if cedr Web server was used
cat /tmp/merrill/*
-
complete submitted task:
rlogin parep2 (as merrill) if parep2 Web server was used
or rlogin cedr (as merrill) if cedr Web server was used
dempdemon