Cover V04, I03
Article
Listing 1
Listing 2

may95.tar


Listing 2: mcplot--Plotting from a Macintosh to a UNIX workstation

#!/bin/ksh
######################################################################
# mcplot - plotting from mac's to unix workstation                   #
# written by: Don Stone                                              #
# date      : 11-16-93                                               #
#                                                                    #
#                                                                    #
# Donald C. Stone                                 _/_/_/_/_/ _/_/    #
# Information Systems Analyst                    _/_/       _/_/     #
# California Department of Transportation       _/_/   _/_/_/_/_/_/  #
# District 03 Main Office                      _/_/       _/_/       #
# 703 'B' Street                              _/_/_/_/_/ _/_/  _/    #
# Marysville, California, USA 95901                     _/_/_/_/     #
# Phone: (916)741-4031                                               #
# Email: dstone%trmx2@dot.ca.gov                   Caltrans          #
#                                                                    #
#                                                                    #
# First, create a directory for the script to reside.  Define the    #
# below varible DIR as that directory.  Then, create sub-directories
#
# called "./tmp", "./que", and "./log".  Then create a text file     #
# called "control" with the following format:                        #
#                                                                    #
#   yes  000.000.000.000  queue_name  folder_name                    #
#                                                                    #
# The first column should be yes or no indicating whether the script
#
# uses the information or not, second column is the IP address of    #
# the Mac, third column is the name the plot queue, and the fourth   #
# column is the full pathname of the folder on the Mac.  Finally,    #
# since this script is currently configured for Intergraph's IPLOT   #
# plotting software, copy a default pentable and colortable by the   #
# using the names "igds.tbl" and "igds.ctb".  Also, define the vari-
#
# bles FNT and SCR pointing to the default font library and scratch  #
# directory.                                                         #
#                                                                    #
######################################################################

### Define version.  ###
PRG="Mac Plotting"
VER="1.3"

### Define header and spacing. ###
HDR="%%McPLOT:"
HSP="         "

### Define system directory/file names. ###
DIR="/usr/local/dp"
QUE="$DIR/que"
TMP="$DIR/tmp"
LOG="$DIR/log"
COM="$TMP/comm"
TBL="$DIR/igds.tbl"
CTB="$DIR/igds.ctb"
FNT="/usr/ip32/ip/igds/resrc/fontlib"
SCR="/usr/plotwrk/iplot/scr"

### Remote login for UNIX servers. ###
USER="t3vers"
PASS="plotter"

### Determine terminal for verbose option. ###
if [ "$1" = "-v" -o "$1" = "-V" ]; then
TERM="$LOG/dplot.log"
tty | read TERM
else
TERM="$LOG/dplot.log"
fi

### Begin program loop. ###
GO="0"
while [ "$GO" = "0" ]; do

### Check for loop switch. ###
if [ "$1" = "1" -o "$2" = "1" -o "$3" = "1"
]; then
GO="1"
fi

echo "\n$HDR $PRG $VER"                                      >> $TERM
echo "$HSP (Submitting postscript files)"                    >> $TERM
date +"$HSP %a %h %d,19%y %T"                                >> $TERM

### Read control to determine which plot queues. ###
CONTROL="0"
if [ ! -f $DIR/control ]; then
touch $DIR/control
echo "$HDR No control file!"  >> $TERM
fi
cat $DIR/control | grep -v "#"     |
grep "Plotters" |
grep "yes "     |
while read YESNO TCP PLOTTER REMDIR; do

### Get plot files from remote server. ###
echo "$HDR Searching remote server ($TCP) at:"      >> $TERM
echo "$HSP $REMDIR"                                 >> $TERM
echo "$HSP Attempting file transfer ...\c"          >> $TERM
echo "\nuser $USER $PASS"  >  $COM.1
echo "cd \042$REMDIR\042"  >> $COM.1
echo "lcd $QUE"            >> $COM.1
echo "ascii"               >> $COM.1
echo "mget *"              >> $COM.1
echo "ls"                  >> $COM.1
ftp -vni $TCP < $COM.1     >  $TMP/ftp.tmp 2>  $TMP/ftp.tmp
echo "\n\n"                >> $LOG/ftp.log 2>> $LOG/ftp.log
cat $TMP/ftp.tmp           >> $LOG/ftp.log 2>> $LOG/ftp.log
echo " "  >> $TERM

### Deleting NULL plot files. ###
echo "$HSP Deleting null plot files ...\c"  >> $TERM
find $QUE -type f -size -5 -print |
while read FILE; do rm -f "$FILE"; done
echo " "  >> $TERM

### Submit remaining files to plotter. ###
FLAG1="0"
find $QUE -type f -print |
while read FILE; do

###                                          ###
### Determine file type; postscript or igds. ###
###                                          ###
TYPE="invalid"
IFS=":"
file "$FILE" | tr -d "\011" | read CHUNK1 CHUNK2
IFS=" "
echo "$CHUNK2" | read FLAG2 EXTRA
if   [ "$FLAG2" = "text"     ]; then  FLAG2="ascii"; fi
if   [ "$FLAG2" = "commands" ]; then  FLAG2="ascii"; fi
if   [ "$FLAG2" = "unstruct" ]; then  FLAG2="ascii"; fi
if   [ "$FLAG2" = "Postscript" ]; then
TYPE="script"
elif [ "$FLAG2" = "data" ]; then
TYPE="igds"
elif [ "$FLAG2" = "ascii" ]; then
head "$FILE" | grep -c "%%Creator" | read CREATOR
if [ "$CREATOR" = "1" ]; then
TYPE="script"
fi
fi
if [ "$TYPE" = "invalid" ]; then
echo "$HSP $FILE is an invalid plotfile!!!"  >> $TERM
echo "$HSP $FILE is an invalid plotfile!!!"  >  "$FILE"
fi

###                              ###
### Submit IGDS file to plotter. ###
###                              ###
if [ "$TYPE" = "igds" ]; then

### Check for plot scale. ###
SCALE="50"
echo "$FILE" | tr "." "/" | read TEMP
basename "$TEMP" | tr -d [a-z][A-Z] |
tr -d "._+:/\ #" | read SCALE
if [ ! "$SCALE" ]; then SCALE="50"; fi
let a=$SCALE
if [ $a -lt 1 ]; then SCALE="50"; fi
SCALE="$SCALE.0:1.0"

### Determine IPARM filename. ###
basename "$FILE" | read TEMP
echo "$TEMP" | tr "." " " | read IPARM EXTRA
IPARM="$SCR/$IPARM.i"

### Create iparm/meta files and submit it. ###
echo "$HSP Submitting $FILE ($TYPE/$SCALE) to $PLOTTER ...\c"  >> $TERM
echo "iplot create "$IPARM" -queue=$PLOTTER \c"         >  $COM.3
echo "-design=\042$FILE\042 -view=1 -units=inches \c"   >> $COM.3
echo "-scale=$SCALE -data_rescale=1.0,1.0 \c"           >> $COM.3
echo "-pen_table=$TBL -color_table=$CTB -fontlib=$FNT"  >> $COM.3
echo "iplot generate \042$IPARM\042"                    >> $COM.3
echo "iplot submit \042$IPARM\042"                      >> $COM.3
chmod 777 $COM.3
$COM.3  > $TMP/iplot.tmp 2> $TMP/iplot.tmp

### Create message file. ###
cat $TMP/iplot.tmp  >> $LOG/iplot.log 2>> $LOG/iplot.log
echo "$PRG $VER"                       >  "$FILE"
date +"Submitted to $PLOTTER at %D.%T" >> "$FILE"
cat $TMP/iplot.tmp                     >> "$FILE"
echo " "  >> $TERM
fi

###                                    ###
### Submit postscript file to plotter! ###
###                                    ###
if [ "$TYPE" = "script" ]; then

### Check for paper size. ###
PAPER="E"
echo "$FILE" | tr "." "/" | read TEMP
basename "$TEMP" | tr [a-z] [A-Z] | read SIZE
if [ "$SIZE" = "A" ]; then PAPER="$SIZE"; fi
if [ "$SIZE" = "B" ]; then PAPER="$SIZE"; fi
if [ "$SIZE" = "C" ]; then PAPER="$SIZE"; fi
if [ "$SIZE" = "D" ]; then PAPER="$SIZE"; fi

echo "$HSP Submitting $FILE ($TYPE/$PAPER) to $PLOTTER ...\c"  >> $TERM
qpr "$FILE" -t $TYPE -q $PLOTTER -o "-a $PAPER"  > $TMP/qpr.tmp 2>
$TMP/qpr.tmp

### Create message file. ###
cat $TMP/qpr.tmp  >> $LOG/qpr.log 2>> $LOG/qpr.log
echo "$PRG $VER"                       >  "$FILE"
date +"Submitted to $PLOTTER at %D.%T" >> "$FILE"
cat $TMP/qpr.tmp                       >> "$FILE"
echo " "  >> $TERM
fi

### Copy message file to remote server. ###
echo "$HSP Sending message file to remote server ...\c"  >> $TERM
basename "$FILE" | read BNAME
cat $TMP/ftp.tmp | grep -v  "local:" |
grep -v "remote:" |
grep     "$BNAME" | read DFILE
echo "$DFILE" | read DFILE
echo "\nuser $USER $PASS"                       >  $COM.2
echo "cd \042$REMDIR\042"                       >> $COM.2
echo "lcd $QUE"                                 >> $COM.2
echo "ascii"                                    >> $COM.2
echo "send \042$FILE\042 \042$DFILE\042"        >> $COM.2
ftp -vni $TCP < $COM.2   >> $LOG/ftp.log 2>> $LOG/ftp.log
echo " "  >> $TERM
rm -f "$FILE"

FLAG1="1"
done
if [ "$FLAG1" = "0" ]; then
echo "$HSP No files copied or submitted!"  >> $TERM
fi

### Send plot status to remote server. ###
echo "$HSP Sending queue status to remote server ...\c"  >> $TERM
echo "$PRG $VER" >  $TMP/qstat.tmp
date             >> $TMP/qstat.tmp
uname -a         >> $TMP/qstat.tmp
echo "\n"        >> $TMP/qstat.tmp
qstat $PLOTTER   >> $TMP/qstat.tmp
echo "$PLOTTER Status" | tr " " "_" | read STATUS
echo "\nuser $USER $PASS"                   >  $COM.5
echo "cd \042$REMDIR\042"                   >> $COM.5
echo "ascii"                                >> $COM.5
echo "send $TMP/qstat.tmp \042$STATUS\042"  >> $COM.5
ftp -vni $TCP < $COM.5   >> $LOG/ftp.log 2>> $LOG/ftp.log
echo " "  >> $TERM

sleep 5
CONTROL="1"
done
if [ "$CONTROL" = "0" ]; then
echo "$HSP No control data!"  >> $TERM
fi

###                                           ###
### Purging log files and deleting tmp files. ###
###                                           ###
echo "$HDR Purging log files ...\c"  >> $TERM
find $LOG -type f -print |
while read FILE; do
tail -1000 $FILE > $TMP/logfile
cp $TMP/logfile $FILE
done
echo "\n$HSP Deleting tmp files ...\c"  >> $TERM
rm -f $TMP/*
echo " "  >> $TERM

### The end of the loop! ###
echo "$HDR [!]\n"  >> $TERM
if [ "$GO" = "0" ]; then
sleep 240
fi
done
### The end! ###