[Info-vax] portable sequential file formats (was: Re: Couple of questions on VMS -> world)

Bill Gunshannon bill at server3.cs.scranton.edu
Thu Mar 19 11:36:14 EDT 2015


In article <meep77$k6r$1 at dont-email.me>,
	Stephen Hoffman <seaohveh at hoffmanlabs.invalid> writes:
> On 2015-03-19 14:31:23 +0000, David Froble said:
> 
>> Stephen Hoffman wrote:
>>> On 2015-03-19 05:44:49 +0000, David Froble said:
>>> 
>>>> So, what's wrong with using Bliss?  It's there.  It works.  It was 
>>>> designed for this kind of stuff.
>>> 
>>> Bliss is not a language that most folks have used or even know about, 
>>> and is not particularly available on platforms beyond DEC-related and 
>>> not commonly used on those, and Bliss suffers from some of the same 
>>> issues as C around memory management, pointers (keep removing dots 
>>> until the dereference crashes and then add one dot back, etc) and 
>>> memory management and/or garbage collection support.  Bliss has a 
>>> massively better preprocessor and macro capabilities than does C, 
>>> though the value of an improved preprocessor might be the subject of 
>>> some debate with certain folks.
>>> 
>>>> I won't say MACRO-32, since I have to beat myself with an ugly stick to 
>>>> look at some of my old code.  That's not something you do as a hobby. 
>>>> Either lots of it, or none of it.
>>> 
>>> Macro32 does very well, particularly with the eponymous macros support, 
>>> that for better and for worse.  As for garbage collection and memory 
>>> management and the rest, most of the Macro32 is issues are similar to C.
>>> 
>>> Macro32 and C both require far more glue code than I'd prefer.
>>> 
>>> Rust language is more interesting (to me), though that compiler is 
>>> probably far too new for many folks to use.  Then there's that the 
>>> availability of Rust isn't widespread.  (Yet?)  And Rust is not yet 
>>> available on VMS AFAIK.
>>> 
>>> 
>> 
>> Bliss is available on VMS, and I'd guess that most people at VSI have 
>> some knowledge about it.
> 
> Most folks that were in OpenVMS Engineering would.
> 
>> If there is no language that does things as well as desired, perhaps 
>> Bliss is the language that VSI can modify to solve the perceived or 
>> real deficiencies.
> 
> VSI has better things to do, at least for the near term.
> 
>> Or, re-engineer Basic for the purpose and then use a simple easy to 
>> understand language ....
>> 
>> :-)
> 
> 
> Here's a package with ease-of-use 
> <http://scratch.mit.edu/scratch2download/>  <http://scratch.mit.edu/>  
>:-)  Alas, Scratch can require installing some bits of software that 
> various folks won't want to install.
> 
> More seriously, by the time the heap memory usage was reworked or 
> removed, and lower-level hardware access akin to the C built-ins added, 
> and memory management sorted out (pushing BASIC downward), or by the 
> time that OOP features and related were added (pushing BASIC upward), 
> it'd look very different than it does now.  And VSI would effectively 
> have themselves another Bliss; another OS-specific[1] language that all 
> but a few folks have never seen or used.
> 
> There's some Bliss code for a simple "Hello World" program at 
> <http://www.itec.suny.edu/scsys/vms/vmsdoc/72final/5843/5843pro_003.html>. 
>  (That Bliss code would have been shorter with the use of the Bliss 
> %ASCID or $DESCRIPTOR syntax, but it'll still give you an idea of what 
> you're dealing with.)  There's also an example 
> <sys$examples:VMS$PASSWORD_POLICY.B32> around that might be worth a 
> look.

Or, there is this:

module NINTY_NINE_BOTTLES_CT (main=BOTTLES) =
!
!   "99 Bottles of Beer on the Wall"
!   using BLISS on DIGITAL's Alpha OpenVMS
!   by Ron Brender, brender at zko.dec.com
!
begin

external routine
    printf	    : novalue	    external_name('DECC$GXPRINTF');
		    !
		    ! To "port" this program to UNIX or WNT, use
		    ! external_name('printf') or the appropriate lower case
		    ! compilation option instead of the above.
		      

macro
    PUT_TEXT(T) =
	printf(uplit(%asciz '%s'), uplit(%asciz T))
	%,
    PUT_NL (dummy) =
	printf(uplit(%asciz %string(%char(10))))
	%;

compiletime
    TEMP = 0;

! In principle, the complete text can be constructed at compile-time and
! output with a single PUT_TEXT call, however, that runs up against a
! compile-time maximum string length. This implementation constructs a
! complete stanza at compile-time.
!
macro
    BOTTLE_S(COUNT) =
	%if COUNT eql 1 %then 'bottle' %else 'bottles' %fi
	%,

    BOTTLE_COUNT(COUNT) =
	%assign(TEMP, COUNT)
	%if TEMP eql 0 %then 'No' %else %string(%number(TEMP)) %fi
	%,

    BOTTLE_STANZA(COUNT) =
	PUT_TEXT(%string(
	    BOTTLE_COUNT(COUNT), ' ', BOTTLE_S(COUNT),
		' of beer on the wall; ',
	    BOTTLE_COUNT(COUNT), ' ', BOTTLE_S(COUNT), ' of beer', %char(10),
	    'Take one down and pass it around', %char(10),
	    BOTTLE_COUNT(COUNT-1), ' ', BOTTLE_S(COUNT-1),
		' of beer on the wall', %char(10),
	    %char(10)))
	%,

    BOTTLE_TEXT(COUNT)[] =
	BOTTLE_STANZA(COUNT);
	%if COUNT gtr 1 %then
	    BOTTLE_TEXT(COUNT - 1)
	    %fi
	%;

global routine BOTTLES : novalue =
    begin

    ! Title
    !
    PUT_NL();
    PUT_TEXT('        "99 Bottles of Beer on the Wall"'); PUT_NL();
    PUT_NL();

    BOTTLE_TEXT(99);

    end;

end
eludom

:-)

bill

-- 
Bill Gunshannon          |  de-moc-ra-cy (di mok' ra see) n.  Three wolves
billg999 at cs.scranton.edu |  and a sheep voting on what's for dinner.
University of Scranton   |
Scranton, Pennsylvania   |         #include <std.disclaimer.h>   



More information about the Info-vax mailing list