Help! I am going to code IBM Assembler! 
Author Message
 Help! I am going to code IBM Assembler!

I was just hired recently as a new computer consultant.  My first
assignment starting 9/2/97 will be to modify a large IBM 360/370 Assembler
program for Year-2000 date compliance.  I will know more about the project
after that date.

The reason I am calling for help is that I haven't even looked at IBM 360
Assembler since I passed a pass/fail course on the subject in college like
in 1975.  And no, I didn't keep  the book, of course.  I do have a couple
of books on order to review from Barnes & Noble, and in the meantime have
checked several books out from a college library.

Any practical tips on what to watch out for, how to keep score of the
logic, what book or document to get somewhere?

TIA.
Al Eilers



Sat, 12 Feb 2000 03:00:00 GMT  
 Help! I am going to code IBM Assembler!

Rick,  Replying to your helpful message from yesterday:

Quote:
> I caught between crying about your situation and
> being mad at you and/or you're contract house
> for getting you into this position.

You can be mad at us both.  My company suggested the phone interview but
they were not involved when I talked to the client company.  We are both
guilty!

Quote:
> I'm hoping that your last 23 years have been spent
> doing lots of IBM mainframe work (at least you'll understand
> the environment)...

Yes -- years of IBM mainframe with PL/I, COBOL, EASYTRIEVE, JCL.

Quote:
> ... and you play with other a PC assembler at home
> just for fun, ...

No, but I did just take a college level class in C and that's similar to a
machine language.  I did enjoy it.

Quote:
> and even though you've been doing higher level
> languages you're an assembler programmer at heart.

I do like to solve detailed puzzles... and isn't that what low-level
programming is?

Quote:
> Maintenance is normally much harder than development when you're
> new to a set of programs.  This can be even more true in assembler
> where structured programming was rarely practiced.  The danger
> is changing something of which you know not.  Looks ok to you,
> but it really screws up the works.

True statement.  I will have to look the code over and understand it before
diving in.  A couple of Assembler ex-programmers will be available onsite
to ask questions of.

Quote:
> I'm curious as to how much the consultant house is charging you for
> your time.  It can be a problem when you're being billed out as an
> expert when you're not.

If I knew the billing rate, I probably couldn't post it here.  But it is a
good question, since that rate will determine the level of my client's
expectations of me.

Quote:
> My suggestion: Read the entire 360 principles of operation.
> it is much simpler than its 370 and 390 counterparts, but covers
> almost everything you need.

I will use theirs if they have it, or try to get one if not.

Quote:
> Beware the difference between
> the Load and a LoadAddress instructions (L and LA).

Thanks for the warning.  Any further clues will be appreciated.

Quote:
> Good Luck.

Thanks again.  It appears I will need it.

Al Eilers    :^)x



Sun, 13 Feb 2000 03:00:00 GMT  
 Help! I am going to code IBM Assembler!

Quote:

> Rick,  Replying to your helpful message from yesterday:

> > I'm hoping that your last 23 years have been spent
> > doing lots of IBM mainframe work (at least you'll understand
> > the environment)...

> Yes -- years of IBM mainframe with PL/I, COBOL, EASYTRIEVE, JCL.

If you've run COBOL compiles with the PMAP option, you've at least
"seen" assembler... although not nearly as readable as labeled and
commented "handwritten" assembler.

Quote:
> > ... and you play with other a PC assembler at home
> > just for fun, ...

> No, but I did just take a college level class in C and that's similar to a
> machine language.  I did enjoy it.

C is "not even close" to assembler...  Unless you have access to the
HLASM Toolkit or a similar "structured programming" assembler toolkit,
you'll have to "roll your own" IF-THEN-ELSE, CASE, DO WHILE/UNTIL,
SELECT, etc. structures.  Those structures will exist even in old
"spaghetti" code, but won't necessarily be recognizable to the
inexperienced eye.

Quote:
> > and even though you've been doing higher level
> > languages you're an assembler programmer at heart.

> I do like to solve detailed puzzles... and isn't that what low-level
> programming is?

"Assembler" is not necessarily synonymous with "low-level".  Complex,
sophisticated applications can be coded entirely in assembler (our NOTIS
LMS product is such an application).

[ snip ]

Quote:
> > My suggestion: Read the entire 360 principles of operation.
> > it is much simpler than its 370 and 390 counterparts, but covers
> > almost everything you need.

> I will use theirs if they have it, or try to get one if not.

http://ppdbooks.pok.ibm.com:80/cgi-bin/bookmgr/bookmgr.cmd/BOOKS/DZ9A...

will get you to the ESA/390 PrinOps manual (the server is kinda slow...)

Quote:
> > Beware the difference between
> > the Load and a LoadAddress instructions (L and LA).

> Thanks for the warning.  Any further clues will be appreciated.

You may or may not have to "worry" about AMODE (24-bit or 31-bit
addressing mode) and RMODE (program may be  executed "above the line",
or only "below the line"); some instructions (LA, BAL, and a few others)
behave differently depending on AMODE/RMODE.  Some others (probably not
frequently used in application code) behave differently depending on
whether they are executed in "supervisor" or "problem" state.  Those
characteristics are explained in "painful" detail in the PrinOps manual,
but that tome is definitely not a "tutorial" on assembler programming.

Quote:

> > Good Luck.

> Thanks again.  It appears I will need it.

The above comments notwithstanding, assembler is not that difficult to
grasp.  You *do* have to pay close attention to detail, however.

      -jc-

Quote:

> Al Eilers    :^)x



Sun, 13 Feb 2000 03:00:00 GMT  
 Help! I am going to code IBM Assembler!

Oh my o my,

I read the answer posted by Rick and agrees wholeheartedly with what he
writes. In addition (feeling experienced with IBM assembly from working
with it since the late sixties) I would state that the most important
part of any assembly source code is the text usually found from column
30 or 35 onwards - the comment field.
Finally you must (of course) feel familiar with both the 360 instruction
set which is documented in the Principles of operation manuals
(concentrate upon the chapters: General instructions, Decimal
instructions
and Floating point instructions, you won't normally need the rest) and
also the macros used (documented in manuals like "services to assembly
programs" or similar book titles)

Don't even dream of making changes to programs which are not fully and
properly commented unless you feel able to find out the complete logic
implemented. (You might look up some IBM source code to get the feeling
what I mean by "properly commented".) Usually it will be cheaper for all
parties involved to discard "improperly" documented programs and design
them over from scratch rather than attempting to make anything but some
minimal change.

Please for your own sake: Be very careful what you do!

and good luck

regards Sven

Quote:

> I was just hired recently as a new computer consultant.  My first
> assignment starting 9/2/97 will be to modify a large IBM 360/370 Assembler
> program for Year-2000 date compliance.  I will know more about the project
> after that date.

> The reason I am calling for help is that I haven't even looked at IBM 360
> Assembler since I passed a pass/fail course on the subject in college like
> in 1975.  And no, I didn't keep  the book, of course.  I do have a couple
> of books on order to review from Barnes & Noble, and in the meantime have
> checked several books out from a college library.

> Any practical tips on what to watch out for, how to keep score of the
> logic, what book or document to get somewhere?

> TIA.
> Al Eilers



Sun, 13 Feb 2000 03:00:00 GMT  
 Help! I am going to code IBM Assembler!



:I am troubled by that person's post.  My experience level is somewhat
:better, but I wouldn't feel qualified to take on the assignment he has.

As someone who has recently completed such an assignment, let me come down
squarely on the side of "it all depends". The only real mistake our new
acquaintance made was not to ask to see the code before he agreed to the
assignment. It might turn out to be a piece of cake. On the other hand, I
remember the early 360 days, when we all sat around figuring out how
perform unnatural acts with obscure instructions like MVO, just to save a
single byte.

Best,
        -- Chuck Crayne
-----------------------------------------------------------

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



Sun, 13 Feb 2000 03:00:00 GMT  
 Help! I am going to code IBM Assembler!

I am troubled by that person's post.  My experience level is somewhat
better, but I wouldn't feel qualified to take on the assignment he has.

I fear he may be getting in over his head given his very limited
Assembler exposure.  I don't think you can understand it just studying
stuff over a weekend.

For myself, I've been a S/360-370 COBOL programmer for 20 years.  From
figuring out SOC7s in the early days (before "Abend-Aid") and looking
at PMAPS, I have a vague understanding of assembler statements and
S/360 principles of operation.

I have maintained Assembler programs, but making simple changes, such as
revising a hard coded table (look for those "DC"s), changing literals.
I once added a file output by merely copying a DCB and doing a CLC for
a certain condition.  These kinds of things I can do.

If making it year 2000 compliant is merely adding two bytes to a DS,
that's easy enough (provided you carefully check for redefines and
tricks within the code itself to change location pointers in
base/displacement addressing.)

But a lot of YR 2000 stuff involves somes fancy footwork.  People are
converting packed decimal dates to binary to squeeze in another digit to
allow for part of the century (like a 50 year window.)  I wouldn't
mess with CVB or binary arithmetic and byte splits.

Assembler programming consists of knowing TWO parts:
  The first is the language--the statements, syntax, and of course the
principles of operation.  Learning the PoP is not easy, IMHO.  There's a
ton of things, and you have to know what's significant and what's rarely
used.
  The second is the STYLE.  I've noticed application assembler programmers
generally use standardized techniques to do something.  When I've tried
to figure out some Assembler code and gotten help, another programmer
is instantly able to recognize some way to accomplish something.  In
assembler, esp in the past, a lot of stuff was done to shave off bytes
and cycles.  Where a COBOL programmer like myself would set up a counter
field separately to control a loop, an assembler person would make clever
use of registers and addressing styles.  (It's hard for me to explain
exactly what I mean by this, but I'm sure you gurus know what I mean.)

  I don't think someone cold would be able to handle this STYLE issue,
even armed with a manual, esp if he has to make logic changes.



Mon, 14 Feb 2000 03:00:00 GMT  
 Help! I am going to code IBM Assembler!

Quote:

> I am troubled by that person's post.  My experience level is somewhat
> better, but I wouldn't feel qualified to take on the assignment he has.

I'm troubled too. It reminds me of the desperate post comp.lang.apl
received. Management assigned some poor soul to program quick and
dirty tools to translate some old APL programs to C.

[snip]

Quote:
> Assembler programming consists of knowing TWO parts:

[snip 1st part]

Quote:
>   The second is the STYLE.  I've noticed application assembler programmers
> generally use standardized techniques to do something.  When I've tried
> to figure out some Assembler code and gotten help, another programmer
> is instantly able to recognize some way to accomplish something.  In
> assembler, esp in the past, a lot of stuff was done to shave off bytes
> and cycles.  Where a COBOL programmer like myself would set up a counter
> field separately to control a loop, an assembler person would make clever
> use of registers and addressing styles.  (It's hard for me to explain
> exactly what I mean by this, but I'm sure you gurus know what I mean.)

Alan Perlis used the term "idioms" for this. He was talking about APL
in particular, but idioms are developed in almost all programming
languages. Yes, there are many ALC idioms. The APL community summarized
the outstanding APL idioms in several APL Idiom Lists, of which the
Finnish list is the most extensive. I don't think that's been done
for ALC.

--







Mon, 14 Feb 2000 03:00:00 GMT  
 Help! I am going to code IBM Assembler!

Quote:

> Oh Al,

> I caught between crying about your situation and
> being mad at you and/or you're contract house
> for getting you into this position.

> I'm hoping that your last 23 years have been spent
> doing lots of IBM mainframe work (at least you'll understand
> the environment) and you play with other a PC assembler at home
> just for fun, and even though you've been doing higher level
> languages you're an assembler programmer at heart.

> Maintenance is normally much harder than development when you're
> new to a set of programs.  This can be even more true in assembler
> where structured programming was rarely practiced.  The danger
> is changing something of which you know not.  Looks ok to you,
> but it really screws up the works.

> I'm curious as to how much the consultant house is charging you for
> your time.  It can be a problem when you're being billed out as an
> expert when you're not.

> My suggestion: Read the entire 360 principles of operation.
> it is much simpler than its 370 and 390 counterparts, but covers
> almost everything you need.  Beware the difference between
> the Load and a LoadAddress instructions (L and LA).

oh come on, doesn't everyone take the 370 & ESA/370 POP's to
the beach for a little joy reading??  or am I just weird that
way?  Doesn't everyone get a thrill out of how a "PC"
differs from a "PT" and a "LASP"?

:)

Seriously, btw, there is some reference (I think 370, revised) of a
floating-point operation--x'b244' and x'b245'--for SQuare root,
long (DR) and short (ER).  Has anyone seen this mentioned?
used it?

Just curious because since most mpu's floating-pt offers trig
and other math functions onboard the chip, has the 370/390
ventured to add these to the f-pi set?



Thu, 17 Feb 2000 03:00:00 GMT  
 Help! I am going to code IBM Assembler!

Humor Xpost to c.s.y2k., apparently this was a serious question on
c.l.asm370


Quote:
>I was just hired recently as a new computer consultant.  My first
>assignment starting 9/2/97 will be to modify a large IBM 360/370 Assembler
>program for Year-2000 date compliance.  I will know more about the project
>after that date.

>The reason I am calling for help is that I haven't even looked at IBM 360
>Assembler since I passed a pass/fail course on the subject in college like
>in 1975.  And no, I didn't keep  the book, of course.  I do have a couple
>of books on order to review from Barnes & Noble, and in the meantime have
>checked several books out from a college library.

>Any practical tips on what to watch out for, how to keep score of the
>logic, what book or document to get somewhere?

>TIA.
>Al Eilers

c.s.y2k wants to know

1) how much is the client is paying for this assembler Y2K expert?

2) does the client know what he's buying?

3) does the phrase, "Game Over Man" mean anything to you?

4) why are there still "ah, you geeks won't see $200/hour consulting
rates" articles being posted to c.s.y2k?

Y2K is the children's crusade.... and there are 851 days left.

P.S. to Al, this isn't a thump on you.  You are the innocent here but
someone is running a scam on someone.

Cory Hamasaki  



Fri, 18 Feb 2000 03:00:00 GMT  
 Help! I am going to code IBM Assembler!

Eli and G. of c.s.y2k PLEASE READ!


Quote:
>Oh my o my,

>I read the answer posted by Rick and agrees wholeheartedly with what he
>writes. In addition (feeling experienced with IBM assembly from working
>with it since the late sixties) I would state that the most important
>part of any assembly source code is the text usually found from column
>30 or 35 onwards - the comment field.

Sven, you had comments?

Quote:
>Finally you must (of course) feel familiar with both the 360 instruction
>set which is documented in the Principles of operation manuals
>(concentrate upon the chapters: General instructions, Decimal
>instructions
>and Floating point instructions, you won't normally need the rest) and
>also the macros used (documented in manuals like "services to assembly
>programs" or similar book titles)

>Don't even dream of making changes to programs which are not fully and
>properly commented unless you feel able to find out the complete logic
>implemented. (You might look up some IBM source code to get the feeling
>what I mean by "properly commented".) Usually it will be cheaper for all
>parties involved to discard "improperly" documented programs and design
>them over from scratch rather than attempting to make anything but some
>minimal change.

>Please for your own sake: Be very careful what you do!

>and good luck

>regards Sven

Sven and Rick, you both ignore the crucial technical issue. It takes
longer to make an ASM/370 programmer than we have left.  Y2K projects
are deathmarches.  We have 851 days left including weekends, holidays,
sick days.

You give good advice, S360 POP is easier to read that the ESA/390 POP,
the old supervisor and datamanagement services were simple, almost
"A Child's Garden of Operating Systems Interfacing".  You ignore the
fact that it would take 2-3 years of careful grooming to create a
1972 style ASM/370 programmer.  Then you still have to add another 2-3
years of finishing school to add VSAM, VTAM, CICS, DB2 or whatever.

Y2K, especially Y2K Assember Language, is a come as you are party.  It
flat cannot be done with nubies.

May God have mercy on our souls.

Cory Hamasaki  



Fri, 18 Feb 2000 03:00:00 GMT  
 Help! I am going to code IBM Assembler!

Boy does this bring back memories. Actually to become proficient in IBM as a
system programmer or Program Support Rep. called a PSR one had to attend
many many hours of PI (programmed instruction) on a 2741 linked
terminal(selectric typewriter with a network connection,slooowww),
then attend many months of go away schools. Usually in Calif or Chicago.

I then supported Cobol, Vsam, etc, etc, etc, whole bunches of it. BUT you
had to really know BAL or you were dead(go to mgmt you dummy).

Fact is that my old employer sent out feelers for retirees who had these skills
asking them to submit resumes.  I sent mine it but it was a 'black hole'.
So I guess I'll stay down on the farm and work at my own small business and
watch the Info Ago grind to a halt. Knowing that it was in their power to tap
those old IBM retirees they shed so long ago but apparently playing
head in the sand until the very end.

It was a good run while it lasted. I don't look back much anymore. Microsoft
Access and Linux are my playtoys now.  VM/SP where did you ever go to?

Lazarus


Quote:

>You give good advice, S360 POP is easier to read that the ESA/390 POP,
>the old supervisor and datamanagement services were simple, almost
>"A Child's Garden of Operating Systems Interfacing".  You ignore the
>fact that it would take 2-3 years of careful grooming to create a
>1972 style ASM/370 programmer.  Then you still have to add another 2-3
>years of finishing school to add VSAM, VTAM, CICS, DB2 or whatever.

>Y2K, especially Y2K Assember Language, is a come as you are party.  It
>flat cannot be done with nubies.

>May God have mercy on our souls.

>Cory Hamasaki  



Sat, 19 Feb 2000 03:00:00 GMT  
 Help! I am going to code IBM Assembler!



Quote:
>The C language is NOT like any machine language!

umm, i have to disagree here. most of asm can be converted directly
into C, if they had a product which would do it. the thing is that
alot of the resulting operations would be very long, as would it be in
asm. for instance, a compare and then a jump_on_zero would become
an function_conversion_of_compare(); if(zero_macro) goto label;

furthermore, C libraries can be as implementation specific as
assembler.

the only real drawback is that automatic conversion between the two
languages has never been accomplished, because of sometimes confusing
code...



Sat, 19 Feb 2000 03:00:00 GMT  
 Help! I am going to code IBM Assembler!


Quote:
>No, but I did just take a college level class in C and that's similar to a
>machine language.  I did enjoy it.

uhh yeah. except asm has pop/push register instructions, and
interrupts, where C has simple function calls.


Sat, 19 Feb 2000 03:00:00 GMT  
 Help! I am going to code IBM Assembler!

Quote:


>>No, but I did just take a college level class in C and that's similar to a
>>machine language.  I did enjoy it.

>uhh yeah. except asm has pop/push register instructions, and
>interrupts, where C has simple function calls.

No, mainframe assembler has no push/pop and interrupts are processed
only at the very deepest levels of the supervisor.  But I agree that
"C" is not really like *any* assembler, mainframe or PC.

=========================================

=========================================



Sat, 19 Feb 2000 03:00:00 GMT  
 Help! I am going to code IBM Assembler!

Quote:



> >The C language is NOT like any machine language!

> umm, i have to disagree here. most of asm can be converted directly
> into C, if they had a product which would do it. the thing is that
> alot of the resulting operations would be very long, as would it be in

> asm. for instance, a compare and then a jump_on_zero would become
> an function_conversion_of_compare(); if(zero_macro) goto label;

So you're saying convert each opcode to a function? SOOOEY!!!

And then, because I've never seen ANY assembler that looping
instructions (do, while, or for) unless the programmer wrote macros to
simulate them, you end up with C code full of goto's. Sure you could
try to parse multiple instructions at once to try to determine if it's a
loop,
but you'd only get the really simple ones. What if there are multiple
exits
from the loop? If they go to the code immediately following, you could
issue a break; but if it goes way off somewhere else, you're stuck with
goto.

I've seen utilities that purport to convert x86 assembler to C, and I
bet
they have this problem. But to get back to 370/390 assembler, you've
got even more headaches. There are more registers, and they're general-
purpose, so you can't make assumptions about their contents. There are
more opcodes; I don't even want to try to count 'em. Seven and a half
pages in my reference summary, and it's an old one. And the ways they
can be put together... I can almost see the smoke coming from a machine
trying to convert a BXLE loop...

A 370/390 assembler to C converter would ba an AI project, and a
daunting one.

--

"This acreage is zoned RESIDENTIAL! I'll not let you turn it into
 a wholesale SLAUGHTERHOUSE!"  -  from Howard the Duck, 1976



Sat, 19 Feb 2000 03:00:00 GMT  
 
 [ 37 post ]  Go to page: [1] [2] [3]

 Relevant Pages 

1. Assembler Beginner?two pass assembler design for IBM 360

2. Help Application Development in IBM 390 Assemblers.

3. Calling CSL code from assembler under CMS help!!!

4. Help! IBM visualage/win Error Code 12

5. Including assembler code in TopSpeed - help?

6. I am going to start assembly programming

7. Help me for the code set IBM PC

8. am i gonna go down in flames??

9. Am stupid and now going crazy...

10. Tk in C: I am going insane

11. I am lamer who wants to learn assembler

12. Writing assembler code/pseudo code

 

 
Powered by phpBB® Forum Software