c-带有IEFSSREQ宏的MVS JES2清除作业



我想通过使用IEFSSREQ宏向JES2请求操作来清除/取消/旋转作业。一切似乎都很顺利,但没有工作受到请求的影响。我认为这是SSJM结构中的过滤器问题,但当我在过滤器中没有指定任何内容时,我没有错误(根据文档,我应该有一个(,也没有工作受到影响。

这是我的代码:

char *pcJobId = "JOB03101";
int iRc;
char * __ptr32 pworkArea = __malloc31(60);
memset(pworkArea, 0, 60);
struct ssib * __ptr32 pSSIB = __malloc31(sizeof(struct ssib));
struct ssob * __ptr32 pSSOB = __malloc31(sizeof(struct ssob));
struct ssjm * __ptr32 pSSJM = __malloc31(sizeof(struct ssjm));
memset(pSSIB, 0, sizeof(struct ssib));
memcpy(pSSIB->ssibid, "SSIB", 4);
pSSIB->ssiblen = SSIBSIZE;
memcpy(pSSIB->ssibssnm, "JES2", 4);
memset(pSSJM, 0, sizeof(struct ssjm));
memcpy(pSSJM->ssjmeye, "SSJMPL  ", 8);
pSSJM->ssjmlen = SSJMSIZE;
pSSJM->ssjmvrm = SSJMVRM1;
pSSJM->ssjmopt1 = SSJMPSYN;
pSSJM->ssjmreqp._ssjmtype = SSJMPRG;
pSSJM->ssjmsel1 = SSJMSOJI;
memcpy(pSSJM->ssjmojbi, pcJobId, 8);
memset(pSSOB, 0, sizeof(struct ssob));
memcpy(pSSOB->ssobid, "SSOB", 4);
pSSOB->ssoblen = SSOBHSIZ;
pSSOB->ssobfunc = (short int)85;
pSSOB->ssobssib = pSSIB;
pSSOB->ssobindv = (int)pSSJM;
void * __ptr32 * pParmList = __malloc31(4);
*pParmList = (void * __ptr32) ((int32_t)pSSOB | (int32_t)0x80000000); // the high-order bit must be on
iRc = 0;
__asm(" SAM31n"
" SYSSTATE AMODE64=NOn"
" IEFSSREQn"
" SYSSTATE AMODE64=YESn"
" SAM64n"
: "=XL:NR:r15"(iRc)
: "XL:NR:r1"(pParmList), "XL:NR:r13"(pworkArea)
: "r0", "r1", "r13", "r14", "r15");
printf("IEFSSREQ rc=%dn", iRc);
printf("ssobretn=%dn", pSSOB->ssobretn);
printf("ssjmretn=%dn", pSSJM->ssjmretn);
printf("ssjmret2=%dn", pSSJM->ssjmret2);
printf("ssjmnsjf=%dn", pSSJM->ssjmnsjf);
printf("ssjmsjf8=%pn", pSSJM->ssjmsjf8);
free(pworkArea);
free(pSSOB);
free(pParmList);
free(pSSJM);

根据文档,我在SSJMSJF8指针中得到了受请求影响的每个作业的反馈,SSJMNSJF应该是我得到的反馈数量,也是受请求影响作业的数量。

我的代码打印如下:

IEFSSREQ rc=0
ssobretn=0
ssjmretn=0
ssjmret2=0
ssjmnsjf=0
ssjmsjf8=0

这是我谈到的文档的链接。我正在使用"修改作业功能"呼叫(编号85(,这是第460页。

https://www-304.ibm.com/servers/resourcelink/svc00100.nsf/pages/zOSV2R3SA380679/$file/ieaf200_v2r3.pdf

我看不到明显的东西。我试着让你的代码在我们的系统上运行,但我的C语言不够好,不幸的是,我无法完成上面没有显示的内容。

或者,我试着让它在普通汇编程序中运行。我得到的结果和你一样。我尝试过PURGE和CANCEL请求。所有人似乎什么都没做。但是,当指定一个无效的作业ID时,IEFSSREQ会用相应的返回代码进行抱怨,所以我知道IEFSSRREQ被正确调用了。一定是愚蠢的东西。

对不起,到目前为止我不能提供更多帮助

相关内容

  • 没有找到相关文章

最新更新