Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Anchor
AJAX Page AJAXEX4.HTM
AJAX Page AJAXEX4.HTM
AJAX Page AJAXEX4.HTM

<HTML> 
<HEAD id='HEAD_Tag'> 
<link rel='stylesheet' type='text/css' href='vf_vs001.css' >    
<script> 
/* ======================================================================== */ 
/* ======================== Handle Page Initialization ==================== */ 
/* ======================================================================== */ 
function VF_AJAX_Initialize() 

   /* Insert the variable style sheet (ie: XP, WIN, WEB style) into this page */ 
   { 
      var objLink  = document.createElement("LINK"); 
      objLink.rel  = "stylesheet"; objLink.type = "text/css";  
  objLink.href = STYLESHEET(); 
      document.getElementById("HEAD_Tag").insertAdjacentElement("afterBegin",objLink);  
   } 
    
   /* Finished */ 
   return; 
}  
/* ======================================================================== */ 
/* ======================== Handle Page Execution ========================= */ 
/* ======================================================================== */ 
function VF_AJAX_Execute(objInstance) 

  /* Put the current instance list entry EMPNO onto the clipboard               */ 
  /* The employee number is in AKey number 3, which is Javascritp array entry 2 */ 
  Put(objInstance.arraystrAKeyN[2],"EX4","EMPNO");   

  /* Request that the server do a FETCH operation using the employee number */ 
  SENDREQUEST(window,"","FETCH","",FETCH_response);   

...

 
  /* Finished */ 
  return; 
}  
/* ======================================================================== */ 
/* ======================= Handle Page Termination ======================== */ 
/* ======================================================================== */ 
function VF_AJAX_Terminate() 

  return; 
}  
/* -------------------------------------------------------- */ 
/* Rationalized virtual clipboard access to name space AJAX */  
/* -------------------------------------------------------- */ 
function Put(val,np2,np3,inst) {AVSAVEVALUE(val,"AJAX",np2,np3,inst);} 
function GetA(np2,np3,inst)    {return(AVRESTOREAVALUE("","AJAX",np2,np3,inst));} 
function GetN(np2,np3,inst)    {return(AVRESTORENVALUE(0,"AJAX",np2,np3,inst));} 
/* ---------------------------------- */ 
/* Handle server responding to LOAD10 */ 
/* ---------------------------------- */ 
function FETCH_response(strFunction,strRequest,strPayload,objObject,flagFatalError,strFatalMessage) 

  /* Handle a fatal error */ 
  if (flagFatalError) { alert(strFatalMessage); SETBUSY(false); return; }   

...


/*

...

Put

...

the

...

employee

...

number

...

out

...

onto

...

the

...

screen

...

*/  
  Vis_EMPNO.innerText = GetA("EX4","EMPNO");          
  
  /* Get the IO Status and handle found and not found */ 

  if (GetA("EX4","IO_STS") == "OK") /* Employee was found */ 
  { 
     Vis_SURNAME.innerText = GetA("EX4","SURNAME");          
     Vis_GIVENAME.innerText = GetA("EX4","GIVENAME");          
     Vis_SALARY.innerText = GetN("EX4","SALARY").toString();          
     Vis_POSTCODE.innerText = GetN("EX4","POSTCODE").toString();          
     DIV_Table.style.visibility   = "visible"; DIV_Table.style.display = "inline";  
     DIV_Message.style.visibility = "hidden"; DIV_Message.style.display = "none";  
  } 
  else /* Employee was not found */ 
  { 
     DIV_Message.children(0).innerText = "Employee number " + Vis_EMPNO.innerText + " could not be found";  
     DIV_Message.style.visibility = "visible"; DIV_Message.style.display = "inline";  
     DIV_Table.style.visibility = "hidden"; DIV_Table.style.display = "none";  
  } 

  /* Drop busy status */ 
  SETBUSY(false);  

  /* Finished */ 
  return; 

</script> 


</HEAD> 
<BODY id='BODY_Tag'> 
<br/><br/><br/> 
<P align='center'>Instance List Example</p> 
<div id='DIV_Message'> 
<P align='center'>Loading ... please wait</p> 
</div> 
<div id='DIV_Table' style='visibility:hidden;display:none;'> 
<table> 
<tr><td>Employee Number</td><td id='Vis_EMPNO'></td></tr> 
<tr><td>Last Name</td><td id='Vis_SURNAME'></td></tr> 
<tr><td>First Name</td><td id='Vis_GIVENAME'></td></tr> 
<tr><td>Current Salary</td><td id='Vis_SALARY'></td></tr> 
<tr><td>Zip Code</td><td id='Vis_POSTCODE'></td></tr> 
</table> 
</div> 
</BODY> 
</HTML> 

Anchor
AJAX Function AJAXEX4
AJAX Function AJAXEX4
AJAX Function AJAXEX4

...

* This is just a simple RDML function. 

...

* It is NOT a WAM. 

...

* It is driven by the virtual clipboard 


Function Options(*DIRECT *HEAVYUSAGE) 

* Define local fields 

Define Field(#REQUEST) Reffld(#STD_OBJ) 
Define Field(#MSGDTA) Type(*CHAR) Length(132) 

* Get the action the Javascript requested ....... 

Execute Subroutine(GETA) With_Parms(SYSTEM REQUEST 1 #REQUEST) 

* Now switch on the requested action 

Case Of_Field(#REQUEST) 

* Get details of an employee 

When Value_Is('= FETCH') 
Execute Subroutine(FETCH) 

Otherwise 
Use Builtin(BCONCAT) With_Args('Unknown request' #REQUEST 'received by' *FUNCTION) To_Get(#MSGDTA) 
Abort Msgid(DCM9899) Msgf(DC@M01) Msgdta(#MSGDTA) 
Endcase 

* Finished 

Return

...



* Get details of an employee 

Subroutine Name(FETCH) 

* Get the requested employee number 

Execute Subroutine(GETA) With_Parms(EX4 EMPNO 1 #EMPNO) 

* Fetch the details 

Fetch Fields(#Surname #GiveName #PostCode #Salary) From_File(Pslmst) With_Key(#Empno) 

* Send back the IO status + the details 

Execute Subroutine(PUTA) With_Parms(EX4 IO_STS 1 #IO$STS) 
Execute Subroutine(PUTA) With_Parms(EX4 SURNAME 1 #SURName) 
Execute Subroutine(PUTA) With_Parms(EX4 GIVENAME 1 #GIVENAME) 
Execute Subroutine(PUTN) With_Parms(EX4 POSTCODE 1 #POSTCODE) 
Execute Subroutine(PUTN) With_Parms(EX4 SALARY 1 #SALARY) 

Endroutine 

* ===================================================== 
* Rationalized subroutines for virtual clipboard access 
* ===================================================== 


Subroutine Name(PUTA) Parms((#NP2 *RECEIVED) (#NP3 *RECEIVED) (#INST *RECEIVED) (#AVAL *RECEIVED)) 
Define Field(#NP2) Type(*CHAR) Length(28) 
Define Field(#NP3) Type(*CHAR) Length(24) 
Define Field(#INST) Type(*DEC) Length(7) Decimals(0) 
Define Field(#AVAL) Type(*CHAR) Length(256) 
Use Builtin(VF_SAVEAVALUE) With_Args(#AVAL AJAX #NP2 #NP3 #INST) 
Endroutine 

Subroutine Name(PUTN) Parms((#NP2 *RECEIVED) (#NP3 *RECEIVED) (#INST *RECEIVED) (#NVAL *RECEIVED)) 
Define Field(#NVAL) Type(*DEC) Length(30) Decimals(9) 
Use Builtin(VF_SAVENVALUE) With_Args(#NVAL AJAX #NP2 #NP3 #INST) 
Endroutine 

Subroutine Name(GETA) Parms((#NP2 *RECEIVED) (#NP3 *RECEIVED) (#INST *RECEIVED) (#AVAL *RETURNED)) 
Use Builtin(VF_RESTOREAVALUE) With_Args(' ' AJAX #NP2 #NP3 #INST) To_Get(#AVAL) 
Endroutine 

Subroutine Name(GETN) Parms((#NP2 *RECEIVED) (#NP3 *RECEIVED) (#INST *RECEIVED) (#NVAL *RETURNED)) 
Use Builtin(VF_RESTORENVALUE) With_Args(0 AJAX #NP2 #NP3 #INST) To_Get(#NVAL) 
Endroutine