Skip to content

Instantly share code, notes, and snippets.

@greghelton
Last active July 27, 2016 11:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save greghelton/7875d37ae3463b3df85133b8f052100b to your computer and use it in GitHub Desktop.
Save greghelton/7875d37ae3463b3df85133b8f052100b to your computer and use it in GitHub Desktop.
Using JUnit to test RPG
ctl-opt Option(*Srcstmt:*Nodebugio:*NoUnRef)
NoMain Debug(*YES);
/copy BL0100M01C
dcl-s uuidKey_t CHAR(16) TEMPLATE;
dcl-s maxResponseData_t CHAR(39) TEMPLATE;
dcl-ds uuidDS_t Template;
dcl-subf bytes_provided INT(10);
dcl-subf bytes_available INT(10);
dcl-subf reserved CHAR(8);
dcl-subf uuid LIKE(uuidKey_t);
end-ds;
dcl-ds latlngfip QUALIFIED;
dcl-subf lat Char(14);
dcl-subf filler Char(3);
dcl-subf lng Char(14);
dcl-subf filler2 Char(3);
dcl-subf fip Char(5);
end-ds;
//*********************************************************
// getLatLng returns -1 if fail, 1 if successful
//*********************************************************
dcl-proc getLatLng EXPORT;
dcl-pi getLatLng Int(10);
pAddress Like(address_t);
plat Like(latlng_t);
plng Like(latlng_t);
pfip Like(fip_t);
end-pi;
//*********************************************************
// Variable declarations
//*********************************************************
dcl-s retvar Int(10);
dcl-s maxResponseDataSz Packed(5:0)
inz(%size(maxResponseData_t));
dcl-s maxRequestDataSz Packed(5:0) inz(416);
dcl-ds uuidDS QUALIFIED;
dcl-subf bytes_provided INT(10) INZ(%size(uuidDS));
dcl-subf bytes_available INT(10) INZ(0);
dcl-subf reserved CHAR(8) INZ(*ALLx'00');
dcl-subf uuid LIKE(uuidKey_t);
end-ds;
dcl-pr getUuid extproc('_GENUUID');
dcl-parm pUuid LIKE(uuidDS_t);
end-pr;
dcl-s rcvDataQueueName CHAR(10) inz('GEORESPONS');
dcl-s rcvDataQueueLib CHAR(10) inz('GAH285 ');
dcl-s rcvDataQueueMessage LIKE(maxResponseData_t);
dcl-s rcvDataQueueWait Packed(5:0) inz(5);
dcl-s rcvDataQueueKeyOrder CHAR(2) inz('EQ');
dcl-s rcvDataQueueKeyLength PACKED(3:0)
inz(%size(uuidKey_t));
dcl-s rcvDataQueueKey LIKE(uuidKey_t);
dcl-s rcvDataQueueSenderLength Packed(3:0)
inz(%size(maxResponseData_t));
dcl-s rcvDataQueueSender LIKE(maxResponseData_t);
dcl-pr QRcvDtaq extpgm('QRCVDTAQ') ;
dcl-parm p1 LIKE(rcvDataQueueName);
dcl-parm p2 LIKE(rcvDataQueueLib);
dcl-parm p3 LIKE(maxRequestDataSz);
dcl-parm p4 LIKE(rcvDataQueueMessage);
dcl-parm p5 LIKE(rcvDataQueueWait);
dcl-parm p6 LIKE(rcvDataQueueKeyOrder);
dcl-parm p7 LIKE(rcvDataQueueKeyLength);
dcl-parm p8 LIKE(uuidKey_t);
dcl-parm p9 LIKE(rcvDataQueueSenderLength);
dcl-parm p10 LIKE(rcvDataQueueSender);
end-pr;
dcl-s sndDataQueueName CHAR(10) inz('GEOREQUEST');
dcl-s sndDataQueueLib CHAR(10) inz('GAH285 ');
dcl-ds sndDataQueueMessageDS QUALIFIED;
dcl-subf data LIKE(address_t);
dcl-subf key LIKE(uuidKey_t);
end-ds;
dcl-pr QSndDtaq extpgm('QSNDDTAQ') ;
dcl-parm p1 LIKE(sndDataQueueName);
dcl-parm p2 LIKE(sndDataQueueLib);
dcl-parm p3 LIKE(maxRequestDataSz);
dcl-parm p4 LIKE(sndDataQueueMessageDS);
end-pr;
dcl-s tmp CHAR(20);
dcl-s latlng CHAR(39);
dcl-s Pos Packed(2:0) inz;
dcl-s string CHAR(20) inz;
//*********************************************************
// Main routine
//*********************************************************
Clear plat;
Clear plng;
string = %subst(pAddress:1:20);
retvar = -1;
getUuid(uuidDS);
sndDataQueueMessageDS.key = uuidDs.uuid;
sndDataQueueMessageDS.data = pAddress;
rcvDataQueueKey = uuidDS.uuid;
rcvDataQueueWait = 5;
rcvDataQueueKeyOrder = 'EQ';
rcvDataQueueKeyLength = %size(rcvDataQueueKey);
rcvDataQueueSenderLength = %size(rcvDataQueueSender);
QSndDtaQ (sndDataQueueName : sndDataQueueLib :
maxRequestDataSz : sndDataQueueMessageDS);
QRcvDtaQ (rcvDataQueueName : rcvDataQueueLib :
maxResponseDataSz : rcvDataQueueMessage :
rcvDataQueueWait : rcvDataQueueKeyOrder :
rcvDataQueueKeyLength : rcvDataQueueKey :
rcvDataQueueSenderLength : rcvDataQueueSender);
If maxResponseDataSz <> 0;
retvar = 1;
latLngFip = parseLatLngFip(rcvDataQueueMessage);
pLat = latlngfip.lat ;
pLng = latlngfip.lng ;
pFip = latlngfip.fip ;
EndIf;
Return retvar;
end-proc;
dcl-s address_t CHAR(400) TEMPLATE ;
dcl-s latlng_t CHAR( 15) TEMPLATE ;
dcl-s fip_T CHAR( 05) TEMPLATE ;
dcl-s pAddress Like(address_t);
dcl-s plat Like(latlng_t);
dcl-s plng Like(latlng_t);
dcl-s pfip Like(fip_t);
dcl-s iLatLongRet Int(10);
dcl-pr getLatLng Int(10) extproc(*DCLCASE);
pAddress Like(address_t);
lat Like(latlng_t);
lng Like(latlng_t);
fip Like(fip_T);
end-pr;
CRTSRVPGM SRVPGM(GAH285/BL0100S01) MODULE(GAH285/BL0100M01) EXPORT(*ALL)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment