[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