Пример #1
0
 /**
  * @param string $KeyOrder
  * @param int $KeyLength
  * @param string $KeyData
  * @return bool
  */
 public function ClearDQ($KeyOrder = '', $KeyLength = 0, $KeyData = '')
 {
     //QCLRDTAQ
     $params[] = $this->Toolkit->AddParameterChar('in', 10, 'dqname', 'dqname', $this->DataQueueName);
     $params[] = $this->Toolkit->AddParameterChar('in', 10, 'dqlib', 'dqlib', $this->DataQueueLib);
     if ($KeyLength > 0) {
         $params[] = $this->Toolkit->AddParameterChar('in', 2, 'keydataorder', 'keydataorder', $KeyOrder);
         $params[] = $this->Toolkit->AddParameterPackDec('in', 3, 0, 'keydatalen', 'keydatalen', $KeyLength);
         $params[] = $this->Toolkit->AddParameterChar('in', (int) $KeyLength, 'keydata', 'keydata', $KeyData);
         //$params[] = array('ds'=>$this->Toolkit->GenerateErrorParameter());
         $ds = $this->Toolkit->GenerateErrorParameter();
         $params[] = Toolkit::AddDataStruct($ds);
     }
     $retArr = $this->Toolkit->PgmCall('QCLRDTAQ', 'QSYS', $params);
     if (isset($retArr['exceptId']) && strcmp($retArr['exceptId'], '0000000')) {
         $this->CPFErr = $retArr['exceptId'];
         $this->ErrMessage = "Clear Data Queue failed. Error: {$this->CPFErr}";
         return false;
     }
     return true;
 }
Пример #2
0
 /**
  * if receiveDescription given, readlen = 0
  *
  * @param int $frompos
  * @param int $readlen
  * @param null $receiveStructure
  * @return bool
  * @throws \Exception
  */
 public function ReadUserSpace($frompos = 1, $readlen = 0, $receiveStructure = null)
 {
     //how to see via green screen DSPF STMF('/QSYS.lib/qgpl.lib/ZS14371311.usrspc')
     $dataRead = ' ';
     $params[] = Toolkit::AddParameterChar('in', 20, "User space name and library", 'userspacename', $this->getUSFullName());
     $params[] = Toolkit::AddParameterInt32('in', "From position", 'position_from', $frompos);
     $receiverVarName = 'receiverdata';
     if ($receiveStructure) {
         // must be a ProgramParameter
         if (!is_object($receiveStructure)) {
             throw new \Exception('Parameter 3 passed to ReadUserSpace must be a ProgramParameter object.');
         }
         $labelForSizeOfInputData = 'dssize';
         //
         $params[] = Toolkit::AddParameterSize("Length of data", 'dataLen', $labelForSizeOfInputData);
         // wrap simple ds around receive structure so we can assign a varname to retrieve later.
         $receiveDs[] = $receiveStructure;
         $params[] = Toolkit::AddDataStruct($receiveDs, $receiverVarName, 0, '', false, $labelForSizeOfInputData);
     } else {
         // regular readlen, no special structure or size labels.
         $params[] = Toolkit::AddParameterInt32('in', "Size of data", 'datasize', $readlen);
         $params[] = Toolkit::AddParameterChar('out', $readlen, $receiverVarName, $receiverVarName, $receiveStructure);
     }
     $params[] = Toolkit::AddErrorDataStruct();
     $retPgmArr = $this->ToolkitSrvObj->PgmCall('QUSRTVUS', 'QSYS', $params);
     if ($this->ToolkitSrvObj->verify_CPFError($retPgmArr, "Read user space failed. Error:")) {
         return false;
     }
     $retArr = $retPgmArr['io_param'];
     // return our receiverstructure.
     return $retArr[$receiverVarName];
 }