Archive for the LANSA Category
Visual lansa job
24. December 2008 by admin.
Candidate must be willing to work and be responsible for entire project (start to finish). Good problem analysis skills and smart. We want someone who is looking for a career and not just a job. We are a small company (13 people with only 4 in development). Our current developers are RPG and we are looking for a quality person to come in and lead us in our rewrite in plums using the Lansa framework.
CAll 877 526 7220 or email resume to lansa@yahoo.com
Posted in LANSA | No Comments »
EDPX RDML
15. August 2008 by admin.
FUNCTION OPTIONS(*DIRECT *WEBEVENT)
GROUP_BY NAME(#PRMTBLGRP) FIELDS(#MPRMCTG #MPRMCOD #MPRMDSC)
DEF_LIST NAME(#ARRAY_LST) FIELDS(#Z_DATA) COUNTER(#Z_COUNT) TYPE(*WORKING) ENTRYS(500)
DEF_LIST NAME(#X1BL01LST) FIELDS(#X1ALPLONG) ENTRYS(1000)
DEFINE FIELD(#ZZCOUNT) TYPE(*DEC) LENGTH(2) DECIMALS(2)
DEFINE FIELD(#ZZCOUNTC) TYPE(*CHAR) LENGTH(2)
DEFINE FIELD(#ZFNAMEMMM) TYPE(*CHAR) LENGTH(25)
DEFINE FIELD(#ZLNAMEMMM) TYPE(*CHAR) LENGTH(25)
DEFINE FIELD(#ZSSNUMMMM) TYPE(*CHAR) LENGTH(25)
* =======================================================
* Moving Respective HTML Pages to Components
* =======================================================
CHANGE FIELD(#DCTONLCMP) TO(*NULL)
CHANGE FIELD(#DCTHEDCMP) TO(PAG_RPARRHED)
CHANGE FIELD(#DCTHDRCMP) TO(*NULL)
CHANGE FIELD(#DCTLFTCMP) TO(*NULL)
CHANGE FIELD(#DCTPAGCMP) TO(PAG_RPARRAY)
* =======================================================
* Process according to Button clicked
* =======================================================
CASE OF_FIELD(#STDRENTRY)
WHEN VALUE_IS(’*EQ N’)
* do logic here to validate if you want to
REQUEST FIELDS(#ZFNAMEMMM #ZLNAMEMMM) EXIT_KEY(*NO) MENU_KEY(*NO)
WHEN VALUE_IS(’*EQ *BLANKS’)
CHANGE FIELD(#MPRMCTG) TO(PENDC)
CHANGE FIELD(#MPRMCOD) TO(”’RPARRAY1”’)
CLR_LIST NAMED(#ARRAY_LST)
CLR_LIST NAMED(#X1BL01LST)
SELECT FIELDS(#PRMTBLGRP) FROM_FILE(M@PRMTBL) WITH_KEY(#MPRMCTG #MPRMCOD) GENERIC(*YES)
EXECUTE SUBROUTINE(LISTENTRY) WITH_PARMS(#MPRMDSC)
ENDSELECT
* Build List for Javascript Array
CHANGE FIELD(#ZZCOUNT) TO(0)
SELECTLIST NAMED(#ARRAY_LST)
CHANGE FIELD(#X1ALPLONG) TO(#Z_DATA)
ADD_ENTRY TO_LIST(#X1BL01LST)
ENDSELECT
OTHERWISE
MESSAGE MSGTXT(’STDRENTRY not Programmed for’)
ENDCASE
REQUEST FIELDS((#STDNEXT *HIDE) (#STDRENTRY *HIDE)) EXIT_KEY(*NO) MENU_KEY(*NO) PROMPT_KEY(*NO)
REQUEST BROWSELIST(#X1BL01LST) EXIT_KEY(*NO) MENU_KEY(*NO)
* =======================================================
* Subroutine ….: LISTENTRY
* Description….: Add Entries to List
* =======================================================
SUBROUTINE NAME(LISTENTRY) PARMS(#Z_DATA)
IF_NULL FIELD(#Z_DATA)
ELSE
ADD_ENTRY TO_LIST(#ARRAY_LST)
ENDIF
ENDROUTINE
Posted in LANSA | No Comments »
EDPX HED COMPONENT
15. August 2008 by admin.
<!– ############################################## –>
<!– ### !@BEGIN Page Component PAG_HED ### –>
<!– ############################################## –>
<script type=”text/JavaScript”>
<!–
//* This is an attempt to eventually pull out the file level
//* validations from the LANSA repository to be applied on client side
function validateForm()
{
var myattr=new Array();
bldAttrArray(myattr);
if(chkreqelements(myattr,’form’))
{mapValuesBack();return(true);} else {return(false);}
if(customValidations) {return(true);} else {return(false);}
}
function validateField(vfieldobj)
{
var myfieldobj=vfieldobj;
var myfieldattr=new Array();
bldFieldAttrArray(myfieldobj,myfieldattr);
if(!chkreqelements(myfieldattr,’field’)) ErrField(myfieldobj);
}
function bldAttrArray(bldattrarr)
{
var attstr=”what is in new array\n\n”;
var attnodeName=”";
var attnodeValue=”";
var k=0;
for(i=0;i<document.LANSA.elements.length;i++)
{
for(j=0;j<document.LANSA.elements[i].attributes.length;j++)
{
attnodeName=document.LANSA.elements[i].attributes[j].nodeName.toUpperCase();
if(attnodeName==”EDPX”)
{
attnodeValue=document.LANSA.elements[i].attributes[j].nodeValue;
attnodeValue=attnodeValue.toUpperCase();
k=bldattrarr.length;
bldattrarr[ k ]=document.LANSA.elements[i].id+”:”+attnodeValue;
attstr += bldattrarr[ k ]+” “;
attstr += “\n”;
}
}
}
//* remove comment bellow to see all EDPX elements in form
//*alert( attstr );
}
function bldFieldAttrArray(fieldobj,fieldattarr)
{
var fieldattobj=fieldobj;
var fieldattstr=”what is in field array\n\n”;
var fieldattnodeName=”";
var fieldattnodeValue=”";
var k=0;
for(j=0;j<fieldattobj.attributes.length;j++)
{
fieldattnodeName=fieldattobj.attributes[j].nodeName.toUpperCase();
if(fieldattnodeName==”EDPX”)
{
fieldattnodeValue=fieldattobj.attributes[j].nodeValue;
fieldattnodeValue=fieldattnodeValue.toUpperCase();
k=fieldattarr.length;
fieldattarr[ k ]=fieldattobj.id+”:”+fieldattnodeValue;
fieldattstr += fieldattarr[ k ]+” “;
}
}
fieldattstr += “\n”;
//* remove comment bellow to see all EDPX elements in form
//* alert(fieldattstr);
}
function chkreqelements(attarr,atttyp)
{
var cremsg=”The Following errors have been found: “;
//* For LANSA users Messages can be put in a browse list *NOBICP then do a merge list here
var crems00=”is required and must be entered”
var crems01=”has bad address “;
var crems02=”has invalid characters a-z A-Z “;
var crems03=”has invalid characters a-z A-Z 0-9 “;
var crems04=”is not a number “;
var crems05=”can not be a number “;
var crems06=”is invalid date “;
var crems07=”is not an acceptable range for Date of Birth “;
var crems08=”is invalid format ###-##-#### “;
var crems09=” “;
var crems10=” “;
var crems11=” “;
var crems12=” “;
var crems13=” “;
var crems14=” “;
var crems15=” “;
var crems99=”ERROR COUNT -> “;
var creid=”";
var creval=”";
var crestr=”";
var dotdot=0;
var creobj=”";
var crereq=”";
var cretyp=”";
var cretxt=”";
var errcnt=0;
var cretmp=”";
cremsg += “\n\n”;
for(i=0;i<attarr.length;i++)
{
crestr=attarr[i];
dotdot=crestr.indexOf(”:”);
creid=crestr.substr(0,dotdot);
creval=crestr.substr(dotdot+1,crestr.length-1);
crereq=creval.match(”REQ”);
creobj=document.getElementById(creid);
creobj.value=trimTrailingBlanks(creobj.value);
credesc=creobj.name;
if(creobj.title) {credesc=creobj.title;}
if(creobj.value.length == 0)
{
//* Format of message here
cretmp=credesc+” as NULL => ”
if(creval.match(”REQ”)) {errcnt=errcnt+1;cremsg +=cretmp+crems00+”\n”;}
}
else
{
//* Format of message here
cretmp=credesc+” as “+creobj.value+” => ”
//* Add new validation checks here
if(creval.match(”EML”)) {if(!emailValidator(creobj)){errcnt=errcnt+1;cremsg +=cretmp+crems01+”\n”;}}
if(creval.match(”A2Z”)) {if(!isAlpha(creobj)){errcnt=errcnt+1;cremsg +=cretmp+crems02+”\n”;}}
if(creval.match(”A29″)) {if(!isAlphanumeric(creobj)){errcnt=errcnt+1;cremsg +=cretmp+crems03+”\n”;}}
if(creval.match(”NUM”)) {if(!isNumeric(creobj)){errcnt=errcnt+1;cremsg +=cretmp+crems04+”\n”;}}
if(creval.match(”NAN”)) {if(isNumeric(creobj)){errcnt=errcnt+1;cremsg +=cretmp+crems05+”\n”;}}
if(creval.match(”DTE”)) {if(!dmyValidator(creobj)){errcnt=errcnt+1;cremsg +=cretmp+crems06+”\n”;continue}}
if(creval.match(”DOB”)) {if(!dmyValidator(creobj)){errcnt=errcnt+1;cremsg +=cretmp+crems07+”\n”;}}
if(creval.match(”SSN”)) {if(!isSSN(creobj)){errcnt=errcnt+1;cremsg +=cretmp+crems08+”\n”;}}
if(creval.match(”ZIP”)) {if(!isZipcodeUSA(creobj)){errcnt=errcnt+1;cremsg +=cretmp+crems09+”\n”;}}
if(creval.match(”ZZZ”)) {if(!dummyValidator(creobj)){errcnt=errcnt+1;cremsg +=cretmp+crems10+”\n”;}}
if(creval.match(”ZZZ”)) {if(!dummyValidator(creobj)){errcnt=errcnt+1;cremsg +=cretmp+crems11+”\n”;}}
if(creval.match(”ZZZ”)) {if(!dummyValidator(creobj)){errcnt=errcnt+1;cremsg +=cretmp+crems12+”\n”;}}
if(creval.match(”ZZZ”)) {if(!dummyValidator(creobj)){errcnt=errcnt+1;cremsg +=cretmp+crems13+”\n”;}}
if(creval.match(”ZZZ”)) {if(!dummyValidator(creobj)){errcnt=errcnt+1;cremsg +=cretmp+crems14+”\n”;}}
if(creval.match(”ZZZ”)) {if(!dummyValidator(creobj)){errcnt=errcnt+1;cremsg +=cretmp+crems15+”\n”;}}
}
}
if(errcnt!= 0)
{
if(errcnt!=1) cremsg+=”\n”+crems99+errcnt;
if(atttyp==’form’) alert( cremsg );
return(false);
}
else
{return(true);}
}
function trimTrailingBlanks(TrimtrailingblanksValue)
{trim=TrimtrailingblanksValue;
if (trim.length==0) return trim;
for (var i=trim.length-1;i>=0;i–) if (trim.substring(i,i+1) !=’ ‘) {i++;break;}
if (i<0) i=0;
trim=trim.substring(0,i);
return trim;
}
//* ==============================================
//* Validation functions — Add new functions here
//* ==============================================
function isNumeric(elem){
var numericExpression = /^[0-9]+$/;
if(elem.value.match(numericExpression)){
return true;
}else{ return false;}
}
// If the element’s string matches the regular expression it is all letters
function isAlpha(elem){
var alphaExp = /^[a-zA-Z]+$/;
if(elem.value.match(alphaExp)){
return true;
}else{ return false;}
}
// If the element’s string matches the regular expression it is numbers and letters
function isAlphanumeric(elem){
var alphaExp = /^[0-9a-zA-Z]+$/;
if(elem.value.match(alphaExp)){
return true;
}else{ return false;}
}
function lengthRestriction(elem, min, max){
var uInput = elem.value;
if(uInput.length >= min && uInput.length <= max){
return true;
}else{ return false;}
}
function emailValidator(elem){
var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
if(elem.value.match(emailExp)){
return true;
}else{ return false;}
}
function dummyValidator(elem){
if(elem==elem){
return true;
}else{ return false;}
}
function ssnValidation(elem) {
var ssn = elem.value;
var matchArr = ssn.match();
var numDashes = ssn.split(’-').length - 1;
if (matchArr == null || numDashes == 1 || (parseInt(matchArr[1],10)==0)) {return false;} else { return true;}}
function isSSN(elem){
var numericExpression = /^(\d{3})-?\d{2}-?\d{4}$/;
if(elem.value.match(numericExpression)){
return true;
}else{ return false;}
}
function isZipcodeUSA(elem)
{
var iszip = elem.value;
var numDashes = elem.value.split(’-').length - 1;
var islength = elem.value.length;
if (islength == 5)
{
if(isNumeric(elem))
{
return true;
} else { return false;}
}
}
//#######################################
//### Highlight/Unhighlight Focused Input Fields
//#######################################
function focusWork(focusworkThis,focusworkEvent)
{var Event=focusworkEvent;
var This=focusworkThis;
if (Event.type==’focus’) This.style.backgroundColor=’Yellow’;
if (Event.type==’blur’)
{ This.style.backgroundColor=’White’;
validateField(This);}
}
//#######################################
//### Error Notify Red Background Fields
//#######################################
function ErrField(errfieldThis)
{ var This=errfieldThis;
This.style.backgroundColor=’Pink’;
}
function isCustom()
{
//* Put your custom specific validations here (false=fail)
if(’a’ == ‘a’) {return(true);}
else {return false;}
}
function switchInputType(SwitchinputtypeBase,SwitchinputtypeObjectID)
{
var objectSW=document.getElementById(SwitchinputtypeObjectID);
var baseSW=SwitchinputtypeBase;
baseSW.value=objectSW.value;
var masag=’Value is/’+baseSW.value;
alert(masag);
debugAlert(baseSW);
}
function mapValuesBack()
{
//switchInputType(document.LANSA.AZFNAMEMMM,’FNAME’);
//switchInputType(document.LANSA.AZLNAMEMMM,’LNAME’);
document.LANSA.ASTDRENTRY.value=’N';
HandleEvent(’<RDML MERGE=”*PROCESS”>’,'<RDML MERGE=”*FUNCTION”>’);
}
//#####################################################
//### Alert to Show Object Properties
//#####################################################
function debugAlert(AlertObject)
{ var i = 0 ; a = “”;
// list all window properties in a variable
for ( property in AlertObject )
{a += ( i ) + ” ” + property + “…”;
i ++;
if(i % 5 == 0) a += “\n”;
}
// display the window properties list
alert( a );
}
//–>
</script>
<!– ############################################## –>
<!– ### !@END Page Component PAG_HED ### –>
<!– ############################################## –>
Posted in Javascript, LANSA | No Comments »
3 ways to invoke DEBUG for LANSA for the Web
29. July 2008 by admin.
document.LANSA.ASTDRENTRY.value=”N”;
document.LANSA._PROCESS.value=Proc;
document.LANSA._FUNCTION.value=Func;
document.LANSA.action+=”+BDEBUG+QPADEV000Q”;
document.LANSA.submit();
or
<form method=”post” name=”LANSA”
action=”/<RDML MERGE=”&CGI”>/LANSAWEB?WEBEVENT+<RDML MERGE=”&SESSPL”>+bdebug+QPADEV000H”>
or
http://lansa.com/cgi-bin/lansaweb?procfun+mamcomproc+mlogon+deM+eng+BDEBUG+QPADEV000M
Posted in Javascript, LANSA | No Comments »
Good web Skeleton - handles body onload
24. July 2008 by admin.
1.00 50222<?xml version=”1.0″ encoding=”UTF-8″?>
2.00 50222<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”en” lang=”en”>
3.00 80618<!– LANSA for the Web - Skeleton Layout for MNU –>
4.00 50222<!– Process : %PR %PRDS –>
5.00 50222<!– Function : %FU %FUDS –>
6.00 50222<!– Page : %PG –>
7.00 50222<!– Generated by : %PROD –>
8.00 50222<!– Created by user : %USERI –>
9.00 50222<!– Time and Date : %STAMP –>
10.00 50222<!– RDML function sequence number - %SEQ –>
11.00 50222<!– This is a *WEBEVENT function %IFWEV –>
12.00 50222<head>
13.00 80522<!– Put Function Specific JS infront of Base JS –>
14.00 80618<RDML COMPONENT=”PAG_MNUSKLHEAD”>
15.00 80521<!– Title put in skeleton for base and function components –>
16.00 80521<TITLE><RDML MERGE=”&FUNCTION”> </TITLE>
17.00 50222</head>
18.00 80620<body <RDML COMPONENT=”PAG_MNUSKLBODYONLOAD”>>
19.00 50222<!– ======================= LANSA Form Begins ======================== –>
20.00 50222%W3FRM
21.00 50222<!– Default hidden or process hidden –>
22.00 50222<RDML MERGE=”&HIDDEN”>
23.00 50222<!– ================== Hidden Fields in the Request Group =========== –>
24.00 80623<table border=”0″ cellpadding=”0″ cellspacing=”0″>
25.00 50222%W3FLD
26.00 50222</table>
27.00 50222<!– ====================== End of Hidden fields =================== –>
28.00 50222<!– =============================================== ================== –>
29.00 50222<!– ========================= Layout Begins Here ================== –>
30.00 80618<RDML COMPONENT=”PAG_MNUSKLLAYOUT”>
31.00 50222<!– ========================= Layout Ends Here ==================== –>
32.00 50222<!– =============================================== ================== –>
33.00 50222<!– ========================== Browse List contents Start =========== –>
34.00 50222%W3BRW
35.00 50222<!– ========================== Browse List contents End ============ –>
36.00 50222</form>
37.00 50222<!– ============================ LANSA Form Ends Here ============== –>
38.00 50222</body>
39.00 50222</html>
Posted in LANSA | No Comments »
What I have been working on
18. July 2008 by admin.
[URL=http://uploads.screenshot-program.com/my.php?image=upl3613232958.png][IMG]http://uploads.screenshot-program.com/th00a00064003e80-3613232958.jpg[/IMG][/URL]
Posted in LANSA | No Comments »
LANSA Handle Event with Debug Prompt
4. June 2008 by admin.
function mmHandleEvent(Proc,Func)
{
var dbugDEV = prompt( "Enter Device Name for Debug Else leave blank" );
if(dbugDEV!="" ) document.LANSA.action+="+BDEBUG+"+dbugDEV+"+%20";
document.LANSA._PROCESS.value=Proc;
document.LANSA._FUNCTION.value=Func;
document.LANSA.submit();
}
LANSA JOBS
877 526 7220
Posted in LANSA | No Comments »
LANSA Checkboxes in Expandable List
4. June 2008 by admin.
Must have _BLNAME before List and _BLEND at end. (1 underscore)
<input type=”hidden” name=”__ZZCHKUSER-<RDML MERGE=”&ROWNUM” FORMAT=4> D” value=”<RDML MERGE=”ZZCHKUSER”>” size=”1″ > (2 underscores )
This works. Field ZZCHKUSER is in Browselist that has *NOBICP
<input type=”hidden” name=”__ZZCHKUSER-<RDML MERGE=”&ROWNUM” FORMAT=4> D” value=”<RDML MERGE=”ZZCHKUSER”>” size=”1″ >
<input type=checkbox name=”mChkBoxQ<RDML MERGE=”LISTCOUNT”>” value=”" <RDML MERGE=ZZCHKNODE> onclick=”SetCBState(this, ‘__ZZCHKUSER-<RDML MERGE=”&ROWNUM” FORMAT=4> D’, ‘Y’, ‘N’)”></strong></td>
This is the stuff for the page component
<INPUT TYPE=”HIDDEN” NAME=”_BLNAME” VALUE=”X1BL01LST” SIZE=”10″>
<RDML MERGE=”&BLX1BL01LST”>
<INPUT TYPE=”HIDDEN” NAME=”_BLEND” VALUE=”X1BL01LST” SIZE=10>
This is the stuff for the list component
<!– Component START for B1ABSLST / MAM20080528 –>
<tr height=”20″ class=’<RDML MERGE=”ZTRCOLOR”>’ >
<td align=”left”>
<A href=”JavaScript:document.LANSA.PLISTENTRY.value = ‘<RDML MERGE=”LISTCOUNT”>’; HandleEvent(’<RDML MERGE=”*PROCESS”>’,'<RDML MERGE=”*FUNCTION”>’);”> <IMG src=”/IMAGES/ball_blue.gif” ALT=”Go To Account Bill Maintenance” BORDER=”0″></A>
<strong><RDML MERGE=”ZZNAM”></strong></td>
<td align=”left” class=”arial1blackbold”> <strong> <RDML MERGE=”ZZACT”></strong></td>
<td align=”left” class=”arial1blackbold”><center> <strong><RDML MERGE=”ZZCNT”></strong></center></td>
<td align=”right” class=”arial1blackbold”> <strong><input type=checkbox name=”mChkBoxL<RDML MERGE=”LISTCOUNT”>” value=”" <RDML MERGE=ZZCHKNODE> onclick=”blueBallsChk(this,<RDML MERGE=”LISTCOUNT”>)”></strong></td>
<td align=”right” class=”arial1blackbold”> <strong>
<input type=”hidden” name=”__ZZCHKUSER-<RDML MERGE=”&ROWNUM” FORMAT=4> D” value=”<RDML MERGE=”ZZCHKUSER”>” size=”1″ >
<input type=checkbox name=”mChkBoxQ<RDML MERGE=”LISTCOUNT”>” value=”" <RDML MERGE=ZZCHKNODE> onclick=”SetCBState(this, ‘__ZZCHKUSER-<RDML MERGE=”&ROWNUM” FORMAT=4> D’, ‘Y’, ‘N’)”></strong></td>
</tr>
<!– Component END for B1ABSLST / MAM20080506 –>
CALL me for LANSA jobs
Mark
877 526 7220
Posted in LANSA | No Comments »
Using Checkboxes in a LANSA Browse list
30. May 2008 by admin.
If you want to use checkboxes in browse lists with their initial set checked, you will need to deploy the following technique. This technique is based on the preceding example.
<input type=”hidden” name=”__{field name}-<RDML MERGE=”&ROWNUM” FORMAT=4> D”
value=”<RDML MERGE=”{field name}” size=”{size}”>” />
<input type=”checkbox” name=”DUMMY” value=”<RDML MERGE=”{field name}”>”
onclick=”SetCBState(this, ‘__{field name}-<RDML MERGE=”&ROWNUM”
FORMAT=4> D’, ‘Y’, ‘N’)”
<RDML ONCONDITION=”{field name}”>
checked=”checked”
</RDML>
/>
{field name} is the name of the field you have defined in your DEF_LIST command. This {field name} is padded with trailing blanks to 10 characters.
Note that this technique uses the <RDML ONCONDITION> tag to determine the initial state of the checkbox.
This technique calls a different JavaScript function, SetCBState:
function SetCBState(obj, RFld, CY, CN)
{
var NumElements=document.LANSA.elements.length;
for (i=0; i<NumElements;i++)
{
if (document.LANSA.elements[i].name==RFld)
{
if (obj.checked) document.LANSA.elements[i].value=CY
else document.LANSA.elements[i].value=CN;
break;
}
}
}
Posted in LANSA | No Comments »
SELECT_SQL EXAMPLE using Group_by and Count(*)
29. May 2008 by admin.
SELECT_SQL FIELDS(#AGENT #ACCTNO (#ZZCNT ‘COUNT(*)’)) FROM_FILES((DWXP010)) WHERE(’CANDTE = 0 AND AGENT =:ZAGENT’) GROUP_BY(’AGENT,ACCTNO’) IO_ERROR(*NEXT)
Posted in LANSA | No Comments »