[comp.sys.sun] Sun-Spots Digest, v6n145

Sun-Spots-Request@RICE.EDU (William LeFebvre) (07/20/88)

SUN-SPOTS DIGEST          Tuesday, 19 July 1988       Volume 6 : Issue 145

Today's Topics:
                    file `which which` mystery solved
                  Re: file `which foo` fails on 3.4/3.5
         for Ted Schroeder: ibm-ebcdic tape from unix-ascii file
                        Documentation on printcap?
                 Network Licensed Software Pricing (LONG)

Send contributions to:  sun-spots@rice.edu
Send subscription add/delete requests to:  sun-spots-request@rice.edu
Bitnet readers can subscribe directly with the CMS command:
    TELL LISTSERV AT RICE SUBSCRIBE SUNSPOTS My Full Name
Recent backissues are available via anonymous FTP from "titan.rice.edu".
For volume X, issue Y, "get sun-spots/vXnY".  They are also accessible
through the archive server:  mail the request "send sun-spots vXnY" to
"archive-server@rice.edu" or mail the word "help" to the same address
for more information.

----------------------------------------------------------------------

Date:    8 Jul 88 17:45:13 GMT
From:    mkhaw@teknowledge-vaxc.arpa (Mike Khaw)
Subject: file `which which` mystery solved

Don Kark (wiley!don@uunet.uu.net) pinpointed the cause of

	file `which which`

returning

	/usr/ucb/which: No such file or directory

My .cshrc file contains conditionally defined aliases for cd, pushd and
popd that write $cwd into the namestripe of shell/cmdtools; and in
addition, it does a "cd $cwd" after defining the aliases to start things
up.  Naturally, this "cd" alias uses an "echo -n" to write into the
namestripe, and `which which` returns this "invisible" string together
with "/usr/ucb/which".

Since "which" uses a "_which_saved_path_" variable, I changed the "cd
$cwd" to "if (! $?_which_saved_path_) cd $cwd", and everything works fine.

My original posting said that I encountered the problem under SunOS 3.4
and 3.5 but not 3.2.  It seems that in the case of the 3.4 and 3.5
machines, I was at the console, in suntools, but on the 3.2 machine I must
have rlogin'ed.

In summary, the moral of the story is that one should be very careful
about writing stuff to stdout (and stderr?) from .cshrc.

Mike Khaw

internet: mkhaw@teknowledge.arpa
uucp:	  {uunet|sun|ucbvax|decwrl|uw-beaver}!mkhaw%teknowledge.arpa
hardcopy: Teknowledge Inc, 1850 Embarcadero Rd, POB 10119, Palo Alto, CA 94303

------------------------------

Date:    7 Jul 88 19:11:43 GMT
From:    mkhaw@teknowledge-vaxc.arpa (Mike Khaw)
Subject: Re: file `which foo` fails on 3.4/3.5
Reference: v6n129

I got email messages from 2 people.  One said he had exactly the same
problem as I reported.  Another said he got an error message about some
problem with a socket(!) (sorry, I've lost that message).

Even more interesting:

	bar% rsh foo file `which which`

where "bar" is my SunOS 3.5 machine, and "foo" is my 3.2 machine, hangs
the shell on "bar".

Mike Khaw

internet: mkhaw@teknowledge.arpa
uucp:	  {uunet|sun|ucbvax|decwrl|uw-beaver}!mkhaw%teknowledge.arpa
hardcopy: Teknowledge Inc, 1850 Embarcadero Rd, POB 10119, Palo Alto, CA 94303

[[ Since "which" gets its job done by playing with your .cshrc and .login,
it's quite possible that users with different .cshrc and .login files will
experience different results.  I'm not guaranteeing it, just saying that
it is possible.  --wnl ]]

------------------------------

Date:    6 Jul 88 18:08:43 GMT
From:    mkhaw@teknowledge-vaxc.arpa (Mike Khaw)
Subject: for Ted Schroeder: ibm-ebcdic tape from unix-ascii file

I'm posting my reply because the e-mail address given by Mr. Schroeder
didn't work.

> I have a hunk of C code that I want to  port (sort of) to an IBM
> mainframe....

You should be able to hack the following shell script that I wrote to
transport source from Unix to a Tandem (fixed-length EBCDIC records with
some very specific blocking factor requirements).  Your IBM system may
also require "IBM standard" tape labels.  If you can get a spec. on what
those labels need to contain, you can manually or automatically generate
the correct "tape label" files on your Sun and copy them in the
appropriate order to the tape.  The script uses the "copytape" freeware
program to work around a tape density problem with DEC tu-81 drives -- you
can ignore that stuff.

Mike Khaw

--->8--->8--->8---
#! /bin/csh -f

# given a list of directories and/or files, write a 1600 bpi
# ebcdic tape blocked at 13200 bytes/block, 132 bytes/record.

onintr cleanup

if ($#argv == 0) then
	echo -n "Files/directories to write to tape: "
	set pathlist = ($<)
else
	set pathlist = ($*)
endif

find $pathlist -type f -print | sort > /usr/tmp/fl$$

set kbytes = 0
foreach file (`cat /usr/tmp/fl$$`)
	set filesize = `du -s $file`
	@ kbytes = $kbytes + $filesize
end
@ mbytes = $kbytes / 1024 + 1
if ($mbytes > 28) then
	echo "$mbytes Mbytes won't fit on 1 tape -- try again"
	exit
endif

# kludge around 1600bpi tu-81 bug in ultrix 1.2:
#	- dd the files to 6250bpi tape
#	- use copytape to clone a 1600bpi copy
set CPTAPE = /usr/app/tape/copytape/rcptape/copytape

while (1)
	mt status >& /dev/null
	if ($status == 10) break
	echo -n "Hit RETURN when the tape is online: "
	echo $< > /dev/null
end
foreach file (`cat /usr/tmp/fl$$`)
	dd obs=13200 cbs=132 conv=ibm,block files=1 if=$file of=/dev/nrmt8
end
mt rew

while (1)
	echo -n "remote tape is on (hostname): "
	set remote = $<
	rsh $remote hostname >& /dev/null
	if ($status == 0) break
	echo "You don't have access to $remote"
end

while (1)
	set remstat = `rsh $remote 'mt status >& /dev/null; echo $status'`
	if ($remstat == 10) break
	echo -n "Hit RETURN when the remote tape is online: "
	echo $< > /dev/null
end

$CPTAPE /dev/rmt12 ${remote}:/dev/rmt0
mt rewoffl
rsh $remote mt rewoffl

# print the file list
if (`printenv | fgrep PRINTER` == '') setenv PRINTER kept-imagen
echo "printing list of tape contents to $PRINTER"
imprint /usr/tmp/fl$$

cleanup:

rm -f /usr/tmp/*$$
--->8--->8--->8---
-- 
internet: mkhaw@teknowledge.arpa
uucp:	  {uunet|sun|ucbvax|decwrl|uw-beaver}!mkhaw%teknowledge.arpa
hardcopy: Teknowledge Inc, 1850 Embarcadero Rd, POB 10119, Palo Alto, CA 94303

------------------------------

Date:    7 Jul 88 19:10:30 GMT
From:    1bhansen@teknowledge-vaxc.arpa (Bob Hansen)
Subject: Documentation on printcap?

I am trying to make an Epson LQ-850 jump through some hoops and I would
really appreciate some "quality" documentation on printcap. Specifically,
I would like to find out more about the flag masks and whether I can use
these to control some printer functions.  I have been trying to use a
"trial and error" method to learn more about this but I am getting rather
frustrated.  Thanks.

Bob Hansen  
1bhansen@teknowledge-vaxc.arpa
or this newsgroup

[[ The "flags" masks are flags for the tty driver.  See the manual page
tty(4).  One set of flags effects the "sg_flags" field in the struct
sgttyb, and the other ("xs" and "xc") effects the "local mode" flags.
Don't forget the leading "0" in printcap to indicate that they're octal!
There is a document called "4.2BSD Line Printer Spooler Manual" that was
distributed with 4.2.  It is buried somewhere deep within one of the Sun
manual sets.  Probably in one of the system manager manuals.  --wnl ]]

------------------------------

Date:    8 Jul 88 19:33:32 GMT
From:    helios!carter@uunet.uu.net (Mike Carter)
Subject: Network Licensed Software Pricing (LONG)

[[ This long message is the last one in this issue of the digest.  --wnl ]]

A Pricing Strategy for Network Licensed Software	    July 8, 1988
------------------------------------------------

 	The concept of licensing software to a network of workstations, 
rather than to a single CPU, is becoming increasingly attractive as large
workstation networks become more common.  The cost and power of workstation 
hardware has reached the point where it is practical to assign a workstation 
to an individual design engineer as a private desktop resource.  A SUN 3/60
workstation (or comparable workstation) can address much of the broad 
spectrum of daily activities of an individual designer.  However, the cost 
of licensing many different software packages on a per-designer (single-CPU) 
basis quickly becomes prohibitive, particularly when most of those packages 
will be used only occasionally.
	Network software licensing allows a pool of workstations to share
access to a smaller number of copies of a particular software package.
Any of the workstations may run the software package, but while they are
doing so, they "lock up" one copy of that software, so that all other
workstations have one less copy available to draw upon.  The number of 
copies of a particular software package which are required to service a 
network of workstations is highly dependent on the software usage "duty 
cycle".  The more often a particular software package is used (a reasonable 
measure of the "value" of a software package), the more necessary it will 
be to have a large number of copies accessable to the network.
	A number of software vendors have privately expressed their 
willingness to support the concept of network software licensing.  However, 
very few of them appear to have decided on a formal pricing strategy.  One 
approach, which provides a reasonable balance between the interests of 
vendor and purchaser, and is easy to implement and maintain, is outlined 
below.  The suggested pricing formula for network software licensing is 
very straightforward.  It is simply:

                                          Network_size - Network_licences
Net_price= Std_price * { 1 + Net_factor * ------------------------------- }
                                                  Network_size

where

     Net_price= cost per "networked" software licence
     Std_price= standard "single-CPU" licence price
     Net_factor= cost weighting factor for network licensing
                 (0 < Net_factor < 2.0)
     Network_size= number of workstations in the desired network licensing 
                   "pool" (this number may be different for different 
		   software packages)
     Network_licences= number of networked licences actually purchased

so that the total licensing cost for each software package used in a
network will be:

     Net_total= Network_licences * Net_price

	The fixed value chosen for "Net_factor" will clearly impact the 
overall cost of a network licensed software package.  Software vendors 
will prefer this value to be as high as possible, and software buyers 
will prefer a value which is as low as possible.  If "Net_factor" is zero, 
then a network software licence costs the same as a single-CPU licence. 
If "Net_factor" is 2.0, then it costs as much to buy one network software 
licence which could be shared by two stations, as it would to buy two 
single-CPU licences for those stations.  These two conditions provide 
the limiting values for "Net_factor".   A suggested "reasonable" value
for this parameter is:

     Net_factor=  0.50

	This value produces a 25% increase in the base price of a unit 
licence, when that licence is "shared" by two machines.  This seems a fair 
increment to pay for the flexibility of being able to run one copy of 
software on either of two workstations, when only one workstation at a 
time may access that software copy. 

	The above formula for networked software pricing also applies 
to subsequent purchases of the same software package.  A reasonable 
implementation of network software licensing facilitates further purchases
of a software package, as increased access requirements or network size
require.  Future expansion can occur in several ways:  the network can grow, 
while the number of licensed software copies remains constant; the number 
of licensed copies can increase, while the network size remains constant; 
or growth can occur in both number of licensed copies and in network size.  
Under any of these circumstances, there is a net positive additional fee, 
which is simply given by:

     Additional_fee= Net_total(new) - Net_total(old)

where

     Net_total(new)= total licensing cost calculated using the new values
                     of Network_size and Network_licences, and the current
		     standard single-CPU licence price
     Net_total(old)= total licensing cost calculated using the old values
                     of Network_size and Network_licences, and the CURRENT
		     standard single-CPU licence price

	Use of only the current value of "Std_price" in all parts of the
computation of "Additional_fee" eliminates all concerns about aberrations
caused by past pricing policies.  At all times, the calculation of the 
current price for a networked software licence is based on the current 
price for a standard single-CPU licence.
	Note that as the number of networked licences approaches full
deployment (one licence for every station in the network), the proposed 
pricing strategy degenerates to the current pricing strategy for multiple 
copy single-CPU licences.  Software buyers who prefer to license one
copy of a software package on every workstation will not be penalized by 
the suggested pricing strategy.  At the other end of the spectrum, as the 
number of network workstations becomes much larger than the number of 
network licences, the incremental cost of adding yet another workstation 
to the network approaches zero.  This is reasonable, because the value of 
a network licence which is shared between 1000 stations is really very 
little more than its value when shared between 500 stations; in practice, 
none of the stations will be able to obtain access to it when they need to! 
	There is a possibility under the proposed network software licensing
strategy that vendors would feel that they have less incentive to improve
the speed of their software.  If a software package runs slowly, it will be
tied up longer by each workstation, so more copies could be required to 
service the overall network (leading to greater sales for the vendor).
This situation will be prevented in two ways.  Firstly, faster software
tends to command a higher base price than comparable slower software.  This
will increase the vendor's return on that product, because the base price
is the starting point for the networked license price.  Secondly, market
forces will tend to select the more efficient software packages for survival;
vendors with slow software will tend to go out of business, because execution
time is usually a major factor for frequent users of a software package.
	Software vendors will find it easy to maintain the above network
license pricing strategy.  Under existing single-CPU licensing strategies, 
vendors already maintain records of licensed customer workstation host IDs, 
and therefore already know the number of workstations in the licensed 
"network".  Vendors also know their own current single-CPU licence prices.  
The value for "Net_factor" would probably be a vendor constant (perhaps
even an industry constant), but could be fixed on a per-customer basis 
if the vendor chose to do so.  The only additional information a vendor 
would need to record is the current number of network licences for each 
separate software package they have sold to a customer; this is a minimal 
additional burden on the software vendor!
	The above proposal is very basic.  It is described in some detail
in order to explore some of the implications of a network licensing
strategy.  The need for network software licensing is quite clear in the
new era of large workstation networks.  If software buyers and vendors 
agree with this proposal, then I would hope for its implementation in a 
reasonably timely manner.  If software buyers or vendors can suggest 
better alternatives, then I would welcome their comments. 

Mike Carter
Semiconductor Division
Mitel Corporation
360 Legget Drive
Kanata, Ontario  K2K 1X5
Canada

UUCP: ...uunet!helios!carter
Telephone: (613) 592-2122 x3326
FAX:  (613) 592-4784

------------------------------

End of SUN-Spots Digest
***********************