[comp.os.vms] What is SDL?

nagy%warner.hepnet@LBL.GOV (Frank J. Nagy, VAX Wizard & Guru) (01/19/88)

>   Awright, guys, I give up. What's SDL? It's not in the Master Directory, and
> it's not in my DEC Dictionary. The system responds to '$ SDL' with '_File:',
> and there's an SDLNPARSE.EXE in SYS$SYSTEM, but no help that I can find.
> Curiosity is going to kill this cat :-).
     
SDL stands for one of System/Structure/Symbolic Definition Language (sort
of like EVE, take your pick).  It is the successor to MDL - Maynard
Definition Language (.MDL files from older fiche).  You can't find SDL
because its not distributed with the system (boo hoo ;-) as it is not
a "supported" product.  A number of people have been trying for years
to get Digital to document and ship SDL with VMS or sell it as a layered
product to no avail.  Why?  Well, VMS makes it so easy to write
subsystems and applications using multiple languages *EXCEPT* for
providing a means to generate symbol/structure definitions for those
multiple language modules from a common source.  Anyone with SCAN
want to write a PD version of SDL for the net and DECUS?


= Frank J. Nagy   "VAX Guru & Wizard"
= Fermilab Research Division EED/Controls
= HEPNET: WARNER::NAGY (43198::NAGY) or FNAL::NAGY (43009::NAGY)
= BitNet: NAGY@FNAL
= USnail: Fermilab POB 500 MS/220 Batavia, IL 60510

I7100501@DBSTU1.BITNET (Eckart Meyer) (01/24/88)

Someone posted this information a few weeks ago, but I think, it should
be repeated:
People having the VWS Software (Workstation) do have SDL programs for
FORTRAN, MACRO, PASCAL, C, BLISS and PL/1. Get SDL*.EXE from the .A saveset
and SDLV3.CLD. Then type

    $ SET COMMAND SDLV3
    $ SDL/NOPARSE/LANG=language sdl_file output_file

Be shure to use SDLNPARSE from the VWS-Kit since this seems to be another
Version than the one from VMS 4.5.

Language is BLISS,CC,FORTRAN,MACRO,PASCAL or PLI.

I extracted all modules from STARLETSD.TLB and used SDL to convert them
into .H files for the C language (LANG=CC).

-----------------------------------------------------------------------------
Eckart Meyer                            BITNET: I7100501@DBSTU1
Inst. f. Nachrichtentechnik             PHONE:  0531 / 391-2454
Technical University of Braunschweig    ADDR:   Schleinitzstr. 23
Germany                                            3300 Braunschweig
-----------------------------------------------------------------------------

JOE@FHCRCVAX.BITNET (Joe Meadows) (01/28/88)

>It would be highly intresting to see some SDL definitions, just
>to get an idea about it. Is there anyone out there who can demonstrate
>how to define, say, SYS$GETJPI or something?

Okay, from the Fiche, here's the SDL for SYS$GETJPI:
(note - discussion of SDL project at end of message)

/* $GETJPI
/* Get Job process information
/* (and so on...)
ENTRY SYS$GETJPI ALIAS $GETJPI PARAMETER (
        LONGWORD UNSIGNED VALUE NAMED EFN DEFAULT 0, {/* TYPE(EFNUM),
        LONGWORD UNSIGNED NAMED PIDADR IN OUT DEFAULT 0, {/* TYPE(PROCID),
        CHARACTER DESCRIPTOR NAMED PRCNAM IN DEFAULT 0, {/* TYPE(PROCNAME),
        ANY NAMED ITMLST IN, {/* TYPE(ITEMLIST),
        QUADWORD UNSIGNED NAMED IOSB OUT DEFAULT 0, {/* TYPE(IOSB),
        ADDRESS(ENTRY) NAMED ASTADR DEFAULT 0, {/* TYPE(ASTADR),
        LONWORD UNSIGNED VALUE NAMED ASTPRM DEFAULT 0, {/* TYPE(USERPARM)
        ) RETURNS LONGWORD; {/* TYPE(CONDVALU);

And here's a structure definition (for $STSDEF):

module $STSDEF;
/* Macros to define system service failure and status codes
/* (and so forth - down to the meat)
aggregate STSDEF union prefix STS$;
  STSDEF_BITS0 structure fill;
    SEVERITY bitfield mask length 3; /* severity code
    COND_ID bitfield mask length 25; /* condition id
    CONTROL bitfield mask length 4; /* control bits
  end STSDEF_BITS0;

  STSDEF_BITS1 structure fill;
    SUCCESS bitfield mask; /* success
    FILL_1 bitfield length 2 fill prefix STSDEF tag $$; /* skip severity level
    MSG_NO bitfield mask length 13; /* message number
  end STSDEF_BITS1;

  STSDEF_BITS2 structure fill;
    FILL_2 bitfield length 3 fill prefix STSDEF tag $$;  /* skip severity level
    CODE bitfield mask length 12; /* code
    FAC_SP bitfield mask;       /* 1 if facility specific
    FILL_3 bitfield length 11 fill prefix STSDEF tag $$;
    CUST_DEF bitfield mask; /* 1 if subsystem is customer (or css) defined
    INHIB_MSG bitfield mask; /* 1 if message should not be printed
    FILL_4 bitfield length 3 fill prefix STSDEF tag $$; /* reserved control bit
s
  end STSDEF_BITS2;

  STSDEF_BITS3 structure fill;
    FILL_5 bitfield length 16 fill prefix STSDEF tag $$; /* skip message #
    FAC_NO bitfield mask length 12;     /* facility is 12 bits
    FILL_6 bitfield length 4 fill prefix STSDEF tag $$; /* control bits
  end STSDEF_BITS4;
/*+
/* define severity codes
/*-
  constant WARNING equals 0 prefix STS tag $K /* Warning
  constant SUCCESS equals 1 prefix STS tag $K /* Success
  constant ERROR equals 2 prefix STS tag $K /* Error
  constant INFO equals 3 prefix STS tag $K /* Info
  constant SEVERE equals 4 prefix STS tag $K /* Severe

end STSDEF;
end_module $STSDEF;

!-------------------------------------------------------------

        Of course, the above isn't shipped with VMS, at least, not in that
form. Apparently SDL can read the above file, and write out a binary definition
file (which is much smaller), and these short binary files get included in the
VMS distribution. Nowhere is this file format documented (unless I have somehow
overlooked it, I looked through the fiche for anything to do with it and
found nothing). However, the command SDL/NOPARSE/DUMP will read one of these
files (they are all stored in the text library SYS$SHARE:STARLETSD) and
create a dump for you, and if you paw through the fortran or basic installation
tapes you can find utilities that can be used with SDL/NOPARSE/LANGUAGE=(),
or if you are lucky enough to have VWS than apparently you get all the major
language modules for use with SDL/NOPARSE/LANGUAGE=().

        Not having VWS, and wanting more control over the looks of the
include/header files, I have been working on writing replacement modules
for use with SDL/NOPARSE/LANGUAGE=(), and have a working DUMP module, and
am currently working on a C module. I hope to be able to create a document
explaining how to do this, and I will post it and the code I come up with
in the near future. Until then, you can contact me for "pre-release" copies.
My hopes are to get several people to work on several different modules
(i.e. MODULA, PASCAL, etc.) and bring all the work together in one place,
submitting it to DECUS all at the same time.

        The code I have for the DUMP module and C module is in C. I plan
on writing a document explaining the structures and how things get glued
together (as soon as I know how they are!) and I would hope that people
writing modules for other languages might write in the language they
wish to create include/header/definition files for.

        If there is enough interest, I will post the code to the net,
otherwise it will just make it to the DECUS library. I will keep the net
posted on the progress.

        Cheers,
        Joe Meadows     joe@fhcrcvax

p.s. I want to create a module that will create "routine templates" for
use in TPU, if anybody has some ideas, let me know.. I was just thinking
of creating an indexed file, indexed by routine name, with the template
format in text form as the rest of the record... and having a call_user
routine to read the indexed file..

-------

I7100501@DBSTU1.BITNET (Eckart Meyer) (02/11/88)

FOP@SECTHF51, Daniel Berglund,  writes:
> It would be highly intresting to see some SDL definitions, just
> to get an idea about it. Is there anyone out there who can demonstrate
> how to define, say, SYS$GETJPI or something?

The definitions for SYS$GETJPI, for example can be found in module
STARDEFFL in STARLETSD.TLB. You have to extract this module from the
library and use SDL to make a definition file.

BTW: STARDEFFL means STARlet DEFinitions from F to L, so JPI$... is
in this range.

-----------------------------------------------------------------------------
Eckart Meyer                            BITNET: I7100501@DBSTU1
Inst. f. Nachrichtentechnik             PHONE:  0531 / 391-2454
Technical University of Braunschweig    ADDR:   Schleinitzstr. 23
Germany                                            3300 Braunschweig
-----------------------------------------------------------------------------


-------