Example - Define a Built-In Function as a 3GL Subroutine

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 Definition (as per DC@F47 file)

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

Argument List  (as per DC@F48 file)

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:


Return Values (as per DC@F48 file)

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.

  • No labels