Newsgroups: vmsnet.misc,comp.os.vms,news.answers
Subject: Info-VAX: "Basic" Common Questions
From: munroe@dmc.com
Date: 1 Jan 93 04:04:32 EST
Followup-To: vmsnet.misc
Expires: 12 Feb 93 00:00:00 GMT
Organization: Doyle, Munroe Consultants, Inc., Hudson, Ma. 01749, USA
Supersedes: <info-vax-2.19921201.040052@dmc.com>

Archive-name:   info-vax/part02
Last-modified:  1992/10/28

[Changes since last posting: Added the simple answer to where to get VI for
VMS.  Added how to get C code to take U*x arguments.  Added minor corrections
to ,MAI and ,MAI1.]

           The Info-VAX Monthly Posting
           ----------------------------
           PART 2 -- Beginner "Common Questions".
           (Coordinated by Dick Munroe, written by many others)

(Part 1 is an introduction to Info-VAX.  Part 3 is Advanced Common Questions.
Part 4 is about how to find software.)

Save this message for future reference!

Table of Contents:

,GEN   -- General beginner questions (the Top 7 quickies) updated 1989-10-03
          Many, many authors
,RDT   -- Why doesn't my program work when RUN/DETATCH'ed?  added 1990-01-31
          sommar@enea.se (Erland Sommarskog)
          Leichter-Jerry@cs.yale.edu (Jerry Leichter)
,LIC   -- Linking and VAX C                               updated 1989-01-06
          pjt@yin.cpac.washington.edu (Larry Setlow)
          TAYLORT@decus.com.au (Trevor Taylor)
,TIM   -- Why does VMS time start at November 17, 1858    updated 1989-08-28
          billy@vaxb.acs.unt.edu (Billy Barron & DEC)
,VAC   -- The VAX Vacuum cleaner                            added 1989-12-28
          schuette@acoustics.nrl.navy.mil (Larry Schuette)
      and KLENSIN@infoods.mit.edu (John C. Klensin)
,MAI   -- Mail tips                                       updated 1992-10-28
          CADS_COLE@GALLUA.BITNET (Kevin Cole)
          BRYDON@dsny25.SINet.SLB.COM
,MAI1  -- Resetting the new mail counter.                   added 1992-10-28
	  Fairfield@Slacvx.Slac.Stanford.Edu (Dr. Kenneth H. Fairfield)
          BRYDON@dsny25.SINet.SLB.COM
,QU1   -- Disk quotas                                     updated 1989-09-02
          Rollo.Ross@levels.sait.oz.au
,QU2   -- Diskquota Discrepency                           updated 1989-09-02
          R602MS5U@vb.cc.cmu.edu (Marc Shannon)
,U*XARGS -- How to get my U*x program to accept arguments.        1992-10-28
          tp@mccall.com (Terry Poot)
,VI    -- Where is VI for VMS?                              added 1992-10-28
          ewilts@galaxy.gov.bc.ca (Ed Wilts)
          
[There are two articles on disk quota because I couldn't decide which to use.
If someone would like to edit them into one article and submit it, fine. -TAL]
,CPD   -- How to copy an entire directory structure       updated 1989-08-03
          bfoss@goofy.apple.com (Brad Foss)

(the ",REQ", ",GEN", etc. are keywords.  If you search for that text
(including the ",") you will be brought to the beginning of that article.)

---------------------------------------------------------------------
,GEN
General questions answered (from various sources)

1.  Where can I get old Info-VAX messages?

The archives are held at SRI.COM (128.18.10.1), in files with obvious names
like "info-vax.txt.1".  Ramon Curiel <RAY@CRVAX.SRI.COM> does the thankless
job of maintaining them.  (Yea Ramon!)

In the UK, archives are accessible via a mail server.  People should
send a message, with EITHER the subject field OR the message body
containing HELP, to info-vax-request@Uk.Ac.Ulcc.Ncdlab (addresses in the
UK are the opposite way round from the rest of the worlds ...  sigh...)
The server will tell you what to do.

Two years worth of Info-VAX messages are stored at VTVM2 which is a
Bitnet redistribution point.  If you have an account there, it is best
to use the database searcher.  Otherwise send the commands to
LISTSERV@VTVM2 using TELL (on an IBM system) or SEND (on a VMS system)
or "netwrite" (on a Unix system with the UREP software).  Send HELP
and INFO commands to get started.  A sample command is something like:
"$ SEND LISTSERV@VTVM2 SEND INFO-VAX LOG8901B" which will get you some
of the messages from Jan 1989.  You can also use INDEX to get a list
of the Info-VAX files archived.

[Any more places?  Please tell me!  -TAL ]

2.  How do I reset my new mail count when it gets out of sync?
In other words, what do I do when it says, "You have 1 new mail
message" but I really don't?

Simple: Send yourself a mail message OR have someone else mail you a
message.  If you are in MAIL, exit and re-enter mail.  At the MAIL>
prompt, type READ/NEW until it tells you that there are no new
messages.  Then enter READ/NEW one more time.  Everything is fixed.

3.  What is the plural of VAX?

VAXen, VAXln, VAXlen, VAXs, VAXes and just about everything else you can
imagine.  It's been discussed on the net many times and there has never been
a conclusion.  Therefore, you may call it anything you want.

It has been pointed out that officially DEC and its lawyers consider VAX an
adjective. This is required by trademark law, since you apparently can't
trademark a noun. Thus the "correct" plural is VAX systems or VAX
processors. There is no such thing as a VAX! :-)

4.  Where do I get VI, Kermit, (X,Y,Z)Modem, UUCP, ANU news, GNU software,
LZW/Compress/Decompress ?

See the monthly "Info-VAX: How to find software" posting.

5.  What's DECUS?

There is a separate monthly posting about DECUS.  Look for it.

6.   What do you do about "undeliverable mail" messages that bounce back
to you from various sites when you post a message to Info-VAX?
     
If the reason is "MTA congestion" just delete them.  If the reason is a bad
address, contact the postmaster at the destination site, suggesting that he
request that the addressee be removed from the Info-VAX mailing list.

7.  How can I submit a correction or addition to this monthly posting?

Check out the signature for addresses.  Additions are always welcome,
corrections are prefered to be in VMS DIFF format if they are specific.
Unix DIFF format isn't as human-readable and almost never matches up with
the text I have stored here.

---------------------------------------------------------------------
,RDT
Date: Tue, 2 Jan 90 22:53:30 +0100
>From: "Erland Sommarskog" <sommar@enea.se>
Subject: Why doesn't my program work when RUN/DETATCH'ed?

     A question that seem to be fairly common goes like this:  "We
have program that runs as a detached process and tries to create a
subprocess with LIB$Spawn but always fail.  When we run the program
in the debugger everything works OK."

     The answer to this one is when you run a program in a detached
process there is no command line interpreter (CLI) - e.g. DCL - and
since LIB$Spawn is a callback to the CLI it can't but fail.  The same
applies to other callback routines like LIB$Set_logical and LIB$Set_symbol.

The solution is simple.  Instead of starting the program
with RUN/DETACH Prog you should do:

        RUN/DETACH SYS$SYSTEM:LOGINOUT/INPUT=PROG.COM
where PROG.COM contains the line RUN PROG.

>From: Leichter-Jerry@cs.yale.edu
Date: Wed, 31 Jan 90 12:51 EST

[What Erland said is] basically correct, but there is one tricky thing
that it's important to watch out for:  The names you use for /INPUT and
/OUTPUT and /ERROR on RUN/DET (you would normally define all three so
that you could see what happened) are passed to the created process
UNTRANSLATED.  The new process will use them to define its values of
SYS$INPUT, SYS$OUTPUT, and SYS$ERROR.  At the point that the new
process does that, the names must be valid.  Hence, the only logical
names you can use are those known system-wide.

You can use $CREPRC in place of LIB$SPAWN if you don't need LIB$SPAWN's
ability to pass logical names and such.
							-- Jerry

---------------------------------------------------------------------
,LIC
Subject: Linking and VAX C
>From: Larry Setlow <pjt@yin.cpac.washington.edu>
Date: Fri, 8 Sep 89 10:35:48 -0700

A recent posting (maybe you saw it) reminds me of another
frequently-asked question:  "How come we have to have the vaxcrtl
explicitly added to the LINK command?"

I'm not sure I know the whole answer, other than "the C library's
names are too likely to conflict with user-named routines, so we can't
do it automatically without pissing a lot of people off, and we don't
like C very much, anyway, so nyah." but I know it's been covered a few
times before.

Larry

[ Note from the editor:  Trevor Taylor <TAYLORT@decus.com.au> has
pointed out some other information which encouraged me to write this: ]

If you explicitly link with that library you'll get an old library.
It's better to link to the sharable library, then you'll aways get the
newest library.

This is not documented in the HELP file (try HELP CC LINK for the old
method), just the VAX C manual that I have.  The manual doesn't mention
the dangers of the first method but does mention that using the
sharable library saves disk space and makes your program load faster.
One program I use was 154 blocks, with the shareable library it is 5 blocks.

You must use the shareable image if you want to have the most
up-to-date library.  The only way is to use an options file.  Create
a file called VAXC.OPT containing the line:

	SYS$LIBRARY:VAXCRTL/SHARE

Then link as follows:

	$ LINK myprog,VAXC/OPT

---------------------------------------------------------------------
,TIM
[ DEC wrote it, Billy Barron <billy@vaxb.acs.unt.edu> submitted it, I edited
it down (it included a complete history of time telling and calendars) -TAL ]

COMPONENT:  SYSTEM TIME                  OP/SYS:     VMS, Version 4.n

LAST TECHNICAL REVIEW:  06-APR-1988

SOURCE:   Customer Support Center/Colorado Springs

QUESTION: Why is Wednesday, November 17, 1858 the base time for VAX/VMS?

ANSWER:   November 17, 1858 is the base of the Modified Julian Day system.

The Modified Julian Day was adopted by the Smithsonian Astrophysical Obser-
vatory (SAO) in 1957 for satellite tracking.

Eighteen bits would allow the Modified Julian Day (the SAO day) to grow as
large as 262,143 ((2 ** 18) - 1).  From Nov.  17, 1858, this allowed for
seven centuries.  Using only 17 bits, the date could possibly grow only as
large as 131,071, but this still covers 3 centuries, as well as leaving the
possibility of representing negative time.  The year 1858 preceded the
oldest star catalog in use at SAO, which also avoided having to use negative
time in any of the satellite tracking calculations.

This base time of Nov.  17, 1858 has since been used by TOPS-10, TOPS-20,
and VAX/VMS.  Given this base date, the 100 nanosecond granularity
implemented within VAX/VMS, and the 63-bit absolute time representation (the
sign bit must be clear), VMS should have no trouble with time until:
     
   31-JUL-31086 02:48:05.47
     
At this time, all clocks and time-keeping operations within VMS will
suddenly stop, as system time values go negative.
     
Note that all time display and manipulation routines within VMS allow
for only 4 digits within the 'YEAR' field.  We expect this to be corrected
in a future release of VAX/VMS sometime prior to 31-DEC-9999.

---------------------------------------------------------------------
,VAC
Date: 26 Dec 89 09:49:00 EDT
>From: "Larry Schuette" <schuette@acoustics.nrl.navy.mil>
Subject: VAX vacuum

	The VAX vacuum has been available in the U.K. long before DEC
ever thought of building a 32bit processor.  When DEC did a trademark search
they only checked the U.S. (or at least not the U.K).  Much to their chagrin,
DEC discovered (too late) that VAX was already a licensed trademark in the U.K.
A deal was struck, and because the products are not similar, life goes on.
	However, DEC would be in trouble should the vacuum cleaner company
decide to make "computers that suck" as well.
	The best part of this story is that, every few years, a new eager 
Digital lawyer will "discover" that some British company has "stolen" the 
VAX trademark.  Typically, in an effort to impress the boss, they will fire
off letters threatening legal action unless some license (read money) is sent
DEC's way.  The lawyer is then shot down in flames when the same standard form
letter is sent from the U.K.

Larry

[ Thanks, Larry.  I also got a note from John C.
Klensin <KLENSIN@infoods.mit.edu> on Thu, 28 Dec 1989 asking:

>     If there is really any interest in this, the term apparently also
>  means something (non-computer) in Sweden.  When I was last there,
>  I saw "VAX" plastered in large letters on the outside of several
>  buildings out in the sticks along highways.  I never got around to
>  asking what they were associated with, but the buildings tended to
>  be surrounded by heavy machinery, of the road-grading variety.
>    I can pursue this if you like, otherwise will leave well enough
>  alone.
>     John Klensin
>     Klensin@INFOODS.MIT.EDU

[ Ok Info-VAXers, any answers?  Them to me.  -TAL ]

---------------------------------------------------------------------
,MAI
>From: "Kevin Cole at Gallaudet U. Washington DC" <CADS_COLE@GALLUA.BITNET>
Subject: Mail tips

[Some of these symbols may conflict with those in the ,SIGS posting, but the
information is still good.  -TAL
The following applies to VMS systems prior to VMS V5.0.  The MAIL$EDIT logical
may not be supported in later versions of VMS.]

To tell MAIL to use an editor, include the following line in your LOGIN.COM:
     
        $ MAIL  :== MAIL/EDIT=(SEND,REPLY=EXTRACT,FORWARD)
     
(Remove the "=EXTRACT" from the above line if you do not want the text from
old messages to be included in replies and forwarded messages.)  MAIL will
default to CALLABLE_EDT as it's choice of editor.  If you would prefer to use
EVE/TPU, put the folllowing in your LOGIN.COM as well:
     
        $ DEFINE/NOLOG MAIL$EDIT        CALLABLE_TPU
     
Another option is to have MAIL spawn a seperate process for editing.  You might
wish to do this if you have a COM file which you want executed every time you
use MAIL.  For example, I have one which turns off broadcasts before starting
the editor so that I do not get interrupted while sending mail.  In that case,
just define the logical MAIL$EDIT to point to your COM file instead of a
callable editor.  Like so:
     
        $ DEFINE/NOLOG MAIL$EDIT        SYS$LOGIN:MAILEDIT.COM
     
Finally, if you wish to redefine the numeric keypad functions while within mail
you can create a file (say, for example MAIL.INI) which contains the new
definitions:
     
        DEFINE/KEY PF2                "SHOW KEY/ALL"/TERMINATE
        DEFINE/KEY PF2/IF_STATE=GOLD  "SHOW KEY/ALL/STATE=GOLD"/TERMINATE
        DEFINE/KEY PF3                "EXTRACT"/TERMINATE
        DEFINE/KEY PF4                "IN%"""INFO-VAX@KL.SRI.COM""""/TERMINATE
        DEFINE/KEY PERIOD             "DELETE"/TERMINATE
        DEFINE/KEY ENTER              ""/TERMINATE
     
And add a line in your LOGIN.COM which points the logical MAIL$INIT at the file
     
        $ DEFINE/NOLOG MAIL$INIT        SYS$LOGIN:MAIL.INI

This supported mechanism in VMS V5.0 and later is:

        $ MAIL SET EDIT TPU

and remove any definitions of MAIL$EDIT that you may have.
--------------------------------------------------------------------------------
,MAI1
>From: fairfield@slacvx.slac.stanford.edu
>Subject:Re: New Mail won't die!
>
>In article <bs6m_l_.mendi@netcom.com>, mendi@netcom.com (Greg Mendizabal) writes:
>> ...
>> Now, everytime I logon I have 1638 new mail messages.  I cannot eradicate
>> this "flag".  I've tried deleting my mail directory, the "mail" itself 
>> (ie send myself new mail and then do a del/all within mail). 
>> ...
>> So, where is this flag bit set and kept????  We have another account with
>> the same problem (only 2 msgs however).
>> 
>> This is driving me nuts!  ;-)
>
>    Just start up MAIL, READ any and all new mail messages.  If you DON'T have
>any new mail, send yourself a message, exit mail, and begin this procedure
>again.  When you are _sure_ there are NO NEW MAIL messages left to read (I 
>don't mean you have to delete them, you just need to have read them), then 
>type READ/NEW and exit:
>
>	$MAIL
>	MAIL> READ/NEW
>	MAIL> READ/NEW
>               .
>               .
>               .
>	MAIL> READ/NEW
>	%MAIL-W-NONEWMAIL, no new messages
>
>	MAIL> EXIT
>
>The new mail count has now been reset to zero...
>
>		Cheers, Ken

[Ed. Note: BRYDON@dsny25.SINet.SLB.COM pointed out that it is only
necessary to send yourself mail IF your MAIL.MAI file has been deleted.]
---------------------------------------------------------------------
,QU1
>From: Rollo.Ross@levels.sait.oz.au
Subject: Diskquotas
Date: Sat, 2 Sep 89 22:52 +0930

         Users often complain that their disk usage as shown by SHOW QUOTA
doesn't match the total size of their files. Here are some reasons why this
happens:

1) Every file consists of at least one 1-block header and some number of
clusters, which are usually 3 blocks long. You may have only 1 block of
data, but you have removed 4 blocks from the space available to others, and
your quota shows 4 blocks gone. To see the effect of this, use
        $ DIR [...]/SIZE=ALL/GRAND
The "SIZE=ALL" shows both the space used and the number of blocks allocated
to the file. It does not show the 1 block header for each file, but you can
see how much this adds up to by looking at the count of files shown. So, if
you add together the LARGER of the two sizes shown in the grand total given by
the command above, and the total number of files, you have a better idea of
the total number of blocks allocated to you.

2) You may have files owned by you but stored in other directories. Your
own top-level directory is an example - it is is a xxxxx.DIR file stored in
the directory "above" where you log in. You can check the size of that file
using  the command DIR/SIZE=ALL/BY [-]

3) The quota file is sometimes inaccurate. For example, it may not get
updated if the system crashes just after you increase or decrease your
usage. Bugs in VMS on a cluster also cause the quota file to drift out of
touch with reality.  Your system manager may need to do some disk maintenance
(ANALYZE/DISK/REPAIR dev) to fix this problem.  Check with him/her to see
if this is the case.

        So, your problem is probably partly misunderstanding of how your
disk  quota works (items 1 and 2 above), possibly confused by a bug in the
system (item 3).

Rollo Ross, Network Manager
Comp Centre,  Sth Aust Institute of Technology, The Levels, SA 5095, Australia
Voice: +61 8 343 3158                 Old way:  Rollo.Ross@levels.sait.oz{.au}
Fax: 349 6939      DTE 505282622004       Standard way: Rollo.Ross@sait.edu.au

---------------------------------------------------------------------
,QU2
Subject: Diskquota Discrepency
>From: Marc Shannon <R602MS5U@vb.cc.cmu.edu>
Date: Sat,  2 Sep 89 16:35:58
     
     The SHOW QUOTA returns the number of blocks you have allocated over
the entire disk.  Presuming that all of your files are in your directory
tree, use the DIRECTORY/SIZE=ALLOC/GRAND [...] command (from your home
directory) to see just how many blocks you are using.

     Note the "/SIZE=ALLOC" qualifier; this has DIRECTORY report the
number of blocks which each file is *allocated*, not just in actual use.
(Most systems have a "cluster-size" of 3 which means that every file
must take up a multiple of 3 blocks, so even files with one line in them
take up 3 blocks.)

     Okay, now you're getting close, but VMS still charges you a bit
more.  For every file you own, you are also charged 1 block so that VMS
can store information in the INDEXF.SYS file on your disk about how to
find your file.  So, take your total number of blocks and add the number
of files and directories found in your directory tree.

       Now you should be almost at the number reached by SHOW QUOTA.
Don't forget your main directory.  Use DIR/SIZE=ALLOC [-]username.DIR to
see how large your main directory file is and add that (plus 1 for its
INDEXF entry) to your total.
     
       This final total should be what SHOW QUOTA returns.
     
--Marc

---------------------------------------------------------------------
,U*XARGS

From: tp@mccall.com (Terry Poot)
Subject:Re: Passing args to C programs

In the C code, everything is the same. However, you have to define a foreign
command symbol for your program. For instance, if your executable is
dua0:[foo]test.exe, enter

foo :== $dua0:[foo]test.exe

You can then run your program as:

foo arg1 arg2

and the command line arguments will be passed through argc and argv as usual.

A few notes:

1) Note the "$" at the beginning of the file spec, it's required. Also, the
filespec will default to looking in sys$system for the executable so be sure to
use a fully qualified file name (i.e. include the device and directory or some
logical name that points to the device and directory.

2) DCL normally forces all unquoted arguments to upper case. The C run-time
library counters this by forcing them all to lower case. If you want an
argument
to be passed in upper or mixed case, you have to quote it, as in:

foo "-AaBb" arg1 Arg2 ARG3 "Arg4"

In the above, the options string and Arg4 will get through in mixed case, args
1-3 will all be lower case. And don't try the short cut of quoting all the args
with one set of quotes, because that will make the whole quoted string one
argument.

3) argv[0] is NOT the command typed to run the program, it is the whole fully
qualified file name. This can mess up the way most unix programs print their
error messages. Of course, your program can do something like:

#ifdef VMS
argv[0] = "foo"
#endif

to get around this.

Obtw, yes this is the right group for this type of question.
---------------------------------------------------------------------
,VI
From: ewilts@galaxy.gov.bc.ca (Ed Wilts)
Subject:Re: VMS version of vi

In article <1992Oct15.170036.569@cine88.cineca.it>, le9miiwa@cine88.cineca.it
writes:
> 
> Does somewhere exist a VMS version of 'vi, the Unix editor
> quite a lot of people here would *jump*  on it!

This should be in the FAQ...  It's bundled with Posix (and the Posix license is
*free* with VMS 5.5 - just load the media from the CD.

$ posix posix$bin:vi. login.com

---------------------------------------------------------------------
,CPDIR
>From: bfoss@goofy.apple.com (Brad Foss)
Subject: Copy-Directory to Remote Host
Organization: Network Innovations

>    Does anyone know why DECNET doesn't support the copying of directories
> with unknown sub-directory structure?  Right now, to copy a directory
> between 2 vaxes I must login to the destination host, create all the
> sub-directories required in the destiation directory and use individual
> copy commands to pull the files from each source host sub-directory into
> the destination directory.

I've had occasion to move directory structures, even whole disks to a remote
node.  The only way I've succeeded at it is to use BACKUP to create a
saveset on the remote host, then log in to the remote host and backup
(restore) the saveset to the desired disk.  Like this;

    (at local host)
$ BACKUP/LOG DISK:[DIR...]*.*;* REMOTE::DISK:[DIR]SAVESET.BCK/SAVE

( at remote host)
$ BACKUP/LOG DISK:[DIR]SAVESET.BCK/SAVE DISK:[*...]

You said any help would be appreciated, and this sure beats having to create
directories and use COPY.  BACKUP will create the directories as needed.  I
expect others will suggest that you create the saveset on the local host,
then DECnet it to the remote host.  It seems to run a little quicker that
way.
--
Dick Munroe				Internet: munroe@dmc.com
Doyle Munroe Consultants, Inc.		UUCP: ...uunet!thehulk!munroe
267 Cox St.				Office: (508) 568-1618
Hudson, Ma. USA				FAX: (508) 562-1133

GET CONNECTED!!! Send mail to info@dmc.com to find out about DMConnection.
Newsgroups: vmsnet.misc,vmsnet.networks.desktop.pathworks,comp.os.vms