This section goes through the steps involved in creating a Built-In Function that will become part of the inline code of a LANSA function. The example is very simple but it will give you an understanding of how a Built-In Function fits into a LANSA system.
SCENARIO: This is a User Defined Built-In Function. The Built-In Function is used to flip dates from YYMMDD format to DDMMYY format.
The Built-in function will need some data structures (I SPECS) and some code (C SPECS) to drive the date manipulation.
The Built-In Function will be called UD_FLIP_DATE.
The next available identifier is 412.
BIF Name: | UD_FLIP_DATE |
Unique Identifier: | 412 |
Description: | Change date from YYMMDD to DDMMYY |
Call or Execute: | E |
Program Name: | IB@412 |
Terminates between calls: | N |
Number of arguments: | 1 |
Number of return values: | 1 |
BIF Name: | UD_FLIP_DATE |
Parameter Type | ARG |
Parameter Sequence: | 1 |
Parameter No: | 1 |
Parameter Ident: | A |
Description: | Date in YYMMDD |
Required / Optional: | R (R or O) |
Parameter Type: | N (A, N or L) |
Minimum Length: | 6 |
Maximum Length: | 6 |
Minimum Decimal: | |
Maximum Decimal: | |
Pass Length: | 6 |
Pass Decimal: | |
Default: |
BIF Name: | UD_FLIP_DATE |
Parameter Type | RET |
Parameter Sequence: | 1 |
Parameter Number: | 2 |
Parameter Identifier: | B |
Description: | Date out (DDMMYY) |
Required / Optional: | R (R or O) |
Parameter Type: | N (A, N or L) |
Minimum Length: | 6 |
Maximum Length: | 6 |
Minimum Decimal: | |
Maximum Decimal: | |
Pass Length: | 6 |
Pass Decimal: |
Enter the data into the Built-In Function definition files: Create a member in QBIFSRC called BIF412ISPC and write the code for the data structures:
I* Code used by built-in function 412 - UD_FLIP_DATE
I*
IDATEIN DS
I 1 60NUMDI
I 1 20YRIN
I 3 40MNIN
I 5 60DYIN
I*
IDATEOU DS
I 1 60NUMDO
I 1 20DYOU
I 3 40MNOU
I 5 60YROU
Create a member in QBIFSRC called BIF412CSPC and write the code to manipulate the dates.
C*====================================================
C* IB@412 : UD_FLIP_DATE
C*====================================================
CSR IB@412 BEGSR
C*
C MOVEL'Y' DC@RET
C*
C Z-ADDB@412A NUMDI
C*
C MOVELDYIN DYOU
C MOVELMNIN MNOU
C MOVELYRIN YROU
C*
C Z-ADDNUMDO B@412B
C*
CSR ENDSR
These source members will be included in the inline code of a LANSA function that uses this Built-In Function by /COPY commands generated at compile time.