Log In

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips Forums!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!
  • Students Click Here

*Tek-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Students Click Here


calling assembler pgm

calling assembler pgm

calling assembler pgm

I have an assembler pgm (load module) that takes an input record which is in binary and translates it into a character based record. The binary record is 64 bytes and the translated record is about 900 bytes. I am trying to call this assembler program from my REXX program but I dont know how to pass the record structures that it needs because the parameters on a call cant exceed 100 characters . Let me know how to do it?

RE: calling assembler pgm

I think this has been asked and answered previously, but there are 2 ways of doing it (assuming you are running on an OS/390).

1) use call e.g. CALL 'MYPGM' 'MYPARM'
2) use SELECT in ISPF e.g. Address 'ISPEXEC' "Select Pgm(MYPGM) Parm(MYPARM)"

RE: calling assembler pgm

1° set Rexx variable with record value
2° built the Assembler Program with Tso Rexx
"IKJCT441" interface routine
3° get the Rexx Variable into Assembler program and map it with opportune Dsect equal the record structure

example for put Rexx Variable by Assembler Program:
the program put the Rexx variabile named "V1234" initialized with value "September"
CVTPTR   EQU   16    
         IKJTSVT  Tso Vector Table Dsect  
         L     R15,CVTPTR    Access the CVT                 
         L     R15,CVTTVT(,R15) Access theTSVT              
         L     R15,TSVTVACC-TSVT(,R15)  service
         ST    R15,IKJCT441  service address  
         LA    R1,IKJCTLST service parm list
         L     R15,IKJCT441 service address
         BALR  R14,R15     execute service
         ST    R15,RETCODE             

IKJCT441 DS    F  service address word

IKJCTLST DS    0F   service parmlist block
         DC    A(ECODE01) ptr to function adr        
         DC    A(NAMEP01) ptr to var name adr         
         DC    A(NAMEL01) ptr to var length adr        
         DC    A(VALUEP01)ptr to var value text adr        
         DC    A(VALUEL01)ptr to var value ll adr        
         DC    X'80',AL3(TOKEN01) ptr to last chain ptr
ECODE01  DC    A(TSVEUPDT) function var "Update"
NAMEL01  DC    F'5' Rexx var name length=5 bytes
VALUEL01 DC    F'9' Rexx var value length
TOKEN01  DC    F'0' bottom block chain
VARNAME  DC    CL8'V1234'  Rexx var name
VARTEXT  DC    CL80' ' Rexx var output
         ORG   VARTEXT    
         DC    C'September' Rexx var value
         ORG   ,

the Linkage Amode must be 24 in Read and 31 in Write for Rexx environment

if you want get the variable already existing must change the assembler code from
ECODE01  DC    A(TSVEUPDT) function var "Update"
ECODE01  DC    A(TSVERETR) function var "Get"
and do not to ddeclare the variable value & it's length

bye bye !!!!!!!!!

Red Flag This Post

Please let us know here why this post is inappropriate. Reasons such as off-topic, duplicates, flames, illegal, vulgar, or students posting their homework.

Red Flag Submitted

Thank you for helping keep Tek-Tips Forums free from inappropriate posts.
The Tek-Tips staff will check this out and take appropriate action.

Reply To This Thread

Posting in the Tek-Tips forums is a member-only feature.

Click Here to join Tek-Tips and talk with other members!

Close Box

Join Tek-Tips® Today!

Join your peers on the Internet's largest technical computer professional community.
It's easy to join and it's free.

Here's Why Members Love Tek-Tips Forums:

Register now while it's still free!

Already a member? Close this window and log in.

Join Us             Close