2014-03-19 16 views
1

我需要通過從PHP exec函數調用CL命令來獲取AS400(iSeries)的序列號和lpar信息。本頁面:http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=%2Frzalc%2Fpase_commands.htm建議我通過使用sysval QSRLNBR來獲得序列號,但是我沒有看到獲取lpar號碼的任何api。請告訴我如何使用PHP執行函數(不使用IBM的無線工具包)來獲取LPAR號碼,感謝如何使用php exec函數獲取AS400的lpar號碼

回答

1

有一個API爲:dlpar_get_info

Chamara Withanachchi具有這樣的代碼示例,可以發現一個網站:這裏是dlpar_get_info以CL形式。您可以編寫一個CL程序,並以與使用RTVSYSVAL QSRLNBR相同的方式進行調用。

+0

是的,我正在深入研究這種方法,感謝您的支持 – user1122960

1

隨着道歉@Buck,它可以比以前發佈的參考簡單一點得到LPAR信息:

pgm 

/* For Retrieve System Status...         */ 

    dcl &STS_DATA *char 84 
    dcl &STS_LEN  *int   value(84) 
    dcl &STS_FORMAT *char  8  value('SSTS0200') 
    dcl &RESET_IND *char 10  value('*NO') 

    dcl &ERRCODE  *char 116  value(x'00000074') 
    dcl &ERRLEN  *dec ( 3 0) value(0) /* + 
       Will tell us how long any exception data + 
       is... */ 


    call  (QWCRSSTS)  (+ 
            &STS_DATA + 
            &STS_LEN + 
            &STS_FORMAT + 
            &RESET_IND + 
            &ERRCODE + 
           ) 

/* Test for an exception...          */ 
    chgvar  &ERRLEN  %bin(&ERRCODE 5 4) 

    if (&ERRLEN *ne 0) do 
     sndpgmmsg msgid(CPF9898) msgf(QSYS/QCPFMSG) + 
        msgdta(%sst(&ERRCODE 9 7) *bcat 'error + 
        exception') msgtype(*ESCAPE) 
    enddo 

    crtmsgf  QTEMP/tmpmsgf 
    monmsg (CPF2112) 
    addmsgd  FMT0001 msgf(QTEMP/TMPMSGF) + 
       msg('Total LPARs: &1 Current LPAR: &2') + 
       fmt((*BIN 4) (*BIN 4)) 
    monmsg (CPF2400) 

    sndpgmmsg msgid(FMT0001) msgf(QTEMP/tmpmsgf) + 
       msgdta(%sst(&STS_DATA 77 8)) + 
       msgtype(*INFO) 

    return 

endpgm 

只有極少的錯誤檢查/在處理,但也有一些額外的代碼來創建最後一個格式化的消息。實際需要的代碼非常小。

+0

非常感謝你 – user1122960

+0

沒有必要的道歉 - 選擇是好的! –

+0

順便說一句,如果確實需要,可以創建* CMD(命令)包裝器。目前還不清楚iSeries可以爲您的項目提供多少幫助,或者您是否可以修改代碼以返回所需的值。 – user2338816