Eileen,
I don't know what is happening at your site, but on our system
everything runs fine.
I was able to compile and link the source and successfully do an OBTAIN
for SYS1.PARMLIB on volume Z9RES1.
I'll attach once again my source and also the SYSOUT of the "c++" so you
can compare your and my settings....
Good luck!
Bye,
Michael
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html
*----------------------------------------------------------------------
R0 EQU 0
R1 EQU 1
R2 EQU 2
R3 EQU 3
R4 EQU 4 ADRESSIERUNG DER PARAMETER
R5 EQU 5
R6 EQU 6
R7 EQU 7
R8 EQU 8
R9 EQU 9
R10 EQU 10
R11 EQU 11 BASISREGISTER
R12 EQU 12 LE/370 COMMON ANCHOR AREA (CAA)
R13 EQU 13 LE/370 DYNAMIC SAVE AREA (DSA)
R14 EQU 14
R15 EQU 15
*----------------------------------------------------------------------
PARM DSECT
PARM_FLG DS F FUNKTIONSCODE HEX'C1000000'
PARM_DSN DS F ADRESSE AUF DSN (MUSS 44 BYTES LANG SEIN)
PARM_VOL DS F ADRESSE AUF VOLSER (MUSS 6 BYTES LANG SEIN)
PARM_WRK DS F ADRESSE AUF 140 BYTE WORK/RETURN-AREA
*----------------------------------------------------------------------
*----------------------------------------------------------------------
OBTAIN CEEENTRY PPA=MAINPPA, ADRESSE AUF PROGRAM PROLOG AREA X
AUTO=WORKSIZE, GROESSE DER DSECT (-> SAVEAREA!) X
NAB=NO, NAB NICHT ZWINGEND VORHANDEN X
MAIN=NO, KEIN HAUPTPROGRAMM X
EXPORT=NO, ENTRYPOINT NICHT EXPORTIEREN X
BASE=R11 BASISREGISTER
*
USING CEECAA,R12 COMMON ANCHOR AREA
USING CEEDSA,R13 DSA + LOKALE (DYNAM.) VARIABLEN
*----------------------------------------------------------------------
L R4,0(R1) ADRESSE AUF PARAMETER LADEN
USING PARM,R4 PARAMETER ADRESSIEREN
*
OBTAIN PARM OBTAIN AUFRUFEN
ST R15,RETCODE RETURNCODE SICHERN
*
CEETERM RC=RETCODE
*----------------------------------------------------------------------
MAINPPA CEEPPA PROGRAM PROLOG AREA
LTORG
*----------------------------------------------------------------------
CEEDSA DSECT: DYNAMIC SAVE AREA
RETCODE DS F RETURNCODE
DS 0D ALIGNMENT SICHERSTELLEN
WORKSIZE EQU *-CEEDSA
*----------------------------------------------------------------------
CEECAA DSECT: COMMON ANCHOR AREA
CEEEDB DSECT: ENCLAVE DATA BLOCK
*----------------------------------------------------------------------
END
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html
//* c++ ------------------------------------------------------------------------
//COMPILE EXEC PGM=CCNDRVR,
// PARM='POSIX(OFF) ABT(RETCODE) ENVAR("PDFDIR=./", __CBC_EXTENDED=9)/
// "./" "./ctoasm.c" "*.c"
// CMDOPTS(OE,NOLSEARCH,
// START,LONGNAME,RENT,TERMINAL,
// OBJECT(ctoasm.o),
// HALT(16),NOMARGINS,NESTINC(255),NOSEQUENCE,NOSSCOM,
// NOEVENTS,NOALIAS,TARGET(LE),NOEXPORTALL,
// ARGPARSE,EXECOPS,PLIST(HOST),REDIR,
// LOCALE(POSIX),
// LANGLVL(ANSI),NOUPCONV,NOLIBANSI,ANSIALIAS,
// NOINLINE(AUTO,NOREPORT,100,1000),MEMORY,MAXMEM(*),SPILL(128),
// NODEBUG,NOTEST,NOGONUMBER,
// NOLIST(/dev/fd1),NOSOURCE(/dev/fd1),
// NOAGGREGATE,NOEXPMAC,NOOFFSET,NOSHOWINC,NOXREF,
// NOINFO,FLAG(W),NOIPA),
// DEFINE(errno=(*__errno())),
// DEFINE(_OPEN_DEFAULT=1),
// NOSEARCH,SEARCH(/usr/include/,
// /usr/lpp/cbclib/include/,
// //''CEE.SCEEH.+'',
// //''CBC.SCLBH.+''),
// NOPPONLY(NOCOMMENTS,NOLINES,/dev/fd1,2048),
// OPTIMIZE(0)'
//*STEPLIB DD DSN=CEE.SCEERUN,DISP=SHR
//* DD DSN=CBC.SCCNCMP,DISP=SHR
//* c++ ------------------------------------------------------------------------
//ASSEMBLE EXEC PGM=ASMA90,
// PARM='NODECK,OBJECT,TERM,
// NOLIST,NOESD,NORLD,NOXREF,FLAG(4)'
//SYSLIB DD DSN='CEE.SCEEMAC',DISP=SHR,DCB=DSORG=DIR
// DD DSN='SYS1.MACLIB',DISP=SHR,DCB=DSORG=DIR
// DD DSN='SYS1.MODGEN',DISP=SHR,DCB=DSORG=DIR
//SYSPUNCH DD DUMMY
//SYSUT1 DD UNIT=SYSDA,SPACE=(32000,(30,30)),
// STORCLAS=,MGMTCLAS=,DATACLAS=,DSNTYPE=,
// DCB=(RECFM=F,LRECL=4088,BLKSIZE=4088)
//SYSPRIN2 DD PATH='/dev/fd1',
// PATHOPTS=(ORDWR,OCREAT,OAPPEND),
// PATHMODE=(SIROTH,SIRGRP,SIRUSR,SIWOTH,SIWGRP,SIWUSR)
//SYSTERM2 DD PATH='/dev/fd2',
// PATHOPTS=(ORDWR,OCREAT,OAPPEND),
// PATHMODE=(SIROTH,SIRGRP,SIRUSR,SIWOTH,SIWGRP,SIWUSR)
//SYSPRINT DD DISP=(NEW,DELETE),UNIT=SYSDA,SPACE=(32000,(30,30)),
// STORCLAS=,MGMTCLAS=,DATACLAS=,DSNTYPE=,
// DCB=(RECFM=FBM,LRECL=133,BLKSIZE=3990)
//SYSTERM DD DISP=(NEW,DELETE),UNIT=SYSDA,SPACE=(32000,(30,30)),
// STORCLAS=,MGMTCLAS=,DATACLAS=,DSNTYPE=,
// DCB=(RECFM=FBM,LRECL=133,BLKSIZE=3990)
//SYSIN2 DD PATH='obtasm.s',PATHOPTS=(ORDONLY)
//SYSIN DD DISP=(NEW,DELETE),UNIT=SYSDA,SPACE=(32000,(30,30)),
// STORCLAS=,MGMTCLAS=,DATACLAS=,DSNTYPE=,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//SYSLIN2 DD PATH='obtasm.o',
// PATHOPTS=(OWRONLY,OCREAT,OTRUNC),
// PATHMODE=(SIROTH,SIRGRP,SIRUSR,SIWOTH,SIWGRP,SIWUSR)
//SYSLIN DD DISP=(NEW,DELETE),UNIT=SYSDA,SPACE=(32000,(30,30)),
// STORCLAS=,MGMTCLAS=,DATACLAS=,DSNTYPE=,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//* c++ ------------------------------------------------------------------------
//LINKEDIT EXEC PGM=LINKEDIT,
// PARM='AMODE=31,RMODE=ANY,TERM=YES,
// DYNAM=DLL,ALIASES=NO,UPCASE=NO,
// LIST=OFF,MAP=NO,XREF=NO,INFO=NO,MSGLEVEL=4,
// REUS=RENT,EDIT=YES,AC=0,CALL=YES,CASE=MIXED'
//SYSLIB DD DSN='CEE.SCEELKEX',DISP=SHR,DCB=DSORG=DIR
// DD DSN='CEE.SCEELKED',DISP=SHR,DCB=DSORG=DIR
// DD DSN='CBC.SCCNOBJ',DISP=SHR,DCB=DSORG=DIR
// DD DSN='SYS1.CSSLIB',DISP=SHR,DCB=DSORG=DIR
//C8920 DD UNIT=SYSDA,SPACE=(32000,(30,30)),
// STORCLAS=,MGMTCLAS=,DATACLAS=,DSNTYPE=,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//C8961 DD DSN='CEE.SCEEOBJ',DISP=SHR,DCB=DSORG=DIR
//C8962 DD DSN='CEE.SCEECPP',DISP=SHR,DCB=DSORG=DIR
//C8921 DD DSN='CEE.SCEELIB(C128)',DISP=SHR,DCB=DSORG=NOTDIR
//C8922 DD DSN='CBC.SCLBSID',DISP=SHR,DCB=DSORG=DIR
//SYSPRINT DD PATH='/dev/fd1',
// PATHOPTS=(ORDWR,OCREAT,OAPPEND),FILEDATA=TEXT,
// PATHMODE=(SIROTH,SIRGRP,SIRUSR,SIWOTH,SIWGRP,SIWUSR)
//SYSTERM DD PATH='/dev/fd2',
// PATHOPTS=(ORDWR,OCREAT,OAPPEND),FILEDATA=TEXT,
// PATHMODE=(SIROTH,SIRGRP,SIRUSR,SIWOTH,SIWGRP,SIWUSR)
//SYSLMOD DD PATH='ctoasm',
// PATHOPTS=(OWRONLY,OCREAT),
// PATHMODE=(SIRWXO,SIRWXG,SIRWXU)
//SYSDEFSD DD DUMMY,
// DCB=(RECFM=F,LRECL=80,BLKSIZE=80)
//SYSLIN DD *
INCLUDE C8920
INCLUDE './ctoasm.o'
INCLUDE './obtasm.o'
AUTOCALL C8961
AUTOCALL C8962
INCLUDE C8921
INCLUDE C8922(IOSTREAM)
INCLUDE C8922(COMPLEX)
/*
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html
#include <stdio.h>
int OBTAIN(unsigned long[]);
#pragma linkage(OBTAIN, OS)
#pragma pack(1) /* 1 byte alignment */
typedef struct
{
char Ds1FmtId;
char Ds1Dssn[6];
unsigned short Ds1VolSq;
char Ds1CreDt[3];
char Ds1ExpDt[3];
unsigned char Ds1NoEpv;
unsigned char Ds1NoBdb;
unsigned char Ds1Flag1;
char Ds1SysCd[13];
char Ds1RefDt[3];
unsigned char Ds1SmsFg;
unsigned char Ds1ScXft;
unsigned short Ds1ScXtv;
unsigned char Ds1DsOrg[2];
unsigned char Ds1RecFm;
unsigned char Ds1OptCd;
unsigned short Ds1BlkL;
unsigned short Ds1LrecL;
unsigned char Ds1KeyL;
unsigned short Ds1Rkp;
unsigned char Ds1DsInd;
unsigned char Ds1ScAl1;
unsigned char Ds1ScAl3[3];
unsigned char Ds1LstAr[3];
unsigned short Ds1TrBal;
unsigned char Reserved;
unsigned char Ds1Tthi;
unsigned char Ds1Ext1[10];
unsigned char Ds1Ext2[10];
unsigned char Ds1Ext3[10];
unsigned char Ds1PtrDs[5];
char Filler[44];
} DSCB;
#pragma pack() /* default alignment */
int call_obtain(char *Dsn, char *VolSer)
{
int Rc;
unsigned long Parm[4];
char ParmDsn[44];
char ParmVolSer[6];
DSCB Dscb;
memset(ParmDsn, ' ', 44);
memcpy(ParmDsn, Dsn, strlen(Dsn));
memset(ParmVolSer, ' ', 6);
memcpy(ParmVolSer, VolSer, strlen(VolSer));
Parm[0] = 0xC1000000;
Parm[1] = (unsigned long) ParmDsn;
Parm[2] = (unsigned long) ParmVolSer;
Parm[3] = (unsigned long) &Dscb;
if((Rc = OBTAIN(&Parm[0])) != 0)
return(Rc);
/* do something with DSCB */
return(0);
}
int main()
{
printf("RC=%d\n", call_obtain("SYS1.PARMLIB", "Z9RES1"));
}
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html