You are on page 1of 248

TIPTOP GP

TIPTOP

TIPTOP GP

TIPTOP
2447
222
tiptop-tsc@dsc.com.tw
2004 07 15
1.00.03

2004-2005

Printed in Taiwan


=====================================================

Chap 01TIPTOP GP
1.1
1.2
1.2.1
1.2.2
1.3
1.4
1.5
1.6
1.7

1-1
1-3
1-3
1-4
1-5
1-6
1-8
1-9
1-10

Chap 02TIPTOP GP
2.1
2.1.1
2.1.2
2.1.3
2.2
2.2.1
2.2.2
2.2.3
2.2.4
2.2.5
2.2.6
2.2.7

2-1
2-1
2-2
2-7
2-9
2-9
2-11
2-15
2-17
2-20
2-22
2-23

Chap 03TIPTOP GP
3.1
3.2
3.3
3.4
3.5
3.5.1
3.5.2
3.5.3
3.5.4
3.6

3-1
3-3
3-4
3-5
AZZ 3-6
3-7
3-8
3-13
3-14
3-17


=====================================================

Chap 04
4.1
4.2
4.3
4.4

4.4.1
4.4.2
4.4.3
4.4.4
4.4.5
4.4.6
4.4.7
4.4.8
4.4.9
4.4.10

4-1
4-2
4-3
4-5
4-5
4-8
4-14
4-21
4-30
4-32
4-34
4-36
4-40
4-44

Chap 05
5.1
5.2
5.3
5.4
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6

5-1
5-2
5-5
5-7
5-7
5-9
5-16
5-24
5-49
5-59

Chap 06
6.1
6.2
6.3
6.4
6.4.1
6.4.2
6.4.3
6.4.4
6.4.5

6-1
6-2
6-4
6-6
6-7
6-8
6-9
6-12
6-16


=====================================================

Chap 07Genero Debugger


7.1
7.2

Debugger 7-1
7-3

Appdenix ATIPTOP GP
A.1

A-1

Chapter 1
TIPTOP GP

DataSystem
1.1

A
G
C
X

AXX
XX

z AIMIMItem Master subsystem


Inventory Management subsystem
z AXM
Sales Management subsystem
ASM

ASMSystem ManagermentASM
AXM
TIPTOP

aap

Accounts Payable Management

abg

Budget Management

abm

BOM

BOM Management

abx

Bond Tax Management

aco

Customer Order Management

acs

Product Cost Management

adm

Deformed Management

aec

Engineer Control Subsystem

afa

Fixed Asset Management

TIPTOP GP 1-1

TIPTOP GP

agl

General Ledger Management

aim

Inventory Management

amd

Media Declaration Management

amm

Module Management

amr

MRP

MRP Management

ams

MPS

Main Process Control System

anm

Notes Management

aoo

System Control Management

apm

Purchase Management

apj

Project Management

aps

APS Interface System

apy

Human Resource Management

aqc

Quality Control Subsystem

arm

Rejection/Maintains Manage

asd

Standard Accounting Control

asf

Shop Flow Control Subsystem

asm

System Control Management

aws

EasyFlow

Easy Flow Interface System

axc

Cost Accounting Management

axd

Group Sales Management

axm

Order Management II

axr

Accounts Receivable

axs

Sales Analysis Subsystem

azz

TIPTOP GP

TIPTOP GP Management

gap

Accounts Payable Management

ggl

General Ledger Management

gis

Final Currency Management

gnm

Notes Management

gpm

Purchase Management

gpy

Human Resource Management

gxr

Accounts Receivable

lib

Standard Common Library

sub

Standard Common Subfunction

qry

Standard Comman Query Func

TIPTOP GP 1-2

DataSystem
1.2
1.2.1

_
SSSQ999

z SSS
z Q
I

z 999
0
1

aimr100 aim i 100


aimi1001 aimi100

AZZ

AZZ
p_zzzz_file
p_perlangPERLanguage

TIPTOP GP 1-3

TIPTOP GP

1.2.2.
4gl

4gl
4gl
42m
42r

per
42f

sch

TIPTOP GP 1-4

DataSystem
1.3
TIPTOP GP

cl_xxxxxxx
cl_Common Library
xxxxxxx 1 17 p_link

_
cl_err
cl_opmsg

function
p_linklib

TIPTOP GP $top/lib
42m
42f

TIPTOP GP 1-5

TIPTOP GP

1.4

s_xxxxxxx
s_Subfunction
xxxxxxx 17 1

s_tlf
s_upimg img
TIPTOP GP $TOP/sub

42m42f

z
z

z cl_xxx
z s_xxx

TIPTOP GP 1-6

DataSystem

q_xxxxxxx
q_Query
xxxxxxx 17 1
table name

q_ima
q_gef

TIPTOP GP $TOP/qry

42m42f
p_qry

AZZ p_qry

TIPTOP GP 1-7

TIPTOP GP

1.5
Function
xxxx_yy
xxxx_
yy

i100_a i100

_a

_r

_b

_rep

_copy

_show

_cs _curs QBE


_x

_fetch

_u

_i

_out

_menu

_bp:

_q

_ima01

_set_entry:

_set_no_entry:

TIPTOP GP 1-8

DataSystem
1.6

Global Varibles
g_xxxxxxx
g_ Global
xxxxxxx

g_gui_type gui
g_style_list window Window Style
$top/config/top.global
Local Varibles
l_xxxxxxx
l_Local Function
xxxxxxx
(PARAMETER VARLABLES)
p_xxxxxxx
p_(PARAMETER)
xxxxxxx
SCREEN VARIABLES
s_xxxxxxx
s_
xxxxxxx

TIPTOP GP 1-9

TIPTOP GP

1.7
3 4
Table Name
xxx_file xxx 2 4
_file
ima_file gef_file
p_zta

Field Name
xxx99
xxx
99 2 3 4
zz32 zz_file gaz03
p_zta

UNIX Sch Files


c_xxx.sch UNIX
xxx
c_ima.sch SQL sql

TIPTOP GP 1-10

Chapter 2
TIPTOP GP

DataSystem
2.1
2.1.1

2.1.1.1
TIPTOP GP

TIPTOP GP 2-1

TIPTOP GP

2.1.1.2

2.1.2

TIPTOP GP 2-2

DataSystem
2.1.2.1

TIPTOP GP 2-3

TIPTOP GP

2.1.2.2
(1)

TIPTOP GP 2-4

DataSystem
(2)

[ENTER]

(3)

[ENTER]

z
z

TIPTOP GP 2-5

TIPTOP GP

(4)

TIPTOP GP 2-6

DataSystem
2.1.2.3

TIPTOP GP

2.1.3
2.1.3.1

F1
F2

TIPTOP GP 2-7

TIPTOP GP

2.1.3.2

TIPTOP GP 2-8

DataSystem
2.2
2.2.1

TIPTOP GP 2-9

TIPTOP GP

2.2.1.1

(1)
(2)
(3)

(4)

TIPTOP GP 2-10

DataSystem
2.2.2

2.2.2.1

(1)

(2)[ENTER][TAB]
(3)
(4)

TIPTOP GP 2-11

TIPTOP GP

(5)

(6)

2.2.2.2

(1)

(2)

(3)

2.2.2.3

(1)
(2)

TIPTOP GP 2-12

DataSystem
2.2.2.4

(1)
(2)

(3)

2.2.2.5

(1)

(2)

(3)

TIPTOP GP 2-13

TIPTOP GP

2.2.2.6

(1)

2.2.2.7

(1)
()

(2)
*A* A
?A? A

=
>n n>100
<n n<100
<>n<>100<>A001
n:m n m 100:200
x|y x yA|B50|60
[a-z]* a z
(3)
(4)

TIPTOP GP 2-14

DataSystem
2.2.3

2.2.3.1

A.

B.

F1

C.

F2

TIPTOP GP 2-15

TIPTOP GP

D.
E.

PageUp

PageDown

2.2.3.2

(1)

2.2.3.3

(1)

TIPTOP GP 2-16

DataSystem
2.2.4

2.2.4.1

A.

B.
C.

TIPTOP GP 2-17

TIPTOP GP

2.2.4.2

A.

2.2.4.3

A.

B.

2.2.4.4

A.
B.

TIPTOP GP 2-18

DataSystem

2.2.4.5

A.
B.

2.2.4.6

A.

2.2.4.7

A.

()

B.

C.
D.

TIPTOP GP 2-19

TIPTOP GP

2.2.5

*A* A
?A? A

=
>n n>100
<n n<100
<>n<>100<>A001
n:m n m 100:200
x|y x yA|B50|60
[a-z]* a z

TIPTOP GP 2-20

DataSystem

[ENTER]

[ENTER]

TIPTOP GP 2-21

TIPTOP GP

2.2.6

2.2.6.1

2.2.6.2

A.
B.

TIPTOP GP 2-22

DataSystem
2.2.7

(QBE )
*A* A
?A? A

TIPTOP GP 2-23

TIPTOP GP

=
>n n>100
<n n<100
<>n<>100<>A001
n:m n m 100:200
x|y x yA|B50|60
[a-z]* a z

[ENTER]

TIPTOP GP 2-24

DataSystem

z
(QBE )

z
z

[ENTER]

1.
2.

1.

L.

TIPTOP GP 2-25


3.

TIPTOP GP

4.

Rich Format Output


TextWordExcel Pdf

V:View 132 132

5.

J:JavaMail
Java Java Mail

E-mail Address

TIPTOP GP 2-26

DataSystem
6.

C:

7.

z 66 66 33
z
z
12

34

TIPTOP GP 2-27


8.

H:

9.

TIPTOP GP

Crystal report Crystal Report


Crystal Report

TIPTOP GP 2-28

Chapter 3
TIPTOP GP

DataSystem
3.1
tiptop tiptop

tiptop
config

aap,abx,azz...

sub,lib,qry

4ad

4gl

4gl

4tm

42m

42m

4sm

42r

per

4tb

per

42f

4st

42f

top.global

sch
rep

release

demo

schema

doc

tool

log

ds4gl2

out

bin

tmp

tiptop.key

trigger

TIPTOP GP

z bin
z config
z demo
z ds4gl2
z tmp

z aim
z libcl_xxx

z subs_xxx
z qryq_xxx

TIPTOP GP 3-1

TIPTOP GP

config
TOOLBAR
Window StyleAction Default

z top.global g_user
g_plant
z 4ad Action

z 4tm TopMenu

z 4tb Tool Bar


z 4st Style
z 4sm Start Menu

4gl
per

sql42m42r42f

z
z
z
z
z
z

4gl
42m

42r
42m
per
42f
sch

TIPTOP GP 3-2

DataSystem
3.2
TIPTOP GP DB Genero
TIPTOP GP

.profile

ORACLE_HOME

ORACLE ORACLE

ORACLE_SID

ORACLEORACLE

NLS_LANG

ORACLE

INFORMIXDIR

INFORMIX Informix

INFORMIXSERVER

INFORMIXInformix ON-line

DBLANG

INFORMIX

DBPATH

ORACLE

DBDATE

DBDELIMITER

FGL $FGLDIR/envcomp$FGLASDIR/envas

FGLDIR

FGLASDIR

Web Server

FGLASIP

Web Server

FGLDBPATH

FGLPROFILE

LANG

FGL

TIPTOP GP $TOP/bin/tiptop_sys

TOP

TIPTOP GP

Axx

Axxi

VI

LPX

TIPTOP GP 3-3

TIPTOP GP

3.3
TIPTOP GP
shell script

SHELL Script

r.c2

4gl 42m

r.l2

42m 42r
r.l2 lib sub qry r.gx

42x

r.r2

42r

r.d2

Debugger

r.d2+

Debugger

r.f2

per 42f

r.gf

42f

r.gx

sublibqry 42x

exe2

42r

SHELL Script

r.s2

db SCHEMA

loaddb

db

unloaddb

db

TIPTOP GP 3-4

DataSystem
3.4
TIPTOP GP
instance informix
on-line

TIPTOP GP
TIPTOP GP

topprod

topcust

tiptop

toptest

topcust

tiptop

TIPTOP GP 3-5

TIPTOP GP

3.5 AZZ
TIPTOP GP Genero
ERP
TIPTOP
GP
GP
4GL
1.
2.
3.
4.

udm7
GP p_zz
p_zta
p_zxp_zyp_zxwp_zxy

TIPTOP GP 3-6

DataSystem
3.5.1

udm7
udm7

TIPTOP GP aoo

TIPTOP GP 3-7

TIPTOP GP

3.5.2 GP

p_zz

AZZ

p_zz

p_linkAction p_base_actPER
p_base_perp_help

TIPTOP GP 3-8

DataSystem

p_link

TIPTOP GP p_link

42m

r.l2 Action Name

TIPTOP GP 3-9

TIPTOP GP

p_base_act

42m libsubqry 42m


Action ID Action
Action Default 4ad TopMenu 4tm
z

4ad 4ad
TIPTOP GP Action

Action

4tm TopMenu Action ID 4tm


4ad4tmconfig

TIPTOP GP 3-10

DataSystem

p_base_per

p_help

TIPTOP GP 3-11

TIPTOP GP

p_help

html

html
html
$TOP/doc/help
html
client

TIPTOP GP 3-12

DataSystem
3.5.3

p_zta
sqlplus informix dbaccess
p_zta

TIPTOP GP 3-13

TIPTOP GP

3.5.4

TIPTOP GP

p_zx

p_zx
Web
user ActiveX

TIPTOP GP 3-14

DataSystem
p_zxy

p_base_act

1.
2.
3.

p_zz
p_zx p_zy
p_zxw

p_zz

p_zy

p_zxw

TIPTOP GP 3-15

TIPTOP GP

p_zy

p_zy
Action
p_zz

AZZ

TIPTOP GP 3-16

DataSystem
3.6

(p_tabname)

Table

(p_zta)

(p_feldname)

(Table)

schema ,
Create Table ( Alter),
(p_zs)

PER file,
r.f2 .per ,
.42f

UI
(r.gf)

Per ,
r.gf ,
UI (gae_file)

UI
(p_perlang)

UI,
Combox..

UI
(p_per)

(p_za)

Key,

za_file

(4gl),
r.c2 compile .42m

TIPTOP GP 3-17

TIPTOP GP

(p_zz)

Table

(p_link)

ACTION

(p_base_act)

(link)(.42m) ,
r.l2
(.42m-> .42r)
ACTION,
Button Label Hot Key,
ACTION
p_link

ACTION ,

(p_zz)

(p_zy)

ACTION

(p_zm)

zm_file ,
,
start menu

TIPTOP GP

TIPTOP GP 3-18

Chapter 4

DataSystem
4.1

MAIN
menu( )
q( )

F/N/P/L

a( )

u( )

r( )

x( )

copy( )

out( )

cs( )

fetch( )

i( )

show( )

show( )

show( )

u( )

rep( )

i( )

delh( )

fetch( )
show( )

TIPTOP GP 4-1

TIPTOP GP

4.2
gen_file
:

gen01

VARCHAR2(8)

gen02

VARCHAR2(8)

gen03

VARCHAR2(6)

gen04

VARCHAR2(20)

gen05

VARCHAR2(5)

gen06

VARCHAR2(30)

genacti

VARCHAR2(1)

genuser

VARCHAR2(10)

gengrup

VARCHAR2(6)

genmodu

VARCHAR2(10)

gendate

DATE

gen_01

unique

(gen01)

TIPTOP GP 4-2

DataSystem

TIPTOP GP

4.3

aooi010

aooi010
Genero TIPTOP GP
per

TIPTOP GP 4-3

TIPTOP GP

PER Example
SCHEMA ds

LAYOUT
VBOX
FOLDER
PAGE page01 (TEXT="Main")
GRID
{
Employee No.

[azb1

Name

[gen02

Password

[azb02

Department No.

[gen03

][gem02

Position

[gen04

Amount

[azb06

}
END --GRID
END --PAGE
PAGE info (TEXT="Info")
GRID
{
Record Owner [azbuser

] Last Modified by

Department

] Create/Modify Date [azbdat

[grup

}
END --GRID
END --PAGE
END --FOLDER
GRID
{
----------Rows [cnt

] ----------

}
END --GRID
END --VBOX
END LAYOUT

TABLES azb_file

TIPTOP GP 4-4

[azbmodu

] Data Valid Code [z


]

DataSystem

TIPTOP GP
ATTRIBUTES
BUTTONEDIT azb1

= azb01, ACTION=CONTROLP, IMAGE="zoom" ,


COMMENTS = 'KEY Field, No Blank/Repeated!, <^P>Qry Employee;

azb02

= azb02;

gen02

= FORMONLY.gen02, NOENTRY;

gem02

= FORMONLY.gem02, NOENTRY;

gen03

= FORMONLY.gen03, NOENTRY;

gen04

= FORMONLY.gen04, NOENTRY;

azb06

= azb06;

cnt

= FORMONLY.cnt TYPE SMALLINT, NOENTRY ;

azbuser = azbuser, NOENTRY;


grup

= azbgrup, NOENTRY;

azbmodu = azbmodu, NOENTRY;


DATEEDIT

azbdat = azbdate, NOENTRY;


z

= azbacti, NOENTRY, UPSHIFT;

END

TIPTOP GP 4-5

TIPTOP GP

4.4
4.4.1
Program Memo
1 # Prog. Version..: '1.00.01-04.05.17'
2 # Pattern name...: aooi010.4gl
3 # Descriptions...:

4 # Date & Author..: 91/04/11 By Lee


5 # Modify

: 92/05/05 By David

6 # Note

Global Setting
8 DATABASE ds
9
10 GLOBALS "../../config/top.global"

config/top.global TIPTOP GP

top.global

g_prog

g_user
g_clas
g_lang
g_privX
g_qryparam
g_action_choice cl_chk_act_auth

g_plant g_rlang g_bgjob


g_today g_win_style g_idle_seconds
IDLE

TIPTOP GP 4-6

DataSystem

TIPTOP GP

TIPTOP GP

12 DEFINE g_azb

RECORD LIKE azb_file.*, #

13

g_azb_t

RECORD LIKE azb_file.*, #

14

g_azb01_t

LIKE azb_file.azb01,

15

g_x

ARRAY[20] OF VARCHAR(40),# za_file

16

g_wc

STRING,

# user

17

g_sql

STRING,

# sql

18

g_azb_rowid INTEGER

# Key

# ROWID

19
20 DEFINE g_forupd_sql

STRING

# SELECT ... FOR UPDATE SQL

21 DEFINE g_before_input_done

SMALLINT

# Before Input

22 DEFINE g_chr

VARCHAR(1)

23 DEFINE g_cnt

INTEGER

24 DEFINE g_dash

VARCHAR(400)

25 DEFINE g_i

SMALLINT

# FOR

26 DEFINE g_len

SMALLINT

# (79/132/136)

27 DEFINE g_msg

VARCHAR(72)

28 DEFINE g_curs_index

INTEGER

# TOOLBAR

29 DEFINE g_row_count

INTEGER

30 DEFINE g_jump

INTEGER

31 DEFINE g_no_ask

SMALLINT

TIPTOP GP 4-7

TIPTOP GP

4.4.2
Main Outline
33 MAIN

45

LET p_row = ARG_VAL(1)

IF (NOT cl_user()) THEN

48

67

OPEN WINDOW i010_w AT p_row,p_col WITH FORM "aoo/42f/aooi010"

68

ATTRIBUTE (STYLE = g_win_style CLIPPED)

70

CALL cl_ui_init()

# Window

72

CALL i010_menu()

# Menu

74

CLOSE WINDOW i010_w

75

CALL cl_used('aooi010',l_time,2) RETURNING l_time # log,

76 END MAIN

125 FUNCTION i010_menu()


127
128
129

MENU ""
BEFORE MENU

# icon

CALL cl_navigator_setting(g_curs_index, g_row_count)

131

ON ACTION insert

132

LET g_action_choice="insert"

133

IF cl_chk_act_auth() THEN

134

CALL i010_a()

135

END IF

213

END MENU

214

CLOSE i010_cs

215 END FUNCTION

TIPTOP GP 4-8

# g_action_choice

DataSystem

TIPTOP GP
Main Example
33 MAIN
34

DEFINE

35

p_row,p_col

SMALLINT,

36

l_time

VARCHAR(8)

37
38

OPTIONS

39

FORM LINE

FIRST + 2,

40

MESSAGE LINE

LAST,

41

PROMPT LINE

LAST,

42

INPUT NO WRAP

#:

43

DEFER INTERRUPT

45

LET p_row = ARG_VAL(1)

46

LET p_col = ARG_VAL(2)

48
49

IF (NOT cl_user()) THEN


EXIT PROGRAM

50

END IF

52

WHENEVER ERROR CALL cl_err_msg_log

cl_user()

TIPTOP GP
cl_err_msg_log

54
55
56

IF (NOT cl_setup("AOO")) THEN


EXIT PROGRAM
END IF

# AOO

cl_setup(arg) arg

TIPTOP GP 4-9

TIPTOP GP

58

CALL cl_used('aooi010',l_time,1) RETURNING l_time # log,

60

INITIALIZE g_azb.* TO NULL

62

LET g_forupd_sql = "SELECT * FROM azb_file WHERE ROWID = ? FOR UPDATE"

63

DECLARE i010_cl CURSOR FROM g_forupd_sql

cl_used()

# LOCK CURSOR

DB

65

LET p_row = 5 LET p_col = 10

67

OPEN WINDOW i010_w AT p_row,p_col WITH FORM "aoo/42f/aooi010"

68

ATTRIBUTE (STYLE = g_win_style CLIPPED)

g_win_style

70

CALL cl_ui_init()

# Window

cl_ui_init()

72

CALL i010_menu()

# Menu

74

CLOSE WINDOW i010_w

76

CALL cl_used('aooi010',l_time,2) RETURNING l_time # log,

cl_used()

76 END MAIN

TIPTOP GP 4-10

DataSystem

TIPTOP GP
Menu Example
125 FUNCTION i010_menu()

127
128
129

MENU ""
BEFORE MENU

# icon

CALL cl_navigator_setting(g_curs_index, g_row_count)

cl_navigator_setting()
TOOLBAR
131

ON ACTION insert

132

LET g_action_choice="insert"

133

IF cl_chk_act_auth() THEN

134

CALL i010_a()

135

END IF

137

ON ACTION query

138

LET g_action_choice="query"

139

IF cl_chk_act_auth() THEN

140

END IF

143

ON ACTION first

146
147

149
150

152
153

155
156

cl_chk_act_auth()
g_action_choice action ID

CALL i010_q()

141

144

# g_action_choice

CALL i010_fetch('F')

ON ACTION previous
CALL i010_fetch('P')

ON ACTION jump
CALL i010_fetch('/')

ON ACTION next
CALL i010_fetch('N')

ON ACTION last
CALL i010_fetch('L')

TIPTOP GP ACTION
ACTION
ID
Action ID

Action ID

accept

first

cancel

previous

insert

jump

query

next

delete

lase

modify

invalid

output

export

reproduce

controlp

help

controlt

locale

controlz

detail

controln

exit

controlg

TIPTOP GP 4-11


158

TIPTOP GP

ON ACTION modify

159

LET g_action_choice="modify"

160

IF cl_chk_act_auth() THEN

161
162

164

TIPTOP GP action ID

action ID list g_prog 4ad

CALL i010_u()
END IF

ON ACTION invalid

165

LET g_action_choice="invalid"

166

IF cl_chk_act_auth() THEN

167
168

170

CALL i010_x()
END IF

ON ACTION delete

171

LET g_action_choice="delete"

172

IF cl_chk_act_auth() THEN

173
174

176

CALL i010_r()
END IF

ON ACTION reproduce

177

LET g_action_choice="reproduce"

178

IF cl_chk_act_auth() THEN

179

CALL i010_copy()

180

END IF

182

ON ACTION output

183

LET g_action_choice="output"

184

IF cl_chk_act_auth()

185
186

188
189

THEN CALL i010_out()


END IF

ON ACTION help
CALL cl_show_help()

# Browser

Help cl_show_help()
client g_prog htm
191

ON ACTION exit

192

LET g_action_choice = "exit"

193

EXIT MENU

TIPTOP GP 4-12

DataSystem

TIPTOP GP
195

ON ACTION cancel

196

LET g_action_choice = "exit"

197

EXIT MENU

199

ON ACTION controlg

200

202

CALL cl_cmdask()

cl_cmdask()

zz08 UNIX
#, zz08

ON ACTION locale

203

CALL cl_dynamic_locale()

cl_dynamic_locale()

205

ON IDLE g_idle_seconds

206

CALL cl_on_idle()

207

CONTINUE MENU

# IDLE
# IDLE

cl_on_idle()

ON IDLE g_idle_seconds
g_idle_seconds
INPUTDISPLAYMENUPROMPT

209

COMMAND KEY(INTERRUPT)

210

LET g_action_choice = "exit"

211

EXIT MENU

COMMAND KEY(INTERRUPT)
Genero MENU COMMAND KEY
Windows X INTERRUPT
TIPTOP GP

213

END MENU

214

CLOSE i010_cs

215 END FUNCTION

TIPTOP GP 4-13

TIPTOP GP

4.4.3
Cursor
119
120

LET g_sql=
"SELECT COUNT(*) FROM azb_file WHERE ",g_wc CLIPPED

121

PREPARE i010_precount FROM g_sql

122

DECLARE i010_count CURSOR FOR i010_precount

410

OPEN i010_count

411

FETCH i010_count INTO g_row_count

cursor
LOCK CURSOR
LOCK CURSOR PREPARE
CURSOR OPEN
Lock Cursor
62

LET g_forupd_sql = "SELECT * FROM azb_file WHERE ROWID = ? FOR UPDATE NOWAIT"

63

DECLARE i010_cl CURSOR FROM g_forupd_sql

# LOCK CURSOR

493

OPEN i010_cl USING g_azb_rowid

494

IF STATUS THEN

495

CALL cl_err("OPEN i010_cl:", STATUS, 1)

496

CLOSE i010_cl

497

ROLLBACK WORK

498

RETURN

499

END IF

500

FETCH i010_cl INTO g_azb.*

501

IF SQLCA.sqlcode THEN

# DB

502

CALL cl_err(g_azb.azb01,SQLCA.sqlcode,1)

503

RETURN

504

END IF

Lock cursor
LOCK CURSOR ORACLE
LOCK CURSOR FOR UPDATE NOWAIT INFORMIX NOWAIT
TIPTOP GP OPENFETCH error

TIPTOP GP 4-14

DataSystem

TIPTOP GP
Dynamic Query
88

CALL cl_init_qry_var()

# g_qryparam

89

LET g_qryparam.form = "q_gen"

#g_qryparam.form

90

LET g_qryparam.state = "c"

#g_qryparam.state

91

LET g_qryparam.default1 = g_azb.azb01

#g_qryparam.default

92

CALL cl_create_qry() RETURNING g_qryparam.multiret

93

DISPLAY g_qryparam.multiret TO azb01

94

NEXT FIELD azb01

cl_create_qry
TIPTOP GP

p_qry

p_qry

TIPTOP GP 4-15

TIPTOP GP

GLOBAL varibleg_qryparam.*

CALL cl_init_qry_var()

# g_qryparam

LET g_qryparam.form = "q_gen"

LET g_qryparam.default1 = g_azb.azb01

CALL cl_create_qry() RETURNING g_azb.azb01 #

INPUT/INPUT ARRAY CONSTRUCT


LET g_qryparam.state = c

# ( INPUT/INPUT ARRAY)

where
arg

LET g_qryparam.default2 = g_azb.azb02

LET g_qryparam.where = azb03=arg1

LET g_qryparam.arg1 = g_azc.azc01

# 9

arg
CONSTRUCT INPUT
CONSTRUCT STRING
TIPTOP GP g_qryparam STRING
CALL cl_create_qry() RETURNING g_qryparam.multiret #

CONSTRUCT p_qry
default1

LET g_qryparam.multiret_index = 2

TIPTOP GP
cl_create_qry

TIPTOP GP 4-16

DataSystem

TIPTOP GP

Query Example
394 FUNCTION i010_q()
395
396

LET g_row_count = 0

397

LET g_curs_index = 0

398

CALL cl_navigator_setting(g_curs_index,g_row_count)

400

MESSAGE ""

401

CALL cl_opmsg('q')

402

DISPLAY '

403

CALL i010_curs()

404

IF INT_FLAG THEN

TOOLBAR

' TO FORMONLY.cnt

405

LET INT_FLAG = 0

406

CLEAR FORM

407

RETURN

408

END IF

410

OPEN i010_count

411

FETCH i010_count INTO g_row_count

412

DISPLAY g_row_count TO FORMONLY.cnt

413

OPEN i010_cs

414

IF SQLCA.sqlcode THEN

# SCROLL CURSOR

_curs QBE
CURSOR MENU

# DB TEMP(0-30 )

415

CALL cl_err(g_azb.azb01,SQLCA.sqlcode,1)

416

INITIALIZE g_azb.* TO NULL

417
418
419

ELSE
CALL i010_fetch('F')

# TEMP

END IF

420 END FUNCTION

Curs Example
78 FUNCTION i010_curs()
79

_cs QBE TIPTOP GP


CONSTRUCT
CONSTRUCT

80

CLEAR FORM

81

CONSTRUCT BY NAME g_wc ON

82

azb01,azb02,azb06,

83

azbuser,azbgrup,azbmodu,azbdate,azbacti

85

ON ACTION controlp

TIPTOP GP 4-17


86

TIPTOP GP
CASE

87

WHEN INFIELD(azb01)

88

CALL cl_init_qry_var()

89

LET g_qryparam.form = "q_gen"

90

LET g_qryparam.state = "c"

91

LET g_qryparam.default1 = g_azb.azb01

92

CALL cl_create_qry() RETURNING g_qryparam.multiret

93

DISPLAY g_qryparam.multiret TO azb01

94

NEXT FIELD azb01

95
96

OTHERWISE

97

EXIT CASE

98

END CASE

100

ON IDLE g_idle_seconds

101

CALL cl_on_idle()

102

CONTINUE CONSTRUCT

104

END CONSTRUCT

106

107

IF g_priv2='4' THEN

108

g_priv2g_priv3 SQL
#

LET g_wc = g_wc clipped," AND azbuser = '",g_user,"'"

109

END IF

110

IF g_priv3='4' THEN

111

# idle

LET g_wc = g_wc clipped," AND azbgrup MATCHES '",

112

g_grup CLIPPED,"*'"

113

END IF

114

LET g_sql="SELECT ROWID,azb01 FROM azb_file ", # SQL

115

" WHERE ",g_wc CLIPPED, " ORDER BY azb01"

116

PREPARE i010_prepare FROM g_sql

117

DECLARE i010_cs

118
119
120

# SCROLL CURSOR

SCROLL CURSOR WITH HOLD FOR i010_prepare


LET g_sql=
"SELECT COUNT(*) FROM azb_file WHERE ",g_wc CLIPPED

121

PREPARE i010_precount FROM g_sql

122

DECLARE i010_count CURSOR FOR i010_precount

123 END FUNCTION

TIPTOP GP 4-18

DataSystem

TIPTOP GP

Fetch Example
422 FUNCTION i010_fetch(p_flazb)
423
424

DEFINE
p_flazb

CHAR(1)

425
426

FETCH KEY

CASE p_flazb

427

WHEN 'N' FETCH NEXT

428

WHEN 'P' FETCH PREVIOUS i010_cs INTO g_azb_rowid,g_azb.azb01

429

WHEN 'F' FETCH FIRST

i010_cs INTO g_azb_rowid,g_azb.azb01

430

WHEN 'L' FETCH LAST

i010_cs INTO g_azb_rowid,g_azb.azb01

431

WHEN '/'

432

i010_cs INTO g_azb_rowid,g_azb.azb01

IF (NOT g_no_ask) THEN

433

CALL cl_getmsg('fetch',g_lang) RETURNING g_msg

434

LET INT_FLAG = 0 ######add for prompt bug

435

PROMPT g_msg CLIPPED,': ' FOR g_jump

436

ON IDLE g_idle_seconds

437

CALL cl_on_idle()

438

END PROMPT

439

IF INT_FLAG THEN

440

LET INT_FLAG = 0

441

EXIT CASE

442

END IF

g_no_ask
g_no_ask=FALSE
g_jump

443

END IF

444

FETCH ABSOLUTE g_jump i010_cs INTO g_azb_rowid,g_azb.azb01

445

LET g_no_ask = FALSE

446

END CASE

448

IF SQLCA.sqlcode THEN

449

CALL cl_err(g_azb.azb01,SQLCA.sqlcode,0)

450

RETURN

451

ELSE

KEY
TOOL
BAR Enable Disable

TIPTOP GP 4-19


452

CASE p_flazb

TIPTOP GP
#,

453

WHEN 'F' LET g_curs_index = 1

454

WHEN 'P' LET g_curs_index = g_curs_index - 1

455

WHEN 'N' LET g_curs_index = g_curs_index + 1

456

WHEN 'L' LET g_curs_index = g_row_count

457

WHEN '/' LET g_curs_index = g_jump

458

END CASE

g_curs_index
g_row_count

460
461

CALL cl_navigator_setting(g_curs_index, g_row_count)


END IF

cl_navigator_setting(,)
TOOLBar

463
464
465
466
467
468
469

SELECT * INTO g_azb.* FROM azb_file

# DB, TEMP

WHERE ROWID = g_azb_rowid


IF SQLCA.sqlcode THEN
CALL cl_err(g_azb.azb01,SQLCA.sqlcode,0)
ELSE
CALL i010_show()

END IF

470 END FUNCTION

Show Example
472 FUNCTION i010_show()
473

LET g_azb_t.* = g_azb.*

474

DISPLAY BY NAME g_azb.*

475

CALL i010_azb01('d')

476 END FUNCTION

TIPTOP GP 4-20

_show() display

DataSystem

TIPTOP GP

4.4.4

INPUT

Input Outline
267
273

INPUT BY NAME WITHOUT DEFAULTS


BEFORE INPUT

275

LET g_before_input_done = FALSE

276

CALL i010_set_entry(p_cmd)

277

CALL i010_set_no_entry(p_cmd)

278

LET g_before_input_done = TRUE

280

AFTER FIELD azb01

302

BEFORE FIELD azb06

306

AFTER INPUT

314

ON ACTION controlo

321

ON ACTION controlp

336
337

ON ACTION controlz
CALL cl_show_req_fields()

TIPTOP GP A,B,C
A C
AfterField ABeforeField BAfterField BBeforeField C

NEXT FIELD
Next Field

339
340

ON ACTION controlg
CALL cl_cmdask()

342
343
344

ON ACTION controlf

ON ACTION TIPTOP GP
# MENU

CASE
WHEN INFIELD(azb01) CALL cl_fldhlp('azb01')

348

END CASE

350

ON IDLE g_idle_seconds

351

CALL cl_on_idle()

352

CONTINUE INPUT

354

# IDLE
INPUT

END INPUT

TIPTOP GP 4-21

TIPTOP GP

Insert Example
218 FUNCTION i010_a()
219

MESSAGE ""

220

CLEAR FORM

221

INITIALIZE g_azb.* LIKE azb_file.*

222

LET g_azb01_t = NULL

223

LET g_wc = NULL

224

CALL cl_opmsg('a')

225

WHILE TRUE

_a()

226

LET g_azb.azbuser = g_user

227

LET g_azb.azbgrup = g_grup

228

LET g_azb.azbdate = g_today

229

LET g_azb.azbacti = 'Y'

230

CALL i010_i("a")

231

IF INT_FLAG THEN

#(DEL)

232

INITIALIZE g_azb.* TO NULL

233

LET INT_FLAG = 0

234

CALL cl_err('',9001,0)

235

CLEAR FORM

236

EXIT WHILE

237

END IF

238

IF g_azb.azb01 IS NULL THEN

239

#KEY

CONTINUE WHILE

240

END IF

241

INSERT INTO azb_file VALUES(g_azb.*)

242

IF SQLCA.sqlcode THEN

#DISK WRITE

243

CALL cl_err(g_azb.azb01,SQLCA.sqlcode,0)

244

CONTINUE WHILE

245

ELSE

246

SELECT ROWID INTO g_azb_rowid FROM azb_file

247

WHERE azb01 = g_azb.azb01

248

END IF

249

EXIT WHILE

250

END WHILE

251 END FUNCTION

TIPTOP GP 4-22

Rowid
row id

DataSystem

TIPTOP GP
Input Example
253 FUNCTION i010_i(p_cmd)
254

p_cmd

CHAR(1),

255

l_gen02

LIKE gen_file.gen02,

256

l_gen03

LIKE gen_file.gen03,

257

l_gen04

LIKE gen_file.gen04,

258

l_gem02

LIKE gem_file.gem02,

259

l_input

CHAR(1),

260

l_n

SMALLINT

262

DEFINE

DISPLAY BY NAME

263

g_azb.azb01,g_azb.azb02,g_azb.azb06,

264

g_azb.azbuser,g_azb.azbgrup,g_azb.azbmodu,

265

g_azb.azbdate,g_azb.azbacti

A B
NEXT FIELD B
TIPTOP GP
z
z

cl_set_comp_entryEnable Disable NOENTRY


cl_set_comp_requiredEnable Disable REQUIRED

z BEFORE INPUT
z AFTER FIELD A A

z BEFORE INPUT
z BEFORE FIELD A
A BEFORE FIELD AFTER
FIELD
BEFORE FIELD AFTER FIELD
TIPTOP 6.5

TIPTOP GP 4-23

TIPTOP GP

g_sma.sma12
BEFORE INPUT

TIPTOP GP

z
z

_set_no_entry()Noentry
_set_entry()Entry

aimi110 SD

------------g_sma.sma12

-----------------------imz36,imz27,imz28,imz71,
imz25,imz17,imz19,imz21,
imz106,imz903

NOENTRY
------------------------------------g_sma.sma12 MATCHES '[nN]'

imz37

imz38,imz99

g_imz.imz37 != '0'

_set_no_entry()_set_entry()

z
z

BEFORE FIELD_set_entry()
Entry
AFTER FIELD_set_no_entry()
Noentry

INFIELD

BEFORE INPUT
g_before_input_done
BEFORE INPUT

TIPTOP GP 4-24

DataSystem

TIPTOP GP

------------- -----------------------p_cmd,g_chkey
aza01

NOENTRY
------------------------------------p_cmd = 'u' AND g_chkey = 'N'

z
z
z

_set_no_entry() aza01
Noentry
_set_entry() aza01 Entry
BEFORE INPUT
2

267

INPUT BY NAME

268

g_azb.azb01,g_azb.azb02,g_azb.azb06,

269

g_azb.azbuser,g_azb.azbgrup,g_azb.azbmodu,

270

g_azb.azbdate,g_azb.azbacti

271

WITHOUT DEFAULTS

TIPTOP GP INPUT BY NAME


PER

TIPTOP GP WITHOUT DEFAULTS


PER
273

BEFORE INPUT

274

LET l_input='N'

275

LET g_before_input_done = FALSE

276

CALL i010_set_entry(p_cmd)

277

CALL i010_set_no_entry(p_cmd)

278

LET g_before_input_done = TRUE

g_before_input_done

TIPTOP GP 4-25


280
282

TIPTOP GP

AFTER FIELD azb01


IF g_azb.azb01 IS NOT NULL THEN

TIPTOP GP

IF NOT cl_null() THEN


cl_null() NULL

283

IF p_cmd = "a" OR

# KEY

284

(p_cmd = "u" AND g_azb.azb01 != g_azb01_t) THEN

285

SELECT count(*) INTO l_n FROM azb_file WHERE azb01 = g_azb.azb01

286

IF l_n > 0 THEN

# Duplicated

287

CALL cl_err(g_azb.azb01,-239,1)

288

LET g_azb.azb01 = g_azb01_t

289

DISPLAY BY NAME g_azb.azb01

290

NEXT FIELD azb01

291

END IF

292

CALL i010_azb01('a')

_azb01()
293

IF NOT cl_null(g_errno) THEN

294

CALL cl_err('azb01:',g_errno,1)

295

LET g_azb.azb01 = g_azb01_t

296

DISPLAY BY NAME g_azb.azb01

297

NEXT FIELD azb01

298
299

END IF
END IF

300

END IF

302

AFTER INPUT

303

IF INT_FLAG THEN

304

EXIT INPUT

305

END IF

AFTER INPUT

TIPTOP GP 4-26

DataSystem

TIPTOP GP
306

IF g_azb.azb01 IS NULL THEN

307

DISPLAY BY NAME g_azb.azb01

308

LET l_input='Y'

309

END IF

310

IF l_input='Y' THEN

311

NEXT FIELD azb01

312

END IF

314

ON ACTION CONTROLO

315

IF INFIELD(azb01) THEN

316

LET g_azb.* = g_azb_t.*

317

CALL i010_show()

318

NEXT FIELD azb01

319

321
322
323

TIPTOP GP controlo

END IF

ON ACTION controlp

TIPTOP GP controlp

CASE
WHEN INFIELD(azb01)

324

CALL cl_init_qry_var()

325

LET g_qryparam.form = "q_gen"

326

LET g_qryparam.default1 = g_azb.azb01

327

CALL cl_create_qry() RETURNING g_azb.azb01

328

CALL FGL_DIALOG_SETBUFFER( g_azb.azb01 )

#UNBUFFER

329

DISPLAY BY NAME g_azb.azb01

330

NEXT FIELD azb01

332
333

OTHERWISE
EXIT CASE

334

END CASE

336

ON ACTION CONTROLZ

337

CALL cl_show_req_fields()

# g_qryparam

CONSTRUCT
status input
CONSTRUCT
g_qryparam.multiret
TIPTOP #
GP controlz REQUIRED

TOOLBAR
cl_show_req_fields()
REQUIRED

TIPTOP GP 4-27


339

TIPTOP GP

ON ACTION CONTROLG

340

CALL cl_cmdask()

# MENU

TIPTOP GP controlg cl_cmdrun()


cl_cmdask()
cl_cmdrun()
cl_cmdrun_wait()

342

ON ACTION CONTROLF

343

CASE

344

WHEN INFIELD(azb01) CALL cl_fldhlp('azb01')

345

WHEN INFIELD(azb02) CALL cl_fldhlp('azb02')

346

WHEN INFIELD(azb06) CALL cl_fldhlp('azb06')

347

OTHERWISE

348

CALL cl_fldhlp('

')

END CASE

TIPTOP GP controlf

350

ON IDLE g_idle_seconds

351

CALL cl_on_idle()

352

CONTINUE INPUT

# IDLE

USER
354

END INPUT

355 END FUNCTION

MEMO

TIPTOP GP 4-28

DataSystem

TIPTOP GP
Entry Example
825 FUNCTION i010_set_entry(p_cmd)
826

DEFINE

828

p_cmd

CHAR(1)

IF p_cmd = 'a' AND (NOT g_before_input_done) THEN

829

CALL cl_set_comp_entry("azb01",TRUE)

830

END IF

_set_entry()
Entry

832 END FUNCTION

cl_set_comp_entry()
cl_set_comp_required() REQUIRED

NoEntry Example
834 FUNCTION i010_set_no_entry(p_cmd)
835

DEFINE

837
838
839

p_cmd

CHAR(1)

IF p_cmd = 'u' AND g_chkey = 'N' THEN


CALL cl_set_comp_entry("azb01",FALSE)
END IF

841 END FUNCTION

_no_set_entry()
Noentry

MEMO

TIPTOP GP 4-29

TIPTOP GP

4.4.5.
Modify Example
478 FUNCTION i010_u()
479

IF g_azb.azb01 IS NULL THEN

480

CALL cl_err('',-400,0)

481

RETURN

482

END IF

483

SELECT * INTO g_azb.* FROM azb_file WHERE azb01=g_azb.azb01

484

IF g_azb.azbacti = 'N' THEN

485

CALL cl_err('',9027,0)

486

RETURN

487

END IF

488

MESSAGE ""

489

CALL cl_opmsg('u')

490

LET g_azb01_t = g_azb.azb01

491

BEGIN WORK

493

OPEN i010_cl USING g_azb_rowid

494

IF STATUS THEN

acti

495

CALL cl_err("OPEN i010_cl:", STATUS, 1)

496

CLOSE i010_cl

497

ROLLBACK WORK

498

RETURN

499

END IF

500

FETCH i010_cl INTO g_azb.*

501

IF SQLCA.sqlcode THEN

OPEN FETCH

# DB

502

CALL cl_err(g_azb.azb01,SQLCA.sqlcode,1)

503

RETURN

504

END IF

505

LET g_azb.azbmodu=g_user

506

LET g_azb.azbdate = g_today

507

CALL i010_show()

TIPTOP GP 4-30

table modu
date

DataSystem

TIPTOP GP
508

WHILE TRUE

509

CALL i010_i("u")

510

IF INT_FLAG THEN

511

LET INT_FLAG = 0

512

LET g_azb.*=g_azb_t.*

513

CALL i010_show()

514

CALL cl_err('',9001,0)

515

EXIT WHILE

_i()

516

END IF

517

UPDATE azb_file SET azb_file.* = g_azb.*

518
519

# DB

WHERE ROWID = g_azb_rowid


IF SQLCA.sqlcode THEN

520

CALL cl_err(g_azb.azb01,SQLCA.sqlcode,0)

521

CONTINUE WHILE

522

END IF

523

EXIT WHILE

524

END WHILE

525

CLOSE i010_cl

526

COMMIT WORK

527 END FUNCTION

MEMO

TIPTOP GP

TIPTOP GP 4-31

TIPTOP GP

4.4.6.
Delete Example

569 FUNCTION i010_r()


570

IF g_azb.azb01 IS NULL THEN

571

CALL cl_err('',-400,0)

572

RETURN

573

END IF

574

BEGIN WORK

576

OPEN i010_cl USING g_azb_rowid

577

IF STATUS THEN

578

CALL cl_err("OPEN i010_cl:", STATUS, 0)

579

CLOSE i010_cl

580

ROLLBACK WORK

581

RETURN

582

END IF

583

FETCH i010_cl INTO g_azb.*

584

IF SQLCA.sqlcode THEN

585

CALL cl_err(g_azb.azb01,SQLCA.sqlcode,0)

586

RETURN

587

END IF

588

CALL i010_show()

589

IF cl_delete() THEN

cl_delete()
590

DELETE FROM azb_file WHERE azb01 = g_azb.azb01

591

CLEAR FORM

592

OPEN i010_count

593

FETCH i010_count INTO g_row_count

594

DISPLAY g_row_count TO FORMONLY.cnt

TIPTOP GP 4-32

DataSystem

TIPTOP GP
595

OPEN i010_cs

596

IF g_curs_index = g_row_count + 1 THEN

597

LET g_jump = g_row_count

598

CALL i010_fetch('L')

599

ELSE

600

LET g_jump = g_curs_index

601

LET g_no_ask = TRUE

602

CALL i010_fetch('/')

603

END IF

604

END IF

605

CLOSE i010_cl

606

COMMIT WORK

g_row_count
g_curs_index

_fetch(L)
g_jump
g_no_ask=TRUE

607 END FUNCTION

TIPTOP GP 4-33

TIPTOP GP

4.4.7.
Invalid Example
529 FUNCTION i010_x()
530

IF g_azb.azb01 IS NULL THEN

531

CALL cl_err('',-400,0)

532

RETURN

533

END IF

534

BEGIN WORK

536

OPEN i010_cl USING g_azb_rowid

537

IF STATUS THEN

538

CALL cl_err("OPEN i010_cl:", STATUS, 1)

539

CLOSE i010_cl

540

ROLLBACK WORK

541

RETURN

542

END IF

543

FETCH i010_cl INTO g_azb.*

544

IF SQLCA.sqlcode THEN

545

CALL cl_err(g_azb.azb01,SQLCA.sqlcode,1)

546

RETURN

547

END IF

548

CALL i010_show()

549

IF cl_exp(0,0,g_azb.azbacti) THEN

550

LET g_chr=g_azb.azbacti

551

IF g_azb.azbacti='Y' THEN

552

LET g_azb.azbacti='N'

553
554

ELSE
LET g_azb.azbacti='Y'

555

END IF

556

UPDATE azb_file

557

SET azbacti=g_azb.azbacti

558

WHERE ROWID=g_azb_rowid

TIPTOP GP 4-34

DataSystem

TIPTOP GP
559

IF SQLCA.SQLERRD[3]=0 THEN

560

CALL cl_err(g_azb.azb01,SQLCA.sqlcode,0)

561

LET g_azb.azbacti=g_chr

562

END IF

563

DISPLAY BY NAME g_azb.azbacti

564

END IF

565

CLOSE i010_cl

566

COMMIT WORK

567 END FUNCTION

TIPTOP GP 4-35

TIPTOP GP

4.4.8.
Reproduce Example
609 FUNCTION i010_copy()
610

DEFINE

611

l_newno

LIKE azb_file.azb01,

612

l_oldno

LIKE azb_file.azb01,

613

p_cmd

CHAR(1),

614

l_input

CHAR(1)

616

IF g_azb.azb01 IS NULL THEN

617

CALL cl_err('',-400,0)

618

RETURN

619

END IF

621

LET l_input='N'

622

LET g_before_input_done = FALSE

623

CALL i010_set_entry('a')

624

LET g_before_input_done = TRUE

Entry

Key

BEFORE INPUT g_before_input_done


_set_entry()
_set_no_entry()

625

INPUT l_newno FROM azb01

627

AFTER FIELD azb01

628
629
630

IF l_newno IS NOT NULL THEN


SELECT count(*) INTO g_cnt FROM azb_file
WHERE azb01 = l_newno

TIPTOP GP 4-36

DataSystem

TIPTOP GP
631

IF g_cnt > 0 THEN

632

CALL cl_err(l_newno,-239,0)

633

NEXT FIELD azb01

634

END IF

KEY
635
636

SELECT gen01
FROM gen_file

637

WHERE gen01= l_newno

638

IF SQLCA.sqlcode THEN

639

DISPLAY BY NAME g_azb.azb01

640

LET l_newno = NULL

641

NEXT FIELD azb01

642
643

645
646

END IF
END IF

ON ACTION controlp

_i() controlp
#

IF INFIELD(azb01) THEN

647

CALL cl_init_qry_var()

648

LET g_qryparam.form = "q_gen"

649

LET g_qryparam.default1 = g_azb.azb01

650

CALL cl_create_qry() RETURNING l_newno

651

CALL FGL_DIALOG_SETBUFFER( l_newno )

652

DISPLAY BY NAME l_newno

653

SELECT gen01

654

FROM gen_file

655

WHERE gen01= l_newno

656

IF SQLCA.sqlcode THEN

657

DISPLAY BY NAME g_azb.azb01

658

LET l_newno = NULL

659

NEXT FIELD azb01

660

END IF

661

NEXT FIELD azb01

662

END IF

TIPTOP GP 4-37

TIPTOP GP

663

ON IDLE g_idle_seconds

664

CALL cl_on_idle()

665

CONTINUE INPUT

667

END INPUT

668

IF INT_FLAG THEN

INPUT

669

LET INT_FLAG = 0

670

DISPLAY BY NAME g_azb.azb01

671

RETURN

672

END IF

673

DROP TABLE x

674

SELECT * FROM azb_file

675

WHERE ROWID=g_azb_rowid

676

INTO TEMP x

677
678

temp table

KEY

UPDATE x
SET azb01=l_newno,

679

azbacti='Y',

680

azbuser=g_user,

681

azbgrup=g_grup,

682

azbmodu=NULL,

683

azbdate=g_today

684
685
686
687
688

INSERT INTO azb_file


SELECT * FROM x
IF SQLCA.sqlcode THEN
CALL cl_err(g_azb.azb01,SQLCA.sqlcode,0)
ELSE

689

MESSAGE 'ROW(',l_newno,') O.K'

690

LET l_oldno = g_azb.azb01

691

LET g_azb.azb01 = l_newno

692

SELECT ROWID,azb_file.* INTO g_azb_rowid,g_azb.* FROM azb_file

693
694

WHERE azb01 = l_newno


CALL i010_u()

_u()

TIPTOP GP 4-38

DataSystem

TIPTOP GP

695

SELECT ROWID,azb_file.* INTO g_azb_rowid,g_azb.* FROM azb_file

696

WHERE azb01 = l_oldno

697

END IF

698

LET g_azb.azb01 = l_oldno

699

CALL i010_show()

700 END FUNCTION

TIPTOP GP 4-39

TIPTOP GP

4.4.9.
TIPTOP GP

Report Example
702 FUNCTION i010_out()
703

DEFINE

704

l_i

SMALLINT,

705

l_azb

RECORD LIKE azb_file.*,

706

l_gen

RECORD LIKE gen_file.*,

707

l_name

CHAR(20),

708

sr RECORD

709

azb01 LIKE azb_file.azb01,

710

azb02 LIKE azb_file.azb02,

711

azb06 LIKE azb_file.azb06,

712

gen02 LIKE gen_file.gen02,

713

gen03 LIKE gen_file.gen03,

714

gen04 LIKE gen_file.gen04,

715

gem02 LIKE gem_file.gem02

716

END RECORD,

717

l_za05

# External(Disk) file name

CHAR(40)

720

IF g_wc IS NULL THEN LET g_wc=" azb01='",g_azb.azb01,"'" END IF

723

CALL cl_wait()

724

SELECT zo02 INTO g_company FROM zo_file WHERE zo01 = g_lang

725

DECLARE i010_za_cur CURSOR FOR

726
727
728
729
730

SELECT za02,za05 FROM za_file


WHERE za01 = "aooi010" AND za03 = g_lang
FOREACH i010_za_cur INTO g_i,l_za05
LET g_x[g_i] = l_za05
END FOREACH

TIPTOP GP 4-40

za_file g_x[i]

DataSystem

TIPTOP GP
731

SELECT zz17 INTO g_len FROM zz_file WHERE zz01 = 'aooi010'

732

IF g_len = 0 OR g_len IS NULL THEN LET g_len = 80 END IF

zz_file.zz17

733

FOR g_i = 1 TO g_len LET g_dash[g_i,g_i] = '=' END FOR

734

LET g_sql="SELECT azb01,azb02,azb06,gen02,gen03,gen04,gem02 ",

735

" FROM azb_file, OUTER(gen_file, OUTER(gem_file)) ",

736

" WHERE gen01= azb01 AND gem01 = gen03 ",

737

"

AND ",g_wc CLIPPED

746

PREPARE i010_p1 FROM g_sql

# RUNTIME

747

DECLARE i010_curo

# SCROLL CURSOR

748

CURSOR FOR i010_p1

750

CALL cl_outnam('aooi010') RETURNING l_name

751

START REPORT i010_rep TO l_name

753
754

FOREACH i010_curo INTO sr.*


IF SQLCA.sqlcode THEN

755

CALL cl_err('foreach:',SQLCA.sqlcode,1)

756

EXIT FOREACH

757

END IF

758

OUTPUT TO REPORT i010_rep(sr.*)

759

END FOREACH

761

FINISH REPORT i010_rep

FOREACH
FETCH
OUTPUT TO REPORT report_name

763

CLOSE i010_curo

764

ERROR ""

765

CALL cl_prt(l_name,' ','1',g_len)

766 END FUNCTION

cl_prt()
cl_prt()

TIPTOP GP 4-41

TIPTOP GP

Format Example
REPORT report_name()

768 REPORT i010_rep(sr)


769

DEFINE

770

l_trailer_sw

771

sr RECORD

CHAR(1),

772

azb01 LIKE azb_file.azb01,

773

azb02 LIKE azb_file.azb02,

774

azb06 LIKE azb_file.azb06,

775

gen02 LIKE gen_file.gen02,

776

gen03 LIKE gen_file.gen03,

777

gen04 LIKE gen_file.gen04,

778

gem02 LIKE gem_file.gem02

779

END RECORD

780

OUTPUT

781

TOP MARGIN 0

782

LEFT MARGIN 0

783

BOTTOM MARGIN 6

784

PAGE LENGTH 66

786

ORDER BY sr.azb01

788

FORMAT

789

PAGE HEADER

790

PRINT (g_len-length(g_company))/2 SPACES,g_company

791

PRINT ' '

792

PRINT (g_len-length(g_x[1]))/2 SPACES,g_x[1]

793

PRINT ' '

794

PRINT g_x[2] CLIPPED,g_today,' ',TIME,

795

COLUMN g_len-7,g_x[3] CLIPPED,PAGENO USING '<<<'

796

PRINT g_dash[1,g_len]

797

PRINT g_x[11] CLIPPED ,COLUMN 18,g_x[12]

798

PRINT g_x[13] CLIPPED ,COLUMN 18,g_x[14]

799

PRINT ' '

800

LET l_trailer_sw = 'y'

TIPTOP GP 4-42

DataSystem

TIPTOP GP
802

ON EVERY ROW

803

PRINT COLUMN 1,sr.azb01,

804

COLUMN 10,sr.gen02,

805

COLUMN 19,sr.gen03,

806

COLUMN 25,sr.gen04,

807

COLUMN 46,sr.azb06 USING '########&.&&'

809

ON LAST ROW

810

PRINT g_dash[1,g_len]

811

PRINT g_x[4],g_x[5] CLIPPED, COLUMN (g_len-9),

812

g_x[7] CLIPPED

813

815

LET l_trailer_sw = 'n'

PAGE TRAILER

816

IF l_trailer_sw = 'y' THEN

817

PRINT g_dash[1,g_len]

818

PRINT g_x[4],g_x[5] CLIPPED, COLUMN (g_len-9),

819
820
821
822

g_x[6] CLIPPED
ELSE
SKIP 2 LINE
END IF

823 END REPORT

TIPTOP GP 4-43

TIPTOP GP

4.4.10.
Other Example

357 FUNCTION i010_azb01(p_cmd)


359 DEFINE p_cmd

CHAR(01),

360

l_gen02

LIKE gen_file.gen02,

361

l_gen03

LIKE gen_file.gen03,

362

l_gen04

LIKE gen_file.gen04,

363

l_genacti LIKE gen_file.genacti,

364

l_gem02

366

LET g_errno=''

368

SELECT gen02,gen03,gen04,genacti

LIKE gem_file.gem02

369

INTO l_gen02,l_gen03,l_gen04,l_genacti

370

FROM gen_file

371
373
374

WHERE gen01=g_azb.azb01
CASE
WHEN SQLCA.sqlcode=100

LET g_errno='aoo-070'

375

LET l_gen02=NULL

376

LET l_gen03=NULL

377

LET l_gen04=NULL

378

WHEN l_genacti='N'

379

OTHERWISE

380

LET g_errno='9028'

LET g_errno=SQLCA.sqlcode USING '------'

381

END CASE

383

IF p_cmd='d' OR cl_null(g_errno)THEN

384

DISPLAY l_gen02 TO FORMONLY.gen02

385

DISPLAY l_gen03 TO FORMONLY.gen03

386

DISPLAY l_gen04 TO FORMONLY.gen04

387

SELECT gem02 INTO l_gem02 FROM gem_file

388

WHERE gem01=l_gen03

389

IF SQLCA.sqlcode THEN LET l_gem02=' ' END IF

390

DISPLAY l_gem02 TO gem02

391

END IF

392 END FUNCTION

TIPTOP GP 4-44

Chapter 5

DataSystem
5.1
MAIN
menu()
bp()

a()

u()

q()

i()

show()

cs()

b()

i()

b()

N/P

copy()

r()

x()

fetch()

u()

show() show()

fetch()

b()

delh()

show()

show()

out()
rep()

b_fill()

TIPTOP GP 5-1

TIPTOP GP

5.2
SCHEMA ds
LAYOUT
VBOX
FOLDER
PAGE page01(TEXT="Main")
GRID
{
Inquiry List#
[pmw01
] [smydesc
Inquiry Date
[pmw06
]
Vender No.
[pmw03
] [pmc03
Trans.Currency
[mw04
]
[azi02
}
END --GRID
END --PAGE
PAGE info (TEXT="Info")
GRID
{
Record Owner [pmwuser
] Last Modified by
Department [grup
] Create/Modify Date
}
END --GRID
END --PAGE
END FOLDER

TIPTOP GP 5-2

]
]
]

[pmwmodu
[pmwdat

] Data Valid Code [z


]

DataSystem

TIPTOP GP
TABLE
{
Line# Item No. Part Name Specification Inquiry Unit Effective Date Expiry Date Min.Qty
[pmx2 |pmx08
|pmx081
|pmx082
|pmx9
|pmx04
|pmx05
|pmx03
[pmx2 |pmx08
|pmx081
|pmx082
|pmx9
|pmx04
|pmx05
|pmx03
[pmx2 |pmx08
|pmx081
|pmx082
|pmx9
|pmx04
|pmx05
|pmx03
[pmx2 |pmx08
|pmx081
|pmx082
|pmx9
|pmx04
|pmx05
|pmx03
[pmx2 |pmx08
|pmx081
|pmx082
|pmx9
|pmx04
|pmx05
|pmx03
[pmx2 |pmx08
|pmx081
|pmx082
|pmx9
|pmx04
|pmx05
|pmx03
[pmx2 |pmx08
|pmx081
|pmx082
|pmx9
|pmx04
|pmx05
|pmx03
[pmx2 |pmx08
|pmx081
|pmx082
|pmx9
|pmx04
|pmx05
|pmx03
[pmx2 |pmx08
|pmx081
|pmx082
|pmx9
|pmx04
|pmx05
|pmx03
[pmx2 |pmx08
|pmx081
|pmx082
|pmx9
|pmx04
|pmx05
|pmx03
}
END --TABLE
GRID
{
---------- Rows [cnt
] / [cn2
] ---------}
END --GRID
END --VBOX
END --LAYOUT

Unit Price
|pmx06
|pmx06
|pmx06
|pmx06
|pmx06
|pmx06
|pmx06
|pmx06
|pmx06
|pmx06

Discount Rate%
|pmx7
]
|pmx7
]
|pmx7
]
|pmx7
]
|pmx7
]
|pmx7
]
|pmx7
]
|pmx7
]
|pmx7
]
|pmx7
]

TABLES pmw_file,pmx_file
ATTRIBUTES
BUTTONEDIT pmw01

= pmw01,NOT NULL, REQUIRED, ACTION=CONTROLP, IMAGE="zoom",


COMMENTS = 'Key Field, No Blank/Repeated! , <^P>Qry Document Property';
smydesc = FORMONLY.smydesc ,NOENTRY;
BUTTONEDIT pmw03 = pmw03, NOT NULL, REQUIRED, ACTION=CONTROLP, IMAGE="zoom", COMMENTS='<^P>Qry Vender
';
TIPTOP GP 5-3


pmc03
BUTTONEDIT mw04
azi02
DATEEDIT
pmw06
pmx2
BUTTONEDIT pmx08
pmx081
pmx082
BUTTONEDIT pmx9
DATEEDIT
pmx04
DATEEDIT
pmx05
pmx03
pmx06
pmx7
pmwuser
grup
pmwmodu
DATEEDIT
pmwdat
z
cnt
cn2
END

TIPTOP GP
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=

FORMONLY.pmc03 ,NOENTRY;
pmw04, NOT NULL, REQUIRED, ACTION=CONTROLP, IMAGE="zoom", COMMENTS='<^P>Qry Currency';
FORMONLY.azi02 ,NOENTRY;
pmw06;
pmx02,NOT NULL,REQUIRED;
pmx08, ACTION=CONTROLP, IMAGE="zoom", COMMENTS='<^P>Qry Item Master <^Y>Create Item ';
pmx081,NOENTRY;
pmx082,NOENTRY;
pmx09, ACTION=CONTROLP, IMAGE="zoom",COMMENTS='<^P>Qry Unit
';
pmx04;
pmx05;
pmx03;
pmx06,NOT NULL,REQUIRED;
pmx07;
pmwuser, NOENTRY;
pmwgrup, NOENTRY;
pmwmodu, NOENTRY;
pmwdate, NOENTRY;
pmwacti, NOENTRY, UPSHIFT;
FORMONLY.cnt TYPE SMALLINT, NOENTRY ;
FORMONLY.cn2 TYPE SMALLINT, NOENTRY ;

INSTRUCTIONS
SCREEN RECORD
s_pmx[10](pmx02,pmx08,pmx081,pmx082,pmx09,pmx04,pmx05,pmx03,pmx06,pmx07)
END

TIPTOP GP 5-4

DataSystem
5.3
pmw_file
:

pmw_01

unique

(pmw01)

pmw01

CHAR(10)

pmw03

CHAR(10)

pmw04

CHAR(4)

pmw06

DATE

pmwacti

CHAR(1)

pmwdate

DATE

pmwgrup

CHAR(6)

pmwmodu

CHAR(10)

pmwuser

CHAR(10)

TIPTOP GP 5-5

TIPTOP GP

pmx_file
:

pmx_01

unique

(pmx01,pmx02)

pmx01

CHAR(10)

pmx02

SINT

pmx03

DEC(15,3)

pmx04

DATE

pmx05

DATE

pmx06

DEC(15,6)

pmx07

DEC(7,3)

pmx08

CHAR(20)

pmx081

CHAR(30)

pmx082

CHAR(30)

pmx09

CHAR(4)

TIPTOP GP 5-6

DataSystem
5.4
5.4.1
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

DATABASE ds
GLOBALS "../../config/top.global"
#(Module Variables)
DEFINE
g_pmw
RECORD LIKE pmw_file.*,
g_pmw_t
RECORD LIKE pmw_file.*,
g_pmw_o
RECORD LIKE pmw_file.*,
g_pmw01_t
LIKE pmw_file.pmw01,
g_pmw_rowid
CHAR(18),
g_t1
VARCHAR(03),
g_sheet
VARCHAR(3),
g_ydate
DATE,
g_pmx
DYNAMIC ARRAY OF RECORD
pmx02
LIKE pmx_file.pmx02,
pmx08
LIKE pmx_file.pmx08,
pmx081
LIKE pmx_file.pmx081,
pmx082
LIKE pmx_file.pmx082,
pmx09
LIKE pmx_file.pmx09,
pmx04
LIKE pmx_file.pmx04,
pmx05
LIKE pmx_file.pmx05,
pmx03
LIKE pmx_file.pmx03,
pmx06
LIKE pmx_file.pmx06,
pmx07
LIKE pmx_file.pmx07
END RECORD,
g_pmx_t
RECORD
pmx02
LIKE pmx_file.pmx02,
pmx08
LIKE pmx_file.pmx08,
pmx081
LIKE pmx_file.pmx081,
pmx082
LIKE pmx_file.pmx082,
pmx09
LIKE pmx_file.pmx09,
pmx04
LIKE pmx_file.pmx04,
pmx05
LIKE pmx_file.pmx05,
pmx03
LIKE pmx_file.pmx03,
pmx06
LIKE pmx_file.pmx06,
pmx07
LIKE pmx_file.pmx07
END RECORD,

#
#
#
#
#ROWID

()
()
()
()

#
()
#()
#(Program Variables)
#
#
#
#
#
#
#
#
#
#
# ()
#
#
#
#
#
#
#
#
#
#

TIPTOP GP 5-7


49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80

TIPTOP GP

g_pmx_o
pmx02
pmx08
pmx081
pmx082
pmx09
pmx04
pmx05
pmx03
pmx06
pmx07

RECORD
LIKE pmx_file.pmx02,
LIKE pmx_file.pmx08,
LIKE pmx_file.pmx081,
LIKE pmx_file.pmx082,
LIKE pmx_file.pmx09,
LIKE pmx_file.pmx04,
LIKE pmx_file.pmx05,
LIKE pmx_file.pmx03,
LIKE pmx_file.pmx06,
LIKE pmx_file.pmx07
END RECORD,
g_x ARRAY[20] OF
VARCHAR(40),
g_wc,g_wc2,g_sql
VARCHAR(300),
g_rec_b
SMALLINT,
l_ac
SMALLINT
DEFINE p_row,p_col SMALLINT
DEFINE g_azi03
SMALLINT

# ()
#
#
#
#
#
#
#
#
#
#

DEFINE
DEFINE
DEFINE
DEFINE
DEFINE
DEFINE
DEFINE
DEFINE
DEFINE
DEFINE
DEFINE
DEFINE
DEFINE

#SELECT ... FOR UPDATE SQL

g_forupd_sql STRING
g_before_input_done SMALLINT
g_chr
VARCHAR(1)
g_cnt
INTEGER
g_dash
VARCHAR(400)
g_i
SMALLINT
g_len
SMALLINT
g_msg
VARCHAR(72)
g_zz05
VARCHAR(1)
g_curs_index
INTEGER
g_row_count
INTEGER
g_jump
INTEGER
g_no_ask
SMALLINT

TIPTOP GP 5-8

#
# ARRAY CNT

#Dash line
#count/index for any purpose
#Report width(79/132/136)
#Print tm.wc ?(Y/N)
#
#
#

DataSystem
5.4.2
Open Window
111
112
113
114

OPEN WINDOW i252_w AT p_row,p_col


WITH FORM "apm/42f/apmi252" ATTRIBUTE (STYLE = g_win_style)

CALL cl_ui_init()

117
CALL i252_menu()

call cl_ui_init()
toolbaraction

Display Array
1490 FUNCTION i252_bp(p_ud)
1501
DISPLAY ARRAY g_pmx TO s_pmx.* ATTRIBUTE(COUNT=g_rec_b,UNBUFFERED)

1512
ON ACTION insert
Display array
1513
LET g_action_choice="insert"
function menu
1514
EXIT DISPLAY
Display array

1578
END DISPLAY

Menu
212
213
214
215
216
217
218

WHILE TRUE
menu action
CALL i252_bp("G")
function
CASE g_action_choice
WHEN "insert"
IF cl_chk_act_auth() THEN
CALL i252_a()
END IF

TIPTOP GP 5-9

TIPTOP GP

5.4.2.1 Open Window MAIN function


82 #
83 MAIN
84 DEFINE
l_time
VARCHAR(8)
#
85
86
OPTIONS
#
87
FORM LINE
FIRST + 2,
#
88
MESSAGE LINE
LAST,
#
89
PROMPT LINE
LAST,
#
90
INPUT NO WRAP
# :
91
DEFER INTERRUPT
# ,
92
93
IF (NOT cl_user()) THEN
# idle
94
EXIT PROGRAM
95
END IF
96
97
WHENEVER ERROR CALL cl_err_msg_log
# run
98
99
IF (NOT cl_setup("APM")) THEN
#
100
EXIT PROGRAM
101
END IF
102
103
CALL cl_used('apmi252',l_time,1)
# ()
104
RETURNING l_time
105
106
LET g_forupd_sql = "SELECT * FROM pmw_file WHERE ROWID = ? FOR UPDATE NOWAIT"
107
DECLARE i252_cl CURSOR FROM g_forupd_sql
# Lock cursor
108
109
LET p_row = 2 LET p_col = 9
110
111
OPEN WINDOW i252_w AT p_row,p_col
#
112
WITH FORM "apm/42f/apmi252" ATTRIBUTE (STYLE = g_win_style)
113
114
CALL cl_ui_init()
# toolbartopmenu
115
# p_perlang per
116
LET g_ydate = NULL
117
CALL i252_menu()
# action function
118
CLOSE WINDOW i252_w
#
119
CALL cl_used('apmi252',l_time,2)
# ()
120
RETURNING l_time
END MAIN

TIPTOP GP 5-10

DataSystem
5.4.2.2 Display Array xxxx_bp() function
1490 FUNCTION i252_bp(p_ud)
1491
DEFINE p_ud
VARCHAR(1)
# action function
1492
1493
1494
IF p_ud <> "G" OR g_action_choice = "detail" THEN
1495
RETURN
#
1496
END IF
#
1497
1498
LET g_action_choice = " "
# g_action_choice action
1499
#
1500
CALL cl_set_act_visible("accept,cancel", FALSE)
# action
1501
DISPLAY ARRAY g_pmx TO s_pmx.* ATTRIBUTE(COUNT=g_rec_b,UNBUFFERED)
1502
# unbuffered show
1503
BEFORE DISPLAY
1504
CALL cl_navigator_setting( g_curs_index, g_row_count )
1505
#
1506
BEFORE ROW
1507
LET l_ac = ARR_CURR()
# l_ac
1508
1509
##################################################################
1510
# Standard 4ad ACTION
1511
##################################################################
1512
ON ACTION insert
# action
1513
LET g_action_choice="insert"
# on action g_action_choice
1514
EXIT DISPLAY
# display array menu
1515
ON ACTION query
# g_action_choice function
1516
LET g_action_choice="query"
1517
EXIT DISPLAY
1518
ON ACTION delete
1519
LET g_action_choice="delete"
1520
EXIT DISPLAY
1521
ON ACTION modify
1522
LET g_action_choice="modify"
1523
EXIT DISPLAY
#
1524
ON ACTION first
1525
CALL i252_fetch('F')
#
1526
CALL cl_navigator_setting(g_curs_index, g_row_count)
1527
CALL fgl_set_arr_curr(1)
1528
ON ACTION previous
1529
CALL i252_fetch('P')
1530
CALL cl_navigator_setting(g_curs_index, g_row_count)
1531
CALL fgl_set_arr_curr(1)
TIPTOP GP 5-11


1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574

TIPTOP GP

ON ACTION jump
CALL i252_fetch('/')
CALL cl_navigator_setting(g_curs_index, g_row_count)
CALL fgl_set_arr_curr(1)
ON ACTION next
CALL i252_fetch('N')
CALL cl_navigator_setting(g_curs_index, g_row_count)
CALL fgl_set_arr_curr(1)
ON ACTION last
CALL i252_fetch('L')
CALL cl_navigator_setting(g_curs_index, g_row_count)
CALL fgl_set_arr_curr(1)
ON ACTION invalid
LET g_action_choice="invalid"
EXIT DISPLAY
ON ACTION reproduce
LET g_action_choice="reproduce"
EXIT DISPLAY
ON ACTION detail
#
LET g_action_choice="detail"
LET l_ac = 1
EXIT DISPLAY
ON ACTION output
LET g_action_choice="output"
EXIT DISPLAY
ON ACTION help
LET g_action_choice="help"
EXIT DISPLAY
ON ACTION locale
#
CALL cl_dynamic_locale()
ON ACTION exit
LET g_action_choice="exit"
EXIT DISPLAY
ON ACTION controlg
LET g_action_choice="controlg"
EXIT DISPLAY
ON ACTION accept
# DISPLAY ARRAY accept array
LET g_action_choice="detail"
# g_action_choice detail
LET l_ac = ARR_CURR()
#
EXIT DISPLAY
#
ON ACTION cancel
LET g_action_choice="exit"
EXIT DISPLAY

TIPTOP GP 5-12

DataSystem
1575
ON IDLE g_idle_seconds
# g_idle_seconds idle
1576
CALL cl_on_idle()
1577
CONTINUE DISPLAY
1578
END DISPLAY
1579
CALL cl_set_act_visible("accept,cancel", TRUE) # accept cancel DISPLAY ARRAY
1580 END FUNCTION
#
1581
# display array
# display array

TIPTOP GP 5-13

TIPTOP GP

5.4.2.3 xxxx_menu() function


210 FUNCTION i252_menu()
211
212
WHILE TRUE
# OPEN WINDOW menu function menu
# display array
213
CALL i252_bp("G")
214
CASE g_action_choice
# _bp menu g_action_choice
215
WHEN "insert"
216
IF cl_chk_act_auth() THEN # cl_chk_act_auth() g_action_choice
217
CALL i252_a()
#
218
END IF
219
WHEN "query"
220
IF cl_chk_act_auth() THEN
221
CALL i252_q()
222
END IF
223
WHEN "delete"
224
IF cl_chk_act_auth() THEN
225
CALL i252_r()
226
END IF
227
WHEN "modify"
228
IF cl_chk_act_auth() THEN
229
CALL i252_u()
230
END IF
231
WHEN "invalid"
232
IF cl_chk_act_auth() THEN
233
CALL i252_x()
234
END IF
235
WHEN "reproduce"
236
IF cl_chk_act_auth() THEN
237
CALL i252_copy()
238
END IF
239
WHEN "detail"
# g_action_choice _bp()_b()
240
IF cl_chk_act_auth() THEN #
241
CALL i252_b()
242
ELSE
243
LET g_action_choice = NULL
244
END IF
245
WHEN "output"
246
IF cl_chk_act_auth() THEN
247
CALL i252_out()
248
END IF
249
WHEN "help"
250
CALL SHOWHELP(1)

TIPTOP GP 5-14

DataSystem
251
WHEN "exit"
252
EXIT WHILE
253
WHEN "controlg"
254
CALL cl_cmdask()
255
END CASE
256
END WHILE
257 END FUNCTION

# menu _bp WHILE


#
# WHILE

TIPTOP GP 5-15

TIPTOP GP

5.4.3

684 FUNCTION i252_q()


686
LET g_row_count = 0

695
CALL i252_cs()

712
CALL i252_fetch('F')

124 FUNCTION i252_cs()


128
CONSTRUCT BY NAME g_wc ON pmw01,pmw06,pmw03,pmw04,
129
pmwuser,pmwgrup,pmwmodu,pmwdate,pmwacti

717 FUNCTION i252_fetch(p_flag)


718
DEFINE p_flag CHAR(1)
719
720
CASE p_flag
721
WHEN 'N' FETCH NEXT

763
CALL i252_show()

key key

i252_cs INTO g_pmw_rowid,g_pmw.pmw01

768 FUNCTION i252_show()


771
DISPLAY BY NAME g_pmw.pmw01,g_pmw.pmw03,g_pmw.pmw06,g_pmw.pmw04,

779
CALL i252_b_fill(g_wc2)

1456 FUNCTION i252_b_fill(p_wc2)

1471
FOREACH pmx_cs INTO g_pmx[g_cnt].*

menu display
1501 DISPLAY ARRAY g_pmx TO s_pmx.* ATTRIBUTE(COUNT=g_rec_b,UNBUFFERED)

TIPTOP GP 5-16

DataSystem
5.4.3.1 xxxx_q() function
684 FUNCTION i252_q()
685
686
LET g_row_count = 0
# 0
687
LET g_curs_index = 0
#
688
CALL cl_navigator_setting( g_curs_index, g_row_count )
689
MESSAGE ""
690
CALL cl_opmsg('q')
691
CLEAR FORM
#
692
CALL g_pmx.clear()
# CLEAR FORM.clear()
693
DISPLAY ' ' TO FORMONLY.cnt
694
695
CALL i252_cs()
#
696
697
IF INT_FLAG THEN
698
LET INT_FLAG = 0
699
INITIALIZE g_pmw.* TO NULL
700
RETURN
701
END IF
702
703
OPEN i252_cs
# DB TEMP(0-30 )
704
IF SQLCA.sqlcode THEN
705
CALL cl_err('',SQLCA.sqlcode,0)
706
INITIALIZE g_pmw.* TO NULL
707
ELSE
# cursor g_row_count
708
OPEN i252_count
709
FETCH i252_count INTO g_row_count
710
DISPLAY g_row_count TO FORMONLY.cnt
711
712
CALL i252_fetch('F')
# TEMP
713
END IF
714
715 END FUNCTION

TIPTOP GP 5-17

TIPTOP GP

5.4.3.2 xxxx_cs() function


123 #QBE
124 FUNCTION i252_cs()
125
CLEAR FORM
#
126
CALL g_pmx.clear()
127
128
CONSTRUCT BY NAME g_wc ON pmw01,pmw06,pmw03,pmw04,
#
129
pmwuser,pmwgrup,pmwmodu,pmwdate,pmwacti
130
131
ON ACTION controlp
132
CASE
133
WHEN INFIELD(pmw03)
#
134
CALL cl_init_qry_var()
135
LET g_qryparam.state = 'c'
136
LET g_qryparam.form ="q_pmc1"
137
CALL cl_create_qry() RETURNING g_qryparam.multiret
138
DISPLAY g_qryparam.multiret TO pmw03
139
CALL i252_pmw03('d')
140
NEXT FIELD pmw03
141
WHEN INFIELD(pmw04)
#
142
CALL cl_init_qry_var()
143
LET g_qryparam.state = 'c'
144
LET g_qryparam.form ="q_azi"
145
CALL cl_create_qry() RETURNING g_qryparam.multiret
146
DISPLAY g_qryparam.multiret TO pmw04
147
NEXT FIELD pmw04
148
OTHERWISE EXIT CASE
149
END CASE
150
ON IDLE g_idle_seconds
# constructdisplay arrayinput arraymenuinput
151
CALL cl_on_idle()
# prompt idle
152
CONTINUE CONSTRUCT
153
154
END CONSTRUCT
155
156
IF INT_FLAG THEN
157
RETURN
158
END IF
159
#
160
IF g_priv2='4' THEN
#
161
LET g_wc = g_wc clipped," AND pmwuser = '",g_user,"'"
162
END IF
163

TIPTOP GP 5-18

DataSystem
164
IF g_priv3='4' THEN
#
165
LET g_wc = g_wc clipped," AND pmwgrup MATCHES '",g_grup CLIPPED,"*'"
166
END IF
167
168
CONSTRUCT g_wc2 ON pmx02,pmx08,pmx09,pmx04,
#
169
pmx05,pmx03,pmx06,pmx07,pmx082
170
FROM s_pmx[1].pmx02,s_pmx[1].pmx08,s_pmx[1].pmx09,
171
s_pmx[1].pmx04,s_pmx[1].pmx05,s_pmx[1].pmx03,
172
s_pmx[1].pmx06,s_pmx[1].pmx07,s_pmx[1].pmx082
173
ON IDLE g_idle_seconds
174
CALL cl_on_idle()
175
CONTINUE CONSTRUCT
176
177
END CONSTRUCT
178
179
IF INT_FLAG THEN
180
RETURN
181
END IF
182
183
IF g_wc2 = " 1=1" THEN
#
184
LET g_sql = "SELECT ROWID, pmw01 FROM pmw_file ",
185
" WHERE ", g_wc CLIPPED,
186
" ORDER BY 2"
187
ELSE
#
188
LET g_sql = "SELECT UNIQUE pmw_file.ROWID, pmw01 ",
189
" FROM pmw_file, pmx_file ",
190
" WHERE pmw01 = pmx01",
191
" AND ", g_wc CLIPPED, " AND ",g_wc2 CLIPPED,
192
" ORDER BY 2"
193
END IF
194
195
PREPARE i252_prepare FROM g_sql
196
DECLARE i252_cs
# SCROLL CURSOR
197
SCROLL CURSOR WITH HOLD FOR i252_prepare
198
199
IF g_wc2 = " 1=1" THEN
#
200
LET g_sql="SELECT COUNT(*) FROM pmw_file WHERE ",g_wc CLIPPED
201
ELSE
202
LET g_sql="SELECT COUNT(DISTINCT pmw01) FROM pmw_file,pmx_file WHERE ",
203
"pmx01=pmw01 AND ",g_wc CLIPPED," AND ",g_wc2 CLIPPED
204
END IF
205
PREPARE i252_precount FROM g_sql
206
DECLARE i252_count CURSOR FOR i252_precount
207
208 END FUNCTION
TIPTOP GP 5-19

TIPTOP GP

5.4.3.3 xxxx_fetch() function


717 FUNCTION i252_fetch(p_flag)
718
DEFINE p_flag VARCHAR(1)
#
719
720
CASE p_flag
721
WHEN 'N' FETCH NEXT
i252_cs INTO g_pmw_rowid,g_pmw.pmw01
722
WHEN 'P' FETCH PREVIOUS i252_cs INTO g_pmw_rowid,g_pmw.pmw01
723
WHEN 'F' FETCH FIRST
i252_cs INTO g_pmw_rowid,g_pmw.pmw01
724
WHEN 'L' FETCH LAST
i252_cs INTO g_pmw_rowid,g_pmw.pmw01
725
WHEN '/'
726
IF (NOT g_no_ask) THEN
727
CALL cl_getmsg('fetch',g_lang) RETURNING g_msg
728
LET INT_FLAG = 0
729
PROMPT g_msg CLIPPED,': ' FOR g_jump
730
ON IDLE g_idle_seconds
731
CALL cl_on_idle()
732
END PROMPT
733
IF INT_FLAG THEN
# g_no_ask
734
LET INT_FLAG = 0
#
735
EXIT CASE
736
END IF
737
END IF
738
FETCH ABSOLUTE g_jump i252_cs INTO g_pmw_rowid,g_pmw.pmw01
739
LET g_no_ask = FALSE
# g_no_ask
740
END CASE
741
742
IF SQLCA.sqlcode THEN
743
CALL cl_err(g_pmw.pmw01,SQLCA.sqlcode,0)
744
RETURN
745
ELSE
# FETCH
746
CASE p_flag
# button
747
WHEN 'F' LET g_curs_index = 1
748
WHEN 'P' LET g_curs_index = g_curs_index - 1
749
WHEN 'N' LET g_curs_index = g_curs_index + 1
750
WHEN 'L' LET g_curs_index = g_row_count
751
WHEN '/' LET g_curs_index = g_jump
752
END CASE
753
CALL cl_navigator_setting( g_curs_index, g_row_count )
754
END IF
755
756
SELECT * INTO g_pmw.* FROM pmw_file WHERE ROWID = g_pmw_rowid
757
IF SQLCA.sqlcode THEN
# fetch
758
CALL cl_err(g_pmw.pmw01,SQLCA.sqlcode,0)
TIPTOP GP 5-20

DataSystem
759
INITIALIZE g_pmw.* TO NULL
760
RETURN
761
END IF
762
763
CALL i252_show()
764
765 END FUNCTION

TIPTOP GP 5-21

TIPTOP GP

5.4.3.4 xxxx_show() function


767 #
768 FUNCTION i252_show()
769
LET g_pmw_t.* = g_pmw.*
#
770
LET g_pmw_o.* = g_pmw.*
#
771
DISPLAY BY NAME g_pmw.pmw01,g_pmw.pmw03,g_pmw.pmw06,g_pmw.pmw04,
772
g_pmw.pmwuser,g_pmw.pmwgrup,g_pmw.pmwmodu,
773
g_pmw.pmwdate,g_pmw.pmwacti
774
775
CALL i252_pmw01('d')
776
CALL i252_pmw03('d')
777
CALL i252_pmw04('d')
778
779
CALL i252_b_fill(g_wc2)
#
780
781 END FUNCTION

TIPTOP GP 5-22

DataSystem
5.4.3.5 xxxx_b_fill() function
1456 FUNCTION i252_b_fill(p_wc2)
#
1457
DEFINE p_wc2
VARCHAR(200)
1458
1459
LET g_sql = "SELECT pmx02,pmx08,pmx081,pmx082,pmx09,pmx04,pmx05,pmx03,",
1460
" pmx06,pmx07 FROM pmx_file",
1461
" WHERE pmx01 ='",g_pmw.pmw01,"' ",
#
1462
"
AND ", p_wc2 CLIPPED,
#
1463
" ORDER BY 2,1,7"
1464
PREPARE i252_pb FROM g_sql
1465
DECLARE pmx_cs
# CURSOR
1466
CURSOR FOR i252_pb
1467
1468
CALL g_pmx.clear()
# array
1469
LET g_cnt = 1
# array
1470
1471
FOREACH pmx_cs INTO g_pmx[g_cnt].*
# ARRAY
1472
IF SQLCA.sqlcode THEN
1473
CALL cl_err('foreach:',SQLCA.sqlcode,1)
1474
EXIT FOREACH
1475
END IF
1476
LET g_cnt = g_cnt + 1
1477
IF g_cnt > g_max_rec THEN
#
1478
CALL cl_err( '', 9035, 0 )
1479
EXIT FOREACH
1480
END IF
1481
END FOREACH
# array
1482
CALL g_pmx.deleteElement(g_cnt)
# array
1483
#
1484
LET g_rec_b=g_cnt-1
1485
DISPLAY g_rec_b TO FORMONLY.cn2
1486
LET g_cnt = 0
1487
1488 END FUNCTION

TIPTOP GP 5-23

TIPTOP GP

5.4.4

259 FUNCTION i252_a()

269
INITIALIZE g_pmw.* LIKE pmw_file.*

285
WHILE TRUE
function function
291
CALL i252_i("a")

335
CALL i252_b()
337
END WHILE

424 FUNCTION i252_i(p_cmd)

437
INPUT BY NAME g_pmw.pmw01,g_pmw.pmw06,g_pmw.pmw03,g_pmw.pmw04
438
WITHOUT DEFAULTS

314

INSERT INTO pmw_file VALUES (g_pmw.*)

_a

910 FUNCTION i252_b()

948
INPUT ARRAY g_pmx WITHOUT DEFAULTS FROM s_pmx.*
949
ATTRIBUTE(COUNT=g_rec_b,MAXCOUNT=g_max_rec,UNBUFFERED,
950
INSERT ROW=l_allow_insert,DELETE ROW=l_allow_delete,
951
APPEND ROW=l_allow_insert)

TIPTOP GP 5-24

DataSystem
5.4.4.1 xxxx_a() function
259 FUNCTION i252_a()
260
261
MESSAGE ""
262
CLEAR FORM
263
CALL g_pmx.clear()
264
265
IF s_shut(0) THEN
266
RETURN
267
END IF
268
269
INITIALIZE g_pmw.* LIKE pmw_file.*
270
LET g_pmw01_t = NULL
271
272
IF g_ydate IS NULL THEN
273
LET g_pmw.pmw01 = NULL
274
LET g_pmw.pmw06 = g_today
275
ELSE
276
LET g_pmw.pmw01 = g_sheet
277
LET g_pmw.pmw06 = g_ydate
278
END IF
279
280
#
281
LET g_pmw_t.* = g_pmw.*
282
LET g_pmw_o.* = g_pmw.*
283
CALL cl_opmsg('a')
284
285
WHILE TRUE
286
287
288
289
290
291
292
293
294
295
296
297
298
299

LET
LET
LET
LET

g_pmw.pmwuser=g_user
g_pmw.pmwgrup=g_grup
g_pmw.pmwdate=g_today
g_pmw.pmwacti='Y'

# DEFAULT

#
#
#

# WHILE

CALL i252_i("a")

IF INT_FLAG THEN
INITIALIZE g_pmw.* TO NULL
LET INT_FLAG = 0
CALL cl_err('',9001,0)
EXIT WHILE
END IF

TIPTOP GP 5-25

TIPTOP GP

300
IF cl_null(g_pmw.pmw01) THEN
# KEY
301
CONTINUE WHILE
302
END IF
303
304
#, , ,
305
BEGIN WORK
306
IF g_smy.smyauno='Y' THEN
#
307
CALL s_smyauno(g_pmw.pmw01,g_pmw.pmw06) RETURNING g_i,g_pmw.pmw01
308
IF g_i THEN
309
CONTINUE WHILE
310
END IF
311
DISPLAY BY NAME g_pmw.pmw01
312
END IF
313
314
INSERT INTO pmw_file VALUES (g_pmw.*)
315
316
LET g_ydate = g_pmw.pmw06
#
317
LET g_sheet = g_pmw.pmw01[1,3]
#
318
319
IF SQLCA.sqlcode THEN
#
320
ROLLBACK WORK
321
CALL cl_err(g_pmw.pmw01,SQLCA.sqlcode,1)
322
CONTINUE WHILE
323
ELSE
324
COMMIT WORK
#
325
CALL cl_flow_notify(g_pmw.pmw01,'I') #
326
END IF
327
328
SELECT ROWID INTO g_pmw_rowid FROM pmw_file
329
WHERE pmw01 = g_pmw.pmw01
330
LET g_pmw01_t = g_pmw.pmw01
#
331
LET g_pmw_t.* = g_pmw.*
332
LET g_pmw_o.* = g_pmw.*
333
CALL g_pmx.clear()
334
335
CALL i252_b()
#
336
EXIT WHILE
337
END WHILE
338
339 END FUNCTION

TIPTOP GP 5-26

DataSystem
5.4.4.2 xxxx_i() function
424 FUNCTION i252_i(p_cmd)
#
425
DEFINE l_pmc05 LIKE pmc_file.pmc05, #
426
l_pmc30 LIKE pmc_file.pmc30, # (p_cmd)
427
l_n
SMALLINT,
428
p_cmd
VARCHAR(1)
# a: u:
429
430
IF s_shut(0) THEN
431
RETURN
432
END IF
433
434
DISPLAY BY NAME g_pmw.pmwuser,g_pmw.pmwmodu, #
435
g_pmw.pmwgrup,g_pmw.pmwdate,g_pmw.pmwacti
436
437
INPUT BY NAME g_pmw.pmw01,g_pmw.pmw06,g_pmw.pmw03,g_pmw.pmw04
438
WITHOUT DEFAULTS
# input
439
440
BEFORE INPUT
441
LET g_before_input_done = FALSE
# BEFORE INPUT
442
CALL i252_set_entry(p_cmd)
#
443
CALL i252_set_no_entry(p_cmd)
#
444
LET g_before_input_done = TRUE
#
445
446
AFTER FIELD pmw01
447
#:
448
#, ;
449
#, ,
450
#, , ,
451
IF NOT cl_null(g_pmw.pmw01) THEN
452
LET g_t1=g_pmw.pmw01[1,3]
453
CALL s_mfgslip(g_t1,'apm','6')
#
454
IF NOT cl_null(g_errno) THEN
#,
455
CALL cl_err(g_t1,g_errno,0)
456
LET g_pmw.pmw01=g_pmw_o.pmw01
457
NEXT FIELD pmw01
458
END IF
459
DISPLAY g_smy.smydesc TO smydesc
#
460
IF p_cmd = 'a' THEN
461
IF g_pmw.pmw01[1,3] IS NOT NULL AND
#,
462
cl_null(g_pmw.pmw01[5,10]) THEN
#
463
IF g_smy.smyauno = 'N' THEN
#
464
NEXT FIELD pmw01
465
ELSE
#,
TIPTOP GP 5-27


466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509

TIPTOP GP
NEXT FIELD pmw03
#
END IF
END IF
IF g_pmw.pmw01[1,3] IS NOT NULL AND
NOT cl_null(g_pmw.pmw01[5,10]) THEN
IF NOT cl_chk_data_continue(g_pmw.pmw01[5,10]) THEN
CALL cl_err('','9056',0)
NEXT FIELD pmw01
END IF
END IF
END IF
IF g_pmw.pmw01 != g_pmw01_t OR g_pmw01_t IS NULL THEN
#
CALL s_mfgchno(g_pmw.pmw01) RETURNING g_i,g_pmw.pmw01
DISPLAY BY NAME g_pmw.pmw01
IF NOT g_i THEN
NEXT FIELD pmw01
END IF
SELECT count(*) INTO l_n FROM pmw_file
WHERE pmw01 = g_pmw.pmw01
IF l_n > 0 THEN
#
CALL cl_err(g_pmw.pmw01,-239,0)
LET g_pmw.pmw01 = g_pmw01_t
DISPLAY BY NAME g_pmw.pmw01
NEXT FIELD pmw01
END IF
END IF
END IF

AFTER FIELD pmw03


#
IF NOT cl_null(g_pmw.pmw03) THEN
#
IF g_pmw_o.pmw03 IS NULL OR
(g_pmw.pmw03 != g_pmw_o.pmw03 ) THEN
CALL i252_pmw03(p_cmd)
#
IF NOT cl_null(g_errno) THEN
CALL cl_err(g_pmw.pmw03,g_errno,0)
LET g_pmw.pmw03 = g_pmw_o.pmw03
DISPLAY BY NAME g_pmw.pmw03
NEXT FIELD pmw03
END IF
END IF
SELECT pmc05,pmc30 INTO l_pmc05,l_pmc30 FROM pmc_file
WHERE pmc01 = g_pmw.pmw03
IF l_pmc05 = "1" THEN

TIPTOP GP 5-28

DataSystem
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553

CALL cl_err('','mfg3288',1)
END IF
IF l_pmc05 = "2" THEN
CALL cl_err('','mfg3289',0)
NEXT FIELD pmw03
END IF
IF l_pmc30 = "2" THEN
CALL cl_err('','mfg3290',0)
NEXT FIELD pmw03
END IF
LET g_pmw_o.pmw03 = g_pmw.pmw03
END IF
AFTER FIELD pmw04
IF NOT cl_null(g_pmw.pmw04) THEN
IF g_pmw_o.pmw04 IS NULL OR
(g_pmw_o.pmw04 != g_pmw.pmw04 ) THEN
CALL i252_pmw04(p_cmd)
IF NOT cl_null(g_errno) THEN
CALL cl_err(g_pmw.pmw04,g_errno,0)
LET g_pmw.pmw04 = g_pmw_o.pmw04
DISPLAY BY NAME g_pmw.pmw04
NEXT FIELD pmw04
END IF
END IF
LET g_pmw_o.pmw04 = g_pmw.pmw04
END IF

ON ACTION CONTROLZ
CALL cl_show_req_fields()

ON ACTION CONTROLG
CALL cl_cmdask()

ON ACTION CONTROLF
CASE
WHEN INFIELD(pmw01)
WHEN INFIELD(pmw03)
WHEN INFIELD(pmw04)
WHEN INFIELD(pmw06)
WHEN INFIELD(pmx02)
WHEN INFIELD(pmx08)
WHEN INFIELD(pmx09)
WHEN INFIELD(pmx04)

#
CALL
CALL
CALL
CALL
CALL
CALL
CALL
CALL

cl_fldhlp('pmw01')
cl_fldhlp('pmw03')
cl_fldhlp('pmw04')
cl_fldhlp('pmw06')
cl_fldhlp('pmx02')
cl_fldhlp('pmx08')
cl_fldhlp('pmx09')
cl_fldhlp('pmx04')
TIPTOP GP 5-29

TIPTOP GP

554
WHEN INFIELD(pmx05) CALL cl_fldhlp('pmx05')
555
WHEN INFIELD(pmx03) CALL cl_fldhlp('pmx03')
556
WHEN INFIELD(pmx06) CALL cl_fldhlp('pmx06')
557
WHEN INFIELD(pmx07) CALL cl_fldhlp('pmx07')
558
OTHERWISE
CALL cl_fldhlp('
')
559
END CASE
560
561
ON ACTION controlp
#
562
CASE
#
563
WHEN INFIELD(pmw01)
#
564
LET g_t1=g_pmw.pmw01[1,3]
#
565
CALL q_smy(FALSE,FALSE,g_t1,'apm','6') RETURNING g_t1
566
LET g_pmw.pmw01[1,3]=g_t1
567
DISPLAY BY NAME g_pmw.pmw01
568
CALL i252_pmw01('d')
569
NEXT FIELD pmw01
570
WHEN INFIELD(pmw03)
#
571
CALL cl_init_qry_var()
#
572
LET g_qryparam.form ="q_pmc1"
573
LET g_qryparam.default1 = g_pmw.pmw03
574
CALL cl_create_qry() RETURNING g_pmw.pmw03
575
CALL FGL_DIALOG_SETBUFFER( g_pmw.pmw03 )
576
DISPLAY BY NAME g_pmw.pmw03
577
CALL i252_pmw03('d')
578
NEXT FIELD pmw03
579
WHEN INFIELD(pmw04)
#
580
CALL cl_init_qry_var()
581
LET g_qryparam.form ="q_azi"
582
LET g_qryparam.default1 = g_pmw.pmw04
583
CALL cl_create_qry() RETURNING g_pmw.pmw04
584
CALL FGL_DIALOG_SETBUFFER( g_pmw.pmw04 )
585
DISPLAY BY NAME g_pmw.pmw04
586
CALL i252_pmw04('d')
587
NEXT FIELD pmw04
588
OTHERWISE EXIT CASE
589
END CASE
590
ON IDLE g_idle_seconds
591
CALL cl_on_idle()
592
CONTINUE INPUT
593
594
END INPUT
595
596 END FUNCTION
597
TIPTOP GP 5-30

DataSystem
598 FUNCTION i252_pmw01(p_cmd)
599
DEFINE l_smydesc LIKE smy_file.smydesc,
600
l_smyacti LIKE smy_file.smyacti,
601
l_t1
VARCHAR(3),
602
p_cmd
VARCHAR(1)
603
604
605
LET g_errno = ' '
606
LET l_t1 = g_pmw.pmw01[1,3]
607
IF g_pmw.pmw01 IS NULL THEN
608
LET g_errno = 'E'
609
LET l_smydesc=NULL
610
ELSE
611
SELECT smydesc,smyacti
612
INTO l_smydesc,l_smyacti
613
FROM smy_file WHERE smyslip = l_t1
614
IF SQLCA.sqlcode THEN
615
LET g_errno = 'E'
616
LET l_smydesc = NULL
617
ELSE
618
IF l_smyacti matches'[nN]' THEN
619
LET g_errno = 'E'
620
END IF
621
END IF
622
END IF
623
624
IF cl_null(g_errno) OR p_cmd = 'd' THEN
625
DISPLAY l_smydesc TO FORMONLY.smydesc
626
END IF
627
628 END FUNCTION
629
630 FUNCTION i252_pmw03(p_cmd)
631
DEFINE l_pmc03
LIKE pmc_file.pmc03,
632
l_pmc22
LIKE pmc_file.pmc22,
633
l_pmcacti LIKE pmc_file.pmcacti,
634
p_cmd
VARCHAR(1)
635
636
637
LET g_errno = " "
638
SELECT pmc03,pmc22,pmcacti
639
INTO l_pmc03,l_pmc22,l_pmcacti
640
FROM pmc_file WHERE pmc01 = g_pmw.pmw03
641

TIPTOP GP 5-31

TIPTOP GP

642
CASE WHEN SQLCA.SQLCODE = 100 LET g_errno = 'mfg3001'
643
LET l_pmc03 = NULL
644
LET l_pmc22 = NULL
645
WHEN l_pmcacti='N' LET g_errno = '9028'
646
OTHERWISE
LET g_errno = SQLCA.SQLCODE USING '-------'
647
END CASE
648
649
IF p_cmd = 'a' THEN
650
LET g_pmw.pmw04 = l_pmc22
651
END IF
652
653
IF cl_null(g_errno) OR p_cmd = 'd' THEN
654
DISPLAY l_pmc03 TO FORMONLY.pmc03
655
DISPLAY BY NAME g_pmw.pmw04
656
END IF
657
658 END FUNCTION
659
660 FUNCTION i252_pmw04(p_cmd)
#
661
DEFINE l_azi02
LIKE azi_file.azi02,
662
l_aziacti LIKE azi_file.aziacti,
663
p_cmd
CHAR(1)
664
665
666
LET g_errno = ' '
667
LET g_azi03 = 0
668
SELECT azi02,aziacti,azi03
669
INTO l_azi02,l_aziacti,g_azi03
670
FROM azi_file WHERE azi01 = g_pmw.pmw04
671
672
CASE WHEN SQLCA.SQLCODE = 100 LET g_errno = 'mfg3008'
673
LET l_azi02 = NULL
674
WHEN l_aziacti='N' LET g_errno = '9028'
675
OTHERWISE
LET g_errno = SQLCA.SQLCODE USING '-------'
676
END CASE
677
678
IF cl_null(g_errno) OR p_cmd = 'd' THEN
679
DISPLAY l_azi02 TO FORMONLY.azi02
680
END IF
681
END FUNCTION

TIPTOP GP 5-32

DataSystem
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884

FUNCTION i252_set_entry(p_cmd)
DEFINE p_cmd
VARchar(01)

# :

IF p_cmd = 'a' AND ( NOT g_before_input_done ) THEN


CALL cl_set_comp_entry("pmw01",TRUE)
# key
END IF
#
END FUNCTION
FUNCTION i252_set_no_entry(p_cmd)
DEFINE
p_cmd
VARchar(01)

# :

IF p_cmd = 'u' AND g_chkey = 'N' AND ( NOT g_before_input_done ) THEN


CALL cl_set_comp_entry("pmw01",FALSE)
#
END IF
# p_zz key key
#
END FUNCTION

TIPTOP GP 5-33

TIPTOP GP

5.4.4.3 xxxx_b() function

945
946
947
948
949
950
951

LET l_allow_insert = cl_detail_input_auth("insert")


LET l_allow_delete = cl_detail_input_auth("delete")
INPUT ARRAY g_pmx WITHOUT DEFAULTS FROM s_pmx.*
ATTRIBUTE(COUNT=g_rec_b,MAXCOUNT=g_max_rec,UNBUFFERED,
INSERT ROW=l_allow_insert,DELETE ROW=l_allow_delete,
APPEND ROW=l_allow_insert)

detail
INPUT ARRAY

960
961
962
963
964

BEFORE ROW

LET p_cmd = ''

LET l_ac = ARR_CURR()


LET l_lock_sw = 'N'
BEFORE ROW
LET l_n = ARR_COUNT() BEFORE ROW BEFORE

INSERT BEFORE
1001
BEFORE INSERT
ROW
1002
LET l_n = ARR_COUNT()
BEFORE ROW update
1003
LET p_cmd='a'
INPUT ARRAY table array

size BEFORE INSERT


1041
BEFORE FIELD ...
input

1052
AFTER FIELD ...
BEFORE FIELDAFTER FIELD

accept
1017
AFTER INSERT
AFTER INSERT insert

1023
INSERT INTO pmx_file(pmx01,pmx02,pmx03,pmx04,pmx05,pmx06,
1024
pmx07,pmx08,pmx09,pmx081,pmx082)

1286
AFTER ROW

TIPTOP GP 5-34

DataSystem

960
984
988
1041
1052
1252
1265
1286

BEFORE ROW

IF g_rec_b >= l_ac THEN


OPEN i252_bcl USING g_pmw.pmw01,g_pmx_t.pmx02
BEFORE FIELD ...
accept

ON ROW CHANGE
AFTER FIELD ...

ON ROW
ON ROW CHANGE
CHANGE

UPDATE pmx_file SET pmx02=g_pmx[l_ac].pmx02,

AFTER ROW

960

BEFORE ROW
BEFORE DELETE

1230
BEFORE DELETE

1239
DELETE FROM pmx_file
1240
WHERE pmx01 = g_pmw.pmw01
1241
AND pmx02 = g_pmx_t.pmx02

1286
AFTER ROW

TIPTOP GP 5-35

TIPTOP GP

909 #
910 FUNCTION i252_b()
911
DEFINE l_ac_t
SMALLINT,
# ARRAY CNT
912
l_n
SMALLINT,
#
913
l_cnt
SMALLINT,
#
914
l_lock_sw
VARCHAR(1),
#
915
p_cmd
VARCHAR(1),
#
916
l_misc
VARCHAR(04),
#
917
l_allow_insert SMALLINT,
#
918
l_allow_delete SMALLINT
#
919
# g_action_choice
920
LET g_action_choice = ""
921
922
IF s_shut(0) THEN
923
RETURN
924
END IF
925
926
IF g_pmw.pmw01 IS NULL THEN
927
RETURN
928
END IF
929
930
SELECT * INTO g_pmw.* FROM pmw_file
931
WHERE pmw01=g_pmw.pmw01
932
933
IF g_pmw.pmwacti ='N' THEN
#
934
CALL cl_err(g_pmw.pmw01,'mfg1000',0)
935
RETURN
936
END IF
937
938
CALL cl_opmsg('b')
939
940
LET g_forupd_sql = "SELECT pmx02,pmx08,pmx081,pmx082,pmx09,pmx04,",
941
"
pmx05,pmx03,pmx06,pmx07 FROM pmx_file",
942
" WHERE pmx01=? AND pmx02=? FOR UPDATE NOWAIT"
943
DECLARE i252_bcl CURSOR FROM g_forupd_sql
# LOCK CURSOR
944
945
LET l_allow_insert = cl_detail_input_auth("insert") #
946
LET l_allow_delete = cl_detail_input_auth("delete")
947
948
INPUT ARRAY g_pmx WITHOUT DEFAULTS FROM s_pmx.*
949
ATTRIBUTE(COUNT=g_rec_b,MAXCOUNT=g_max_rec,UNBUFFERED,
950
INSERT ROW=l_allow_insert,DELETE ROW=l_allow_delete,
951
APPEND ROW=l_allow_insert)
# UNBUFFERED
952
# Display
TIPTOP GP 5-36

DataSystem
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996

# MAXCOUNT
BEFORE INPUT
IF g_rec_b != 0 THEN
CALL fgl_set_arr_curr(l_ac)
END IF

# update
#

BEFORE
LET
LET
LET
LET

#
#
#
#
#

ROW
p_cmd = ''
l_ac = ARR_CURR()
l_lock_sw = 'N'
l_n = ARR_COUNT()

( hot-key)

BEFORE ROW

BEGIN WORK
OPEN i252_cl USING g_pmw_rowid
IF STATUS THEN
CALL cl_err("OPEN i252_cl:", STATUS, 1)
CLOSE i252_cl
ROLLBACK WORK
RETURN
END IF
FETCH i252_cl INTO g_pmw.*
#
IF SQLCA.sqlcode THEN
CALL cl_err(g_pmw.pmw01,SQLCA.sqlcode,0)
# LOCK
CLOSE i252_cl
ROLLBACK WORK
RETURN
END IF
IF g_rec_b >= l_ac THEN
#
LET p_cmd='u'
LET g_pmx_t.* = g_pmx[l_ac].*
# BACKUP
LET g_pmx_o.* = g_pmx[l_ac].*
# BACKUP
#
OPEN i252_bcl USING g_pmw.pmw01,g_pmx_t.pmx02
IF STATUS THEN
CALL cl_err("OPEN i252_bcl:", STATUS, 1)
LET l_lock_sw = "Y"
ELSE
FETCH i252_bcl INTO g_pmx[l_ac].*
IF SQLCA.sqlcode THEN
CALL cl_err(g_pmx_t.pmx02,SQLCA.sqlcode,1)
LET l_lock_sw = "Y"
TIPTOP GP 5-37


997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040

TIPTOP GP
END IF
END IF
END IF

BEFORE INSERT
#
LET l_n = ARR_COUNT()
LET p_cmd='a'
INITIALIZE g_pmx[l_ac].* TO NULL
LET g_pmx[l_ac].pmx03 = 0
# Body default
LET g_pmx[l_ac].pmx06 = 0
# Body default
LET g_pmx[l_ac].pmx07 = 0
# Body default
LET g_pmx_t.* = g_pmx[l_ac].*
#
LET g_pmx_o.* = g_pmx[l_ac].*
#
IF l_ac > 1 THEN
LET g_pmx[l_ac].pmx04 = g_pmx[l_ac-1].pmx04
ELSE
LET g_pmx[l_ac].pmx04 = g_pmw.pmw06
END IF
NEXT FIELD pmx02
AFTER INSERT
#
IF INT_FLAG THEN
CALL cl_err('',9001,0)
LET INT_FLAG = 0
#
CANCEL INSERT
#
END IF
#
INSERT INTO pmx_file(pmx01,pmx02,pmx03,pmx04,pmx05,pmx06,
pmx07,pmx08,pmx09,pmx081,pmx082)
VALUES(g_pmw.pmw01,g_pmx[l_ac].pmx02,
g_pmx[l_ac].pmx03,g_pmx[l_ac].pmx04,
g_pmx[l_ac].pmx05,g_pmx[l_ac].pmx06,
g_pmx[l_ac].pmx07,g_pmx[l_ac].pmx08,
g_pmx[l_ac].pmx09,g_pmx[l_ac].pmx081,
g_pmx[l_ac].pmx082)
IF SQLCA.sqlcode THEN
CALL cl_err(g_pmx[l_ac].pmx02,SQLCA.sqlcode,0)
CANCEL INSERT
ELSE
MESSAGE 'INSERT O.K'
COMMIT WORK
LET g_rec_b=g_rec_b+1
#
DISPLAY g_rec_b TO FORMONLY.cn2
END IF

TIPTOP GP 5-38

DataSystem
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084

BEFORE FIELD pmx02


# default
IF g_pmx[l_ac].pmx02 IS NULL OR g_pmx[l_ac].pmx02 = 0 THEN
SELECT MAX(pmx02)+1
INTO g_pmx[l_ac].pmx02
FROM pmx_file
WHERE pmx01 = g_pmw.pmw01
IF g_pmx[l_ac].pmx02 IS NULL THEN
LET g_pmx[l_ac].pmx02 = 1
END IF
END IF
AFTER FIELD pmx02
# check
IF NOT cl_null(g_pmx[l_ac].pmx02) THEN
IF g_pmx[l_ac].pmx02 != g_pmx_t.pmx02
OR g_pmx_t.pmx02 IS NULL THEN
SELECT count(*)
INTO l_n
FROM pmx_file
WHERE pmx01 = g_pmw.pmw01
AND pmx02 = g_pmx[l_ac].pmx02
IF l_n > 0 THEN
CALL cl_err('',-239,0)
LET g_pmx[l_ac].pmx02 = g_pmx_t.pmx02
NEXT FIELD pmx02
END IF
END IF
END IF
BEFORE FIELD pmx08
CALL i252_set_entry_b(p_cmd)

# call
# function

AFTER FIELD pmx08


#
LET l_misc=g_pmx[l_ac].pmx08[1,4]
IF g_pmx[l_ac].pmx08[1,4]='MISC' THEN
SELECT COUNT(*) INTO l_n FROM ima_file
WHERE ima01=l_misc
AND ima01='MISC'
IF l_n=0 THEN
CALL cl_err('','aim-806',0)
NEXT FIELD pmx08
END IF
END IF
IF NOT cl_null(g_pmx[l_ac].pmx08) THEN
IF g_pmx_o.pmx08 IS NULL OR g_pmx_o.pmx081 IS NULL OR
TIPTOP GP 5-39


1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128

TIPTOP GP

(g_pmx[l_ac].pmx08 != g_pmx_o.pmx08 ) THEN


CALL i252_pmx08('a')
IF NOT cl_null(g_errno)
AND g_pmx[l_ac].pmx08[1,4] !='MISC' THEN #NO:6808
CALL cl_err(g_pmx[l_ac].pmx08,g_errno,0)
LET g_pmx[l_ac].pmx08 = g_pmx_o.pmx08
NEXT FIELD pmx08
# BEFORE
END IF
# FIELD
END IF
# (after field)
END IF
#
LET g_pmx_o.pmx08 = g_pmx[l_ac].pmx08
#
CALL i252_set_no_entry_b(p_cmd)
# BEFORE ROW
# BEFORE INSERT
AFTER FIELD pmx081
# + unique
IF g_pmx_o.pmx081 IS NULL OR g_pmx_o.pmx08 IS NULL OR
(g_pmx[l_ac].pmx08 != g_pmx_o.pmx08 ) OR
(g_pmx[l_ac].pmx081 != g_pmx_o.pmx081 ) THEN
SELECT COUNT(*) INTO l_cnt FROM pmx_file
WHERE pmx01=g_pmw.pmw01
AND pmx08=g_pmx[l_ac].pmx08
AND pmx081=g_pmx[l_ac].pmx081
IF l_cnt > 0 THEN
CALL cl_err('',-239,0) NEXT FIELD pmx081
END IF
END IF
AFTER FIELD pmx09
#
IF NOT cl_null(g_pmx[l_ac].pmx09) THEN
IF g_pmx[l_ac].pmx09 IS NULL OR g_pmx_t.pmx09 IS NULL OR
(g_pmx[l_ac].pmx09 != g_pmx_o.pmx09) THEN
CALL i252_pmx09()
IF NOT cl_null(g_errno) THEN
CALL cl_err(g_pmx[l_ac].pmx09,g_errno,0)
LET g_pmx[l_ac].pmx09 = g_pmx_o.pmx09
NEXT FIELD pmx09
END IF
END IF
END IF
LET g_pmx_o.pmx09 = g_pmx[l_ac].pmx09
AFTER FIELD pmx05
IF NOT cl_null(g_pmx[l_ac].pmx05) THEN
IF (g_pmx[l_ac].pmx05 < g_pmx[l_ac].pmx04) THEN

TIPTOP GP 5-40

DataSystem
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172

CALL cl_err(g_pmx[l_ac].pmx05,'mfg3009',0)
NEXT FIELD pmx05
END IF
END IF
AFTER FIELD pmx03
#
IF NOT cl_null(g_pmx[l_ac].pmx03) THEN
IF g_pmx[l_ac].pmx03 < 0 THEN
CALL cl_err(g_pmx[l_ac].pmx03,'mfg5034',0)
LET g_pmx[l_ac].pmx03 = g_pmx_o.pmx03
NEXT FIELD pmx03
END IF
IF p_cmd = 'a' THEN
IF NOT cl_null(g_pmx[l_ac].pmx05) THEN
SELECT COUNT(*) INTO l_cnt FROM pmx_file
WHERE( (g_pmx[l_ac].pmx04 <= pmx04
AND g_pmx[l_ac].pmx05 >= pmx04)
OR (g_pmx[l_ac].pmx04 <= pmx05
AND g_pmx[l_ac].pmx05 >= pmx05)
OR (g_pmx[l_ac].pmx04 >= pmx04
AND g_pmx[l_ac].pmx05 <= pmx05)
OR (g_pmx[l_ac].pmx04 <= pmx04
AND g_pmx[l_ac].pmx05 >= pmx05)
OR (pmx05 IS NULL AND pmx04 <= g_pmx[l_ac].pmx05))
AND pmx08 = g_pmx[l_ac].pmx08
AND pmx09 = g_pmx[l_ac].pmx09
AND pmx03 = g_pmx[l_ac].pmx03
AND pmx01 = g_pmw.pmw01
AND pmx03[1,4] <> 'MISC'
END IF
IF g_pmx[l_ac].pmx05 IS NULL THEN
SELECT COUNT(*) INTO l_cnt FROM pmx_file
WHERE ((g_pmx[l_ac].pmx04 <= pmx05)
OR (pmx05 IS NULL))
AND pmx08 = g_pmx[l_ac].pmx08
AND pmx09 = g_pmx[l_ac].pmx09
AND pmx03 = g_pmx[l_ac].pmx03
AND pmx01 = g_pmw.pmw01
AND pmx03[1,4] <> 'MISC' #NO:7276
END IF
IF l_cnt > 0 THEN
CALL cl_err('','mfg3287',0)
NEXT FIELD pmx04
END IF
TIPTOP GP 5-41


1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216

TIPTOP GP
END IF
IF p_cmd = 'u' THEN
IF g_pmx[l_ac].pmx05 IS NOT NULL THEN
SELECT COUNT(*) INTO l_cnt FROM pmx_file
WHERE( (g_pmx[l_ac].pmx04 <= pmx04
AND g_pmx[l_ac].pmx05 >= pmx04)
OR (g_pmx[l_ac].pmx04 <= pmx05
AND g_pmx[l_ac].pmx05 >= pmx05)
OR (g_pmx[l_ac].pmx04 >= pmx04
AND g_pmx[l_ac].pmx05 <= pmx05)
OR (g_pmx[l_ac].pmx04 <= pmx04
AND g_pmx[l_ac].pmx05 >= pmx05)
OR (pmx05 IS NULL AND pmx04 <= g_pmx[l_ac].pmx05))
AND pmx08 = g_pmx[l_ac].pmx08
AND pmx09 = g_pmx[l_ac].pmx09
AND pmx03 = g_pmx[l_ac].pmx03
AND pmx02 != g_pmx[l_ac].pmx02
AND pmx01 = g_pmw.pmw01
END IF
IF g_pmx[l_ac].pmx05 IS NULL THEN
SELECT COUNT(*) INTO l_cnt FROM pmx_file
WHERE ((g_pmx[l_ac].pmx04 <= pmx05)
OR (pmx05 IS NULL))
AND pmx08 = g_pmx[l_ac].pmx08
AND pmx09 = g_pmx[l_ac].pmx09
AND pmx03 = g_pmx[l_ac].pmx03
AND pmx02 != g_pmx[l_ac].pmx02
AND pmx01 = g_pmw.pmw01
END IF
IF l_cnt > 0 THEN
CALL cl_err('','mfg3287',0)
NEXT FIELD pmx04
END IF
END IF
LET g_pmx_o.pmx03 = g_pmx[l_ac].pmx03
END IF

AFTER FIELD pmx06


#
IF NOT cl_null(g_pmx[l_ac].pmx06) THEN
IF g_pmx[l_ac].pmx06 <= 0 THEN
CALL cl_err(g_pmx[l_ac].pmx06,'mfg3291',0)
LET g_pmx[l_ac].pmx06 = g_pmx_o.pmx06
NEXT FIELD pmx06
END IF

TIPTOP GP 5-42

DataSystem
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260

LET g_pmx_o.pmx06 = g_pmx[l_ac].pmx06


END IF
AFTER FIELD pmx07
#
IF NOT cl_null(g_pmx[l_ac].pmx07) THEN
IF g_pmx[l_ac].pmx07 < 0 OR g_pmx[l_ac].pmx07 >= 100 THEN
CALL cl_err(g_pmx[l_ac].pmx07,'mfg0013',0)
LET g_pmx[l_ac].pmx07 = g_pmx_o.pmx07
NEXT FIELD pmx07
END IF
LET g_pmx_o.pmx07 = g_pmx[l_ac].pmx07
END IF
BEFORE DELETE
#
IF g_pmx_t.pmx02 > 0 AND g_pmx_t.pmx02 IS NOT NULL THEN
IF NOT cl_delb(0,0) THEN
#
CANCEL DELETE
#
END IF
#
IF l_lock_sw = "Y" THEN
# lock
CALL cl_err("", -263, 1)
CANCEL DELETE
END IF
DELETE FROM pmx_file
WHERE pmx01 = g_pmw.pmw01
AND pmx02 = g_pmx_t.pmx02
IF SQLCA.sqlcode THEN
CALL cl_err(g_pmx_t.pmx02,SQLCA.sqlcode,0)
ROLLBACK WORK
CANCEL DELETE
END IF
LET g_rec_b=g_rec_b-1
#
DISPLAY g_rec_b TO FORMONLY.cn2
END IF
COMMIT WORK
# transaction
ON ROW CHANGE
IF INT_FLAG THEN
CALL cl_err('',9001,0)
LET INT_FLAG = 0
LET g_pmx[l_ac].* = g_pmx_t.*
CLOSE i252_bcl
ROLLBACK WORK
EXIT INPUT
END IF

#
#

#
# cursor transaction

TIPTOP GP 5-43


1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304

TIPTOP GP
IF l_lock_sw = 'Y' THEN
#
CALL cl_err(g_pmx[l_ac].pmx02,-263,1)# update
LET g_pmx[l_ac].* = g_pmx_t.*
ELSE
UPDATE pmx_file SET pmx02=g_pmx[l_ac].pmx02,
pmx03=g_pmx[l_ac].pmx03,
pmx04=g_pmx[l_ac].pmx04,
pmx05=g_pmx[l_ac].pmx05,
pmx06=g_pmx[l_ac].pmx06,
pmx07=g_pmx[l_ac].pmx07,
pmx08=g_pmx[l_ac].pmx08,
pmx09=g_pmx[l_ac].pmx09,
pmx081=g_pmx[l_ac].pmx081,
pmx082=g_pmx[l_ac].pmx082
WHERE pmx01=g_pmw.pmw01
AND pmx02=g_pmx_t.pmx02
IF SQLCA.sqlcode OR SQLCA.sqlerrd[3] = 0 THEN
CALL cl_err(g_pmx[l_ac].pmx02,SQLCA.sqlcode,0)
LET g_pmx[l_ac].* = g_pmx_t.*
ELSE
MESSAGE 'UPDATE O.K'
COMMIT WORK
END IF
END IF

AFTER ROW
LET l_ac = ARR_CURR()
LET l_ac_t = l_ac
IF INT_FLAG THEN
CALL cl_err('',9001,0)
LET INT_FLAG = 0
IF p_cmd = 'u' THEN
LET g_pmx[l_ac].* = g_pmx_t.*
END IF
CLOSE i252_bcl
ROLLBACK WORK
EXIT INPUT
END IF
CLOSE i252_bcl
COMMIT WORK

TIPTOP GP 5-44

#
#

#
#

# cursor
# transaction after
# row before delete
#
#
# whenever error continue
#

DataSystem
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348

ON ACTION CONTROLN
CALL i252_b_askkey()
EXIT INPUT

ON ACTION CONTROLO
IF INFIELD(pmx02) AND l_ac > 1 THEN
LET g_pmx[l_ac].* = g_pmx[l_ac-1].*
LET g_pmx[l_ac].pmx02 = g_rec_b + 1
NEXT FIELD pmx02
END IF

ON ACTION CONTROLZ
CALL cl_show_req_fields()
ON ACTION CONTROLG
CALL cl_cmdask()
ON ACTION itemno
IF g_sma.sma38 matches'[Yy]' THEN
# input
CALL cl_cmdrun("aimi109 ")
ELSE
CALL cl_err(g_sma.sma38,'mfg0035',1)
END IF
ON ACTION controlp
CASE
WHEN INFIELD(pmx08) #
CALL cl_init_qry_var()
LET g_qryparam.form ="q_ima"
LET g_qryparam.default1 = g_pmx[l_ac].pmx08
CALL cl_create_qry() RETURNING g_pmx[l_ac].pmx08
CALL FGL_DIALOG_SETBUFFER( g_pmx[l_ac].pmx08 )
IF NOT cl_null(g_pmx[l_ac].pmx08) AND
g_pmx[l_ac].pmx08[1,4] !='MISC' THEN
CALL i252_pmx08('d')
END IF
NEXT FIELD pmx08
WHEN INFIELD(pmx09) #
CALL cl_init_qry_var()
LET g_qryparam.form ="q_gfe"
LET g_qryparam.default1 = g_pmx[l_ac].pmx09
CALL cl_create_qry() RETURNING g_pmx[l_ac].pmx09
CALL FGL_DIALOG_SETBUFFER( g_pmx[l_ac].pmx09 )
TIPTOP GP 5-45


1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392

TIPTOP GP
DISPLAY BY NAME g_pmx[l_ac].pmx09
NEXT FIELD pmx09
OTHERWISE EXIT CASE
END CASE

ON ACTION CONTROLF
CASE
WHEN INFIELD(pmx02) CALL cl_fldhlp('pmx02')
WHEN INFIELD(pmx03) CALL cl_fldhlp('pmx03')
WHEN INFIELD(pmx04) CALL cl_fldhlp('pmx04')
WHEN INFIELD(pmx05) CALL cl_fldhlp('pmx05')
WHEN INFIELD(pmx06) CALL cl_fldhlp('pmx06')
WHEN INFIELD(pmx07) CALL cl_fldhlp('pmx07')
WHEN INFIELD(pmx08) CALL cl_fldhlp('pmx08')
WHEN INFIELD(pmx09) CALL cl_fldhlp('pmx09')
OTHERWISE
CALL cl_fldhlp('
')
END CASE
ON IDLE g_idle_seconds
CALL cl_on_idle()
CONTINUE INPUT
END INPUT
CLOSE i252_bcl
COMMIT WORK
CALL i252_delall()

END FUNCTION
FUNCTION i252_delall()
SELECT COUNT(*) INTO g_cnt FROM pmx_file
WHERE pmx01 = g_pmw.pmw01
IF g_cnt = 0 THEN
#
CALL cl_getmsg('9044',g_lang) RETURNING g_msg
ERROR g_msg CLIPPED
DELETE FROM pmw_file WHERE pmw01 = g_pmw.pmw01
END IF
END FUNCTION
FUNCTION i252_pmx08(p_cmd) #
DEFINE l_ima02
LIKE ima_file.ima02,

TIPTOP GP 5-46

DataSystem
1393
l_ima44
LIKE ima_file.ima44,
1394
l_ima021
LIKE ima_file.ima021,
1395
l_imaacti LIKE ima_file.imaacti,
1396
p_cmd
VARCHAR(1)
1397
1398
LET g_errno = ' '
1399
SELECT ima02,ima021,ima44,imaacti INTO l_ima02,l_ima021,l_ima44,l_imaacti
1400
FROM ima_file WHERE ima01 = g_pmx[l_ac].pmx08
1401
1402
CASE WHEN SQLCA.SQLCODE = 100 LET g_errno = 'mfg3006'
1403
LET l_ima02 = NULL
1404
LET l_ima44 = NULL
1405
WHEN l_imaacti='N' LET g_errno = '9028'
1406
OTHERWISE
LET g_errno = SQLCA.SQLCODE USING '-------'
1407
END CASE
1408
1409
IF p_cmd = 'a' THEN
1410
LET g_pmx[l_ac].pmx09 = l_ima44
1411
END IF
1412
1413
IF cl_null(g_errno) OR p_cmd = 'd' OR g_pmx[l_ac].pmx08[1,4]='MISC' THEN #6808
1414
LET g_pmx[l_ac].pmx081 = l_ima02
1415
LET g_pmx[l_ac].pmx082 = l_ima021
1416
END IF
1417
1418 END FUNCTION
1419
1420 FUNCTION i252_pmx09() #
1421
DEFINE
l_gfeacti LIKE gfe_file.gfeacti
1422
1423
LET g_errno = " "
1424
SELECT gfeacti INTO l_gfeacti FROM gfe_file
1425
WHERE gfe01 = g_pmx[l_ac].pmx09
1426
CASE WHEN SQLCA.SQLCODE = 100 LET g_errno = 'mfg3098'
1427
LET l_gfeacti = NULL
1428
WHEN l_gfeacti='N' LET g_errno = '9028'
1429
OTHERWISE
LET g_errno = SQLCA.SQLCODE USING '-------'
1430
END CASE
1431
END FUNCTION
1886 FUNCTION i252_set_entry_b(p_cmd)
1887
DEFINE p_cmd
VARchar(01)
1888

# :

TIPTOP GP 5-47

TIPTOP GP

1889
IF INFIELD(pmx08) THEN
#
1890
CALL cl_set_comp_entry("pmx081,pmx082",TRUE)#
1891
END IF
1892
1893 END FUNCTION
1894
1895 FUNCTION i252_set_no_entry_b(p_cmd)
# :
1896
DEFINE p_cmd
VARchar(01)
1897
1898
IF INFIELD(pmx08) THEN
#
1899
IF g_pmx[l_ac].pmx08[1,4] <> 'MISC' THEN
#
1900
CALL cl_set_comp_entry("pmx081,pmx082",FALSE)
1901
END IF
1902
END IF
1903
END FUNCTION

TIPTOP GP 5-48

DataSystem
5.4.5
5.4.5.1 xxxx_b_askkey() function
1434 FUNCTION i252_b_askkey()
1435
DEFINE l_wc2
CHAR(200)
1436
1437
CONSTRUCT l_wc2 ON pmx02,pmx08,pmx09,pmx04,
1438
pmx05,pmx03,pmx06,pmx07,pmx082 #
1439
FROM s_pmx[1].pmx02,s_pmx[1].pmx08,s_pmx[1].pmx09,
1440
s_pmx[1].pmx04,s_pmx[1].pmx05,s_pmx[1].pmx03,
1441
s_pmx[1].pmx06,s_pmx[1].pmx07,s_pmx[1].pmx082
1442
ON IDLE g_idle_seconds
1443
CALL cl_on_idle()
1444
CONTINUE CONSTRUCT
1445
1446
END CONSTRUCT
1447
IF INT_FLAG THEN
1448
LET INT_FLAG = 0
1449
RETURN
1450
END IF
1451
1452
CALL i252_b_fill(l_wc2)
# array
1453
1454
END FUNCTION

TIPTOP GP 5-49

TIPTOP GP

5.4.5.2 xxxx_u() function


341 FUNCTION i252_u()
342
343
IF s_shut(0) THEN
344
RETURN
345
END IF
346
347
IF g_pmw.pmw01 IS NULL THEN
348
CALL cl_err('',-400,0)
349
RETURN
350
END IF
351
352
SELECT * INTO g_pmw.* FROM pmw_file
353
WHERE pmw01=g_pmw.pmw01
354
355
IF g_pmw.pmwacti ='N' THEN
356
CALL cl_err(g_pmw.pmw01,'mfg1000',0)
357
RETURN
358
END IF
359
360
MESSAGE ""
361
CALL cl_opmsg('u')
362
LET g_pmw01_t = g_pmw.pmw01
363
BEGIN WORK
364
365
OPEN i252_cl USING g_pmw_rowid
366
IF STATUS THEN
367
CALL cl_err("OPEN i252_cl:", STATUS, 1)
368
CLOSE i252_cl
369
ROLLBACK WORK
370
RETURN
371
END IF
372
373
FETCH i252_cl INTO g_pmw.*
374
IF SQLCA.sqlcode THEN
375
CALL cl_err(g_pmw.pmw01,SQLCA.sqlcode,0)
376
CLOSE i252_cl
377
ROLLBACK WORK
378
RETURN
379
END IF
380
381
CALL i252_show()
382
TIPTOP GP 5-50

#
# LOCK

DataSystem
383
WHILE TRUE
384
LET g_pmw01_t = g_pmw.pmw01
385
LET g_pmw_o.* = g_pmw.*
386
LET g_pmw.pmwmodu=g_user
387
LET g_pmw.pmwdate=g_today
388
389
CALL i252_i("u")
#
390
391
IF INT_FLAG THEN
392
LET INT_FLAG = 0
393
LET g_pmw.*=g_pmw_t.*
394
CALL i252_show()
395
CALL cl_err('','9001',0)
396
EXIT WHILE
397
END IF
398
399
IF g_pmw.pmw01 != g_pmw01_t THEN
#
400
UPDATE pmx_file SET pmx01 = g_pmw.pmw01 # key
401
WHERE pmx01 = g_pmw01_t
402
IF SQLCA.sqlcode OR SQLCA.sqlerrd[3] = 0 THEN
403
CALL cl_err('pmx',SQLCA.sqlcode,0)
404
CONTINUE WHILE
405
END IF
406
END IF
407
408
UPDATE pmw_file SET pmw_file.* = g_pmw.*
409
WHERE ROWID = g_pmw_rowid
410
411
IF SQLCA.sqlcode OR SQLCA.sqlerrd[3] = 0 THEN
412
CALL cl_err(g_pmw.pmw01,SQLCA.sqlcode,0)
413
CONTINUE WHILE
414
END IF
415
EXIT WHILE
416
END WHILE
417
418
CLOSE i252_cl
419
COMMIT WORK
420
CALL cl_flow_notify(g_pmw.pmw01,'U')
421
END FUNCTION

TIPTOP GP 5-51

TIPTOP GP

5.4.5.3 xxxx_copy() function


1582 FUNCTION i252_copy()
1583
DEFINE l_newno
LIKE pmw_file.pmw01,
1584
l_newdate LIKE pmw_file.pmw06,
1585
l_oldno
LIKE pmw_file.pmw01
1586
1587
IF s_shut(0) THEN RETURN END IF
1588
IF g_pmw.pmw01 IS NULL THEN
1589
CALL cl_err('',-400,0)
1590
RETURN
1591
END IF
1592
# copy
1593
LET g_before_input_done = FALSE
# input
1594
CALL i252_set_entry('a')
# key
1595
#
1596
INPUT l_newno,l_newdate FROM pmw01,pmw06
1597
AFTER FIELD pmw01
1598
IF l_newno[1,3] IS NULL THEN
1599
NEXT FIELD pmw01
1600
END IF
1601
LET g_t1=l_newno[1,3]
1602
CALL s_mfgslip(g_t1,'apm','6')
#
1603
IF NOT cl_null(g_errno) THEN
#
1604
CALL cl_err(g_t1,g_errno,0)
1605
LET g_pmw.pmw01=g_pmw_o.pmw01
1606
NEXT FIELD pmw01
1607
END IF
1608
DISPLAY g_smy.smydesc TO smydesc
#
1609
1610
AFTER FIELD pmw06
1611
IF cl_null(l_newdate) THEN NEXT FIELD pmw06 END IF
1612
IF g_smy.smyauno = 'N' THEN
#
1613
IF l_newno[1,3] IS NOT NULL AND
# ,
1614
cl_null(l_newno[5,10]) THEN
#
1615
NEXT FIELD pmw01
1616
END IF
1617
END IF
1618
IF g_smy.smyauno = 'N' THEN
#
1619
IF NOT cl_chk_data_continue(l_newno[5,10]) THEN
1620
CALL cl_err('','9056',0)
1621
NEXT FIELD pmw01
1622
END IF
1623
END IF
TIPTOP GP 5-52

DataSystem
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667

BEGIN WORK #No:7857


IF g_smy.smyauno='Y' THEN
CALL s_smyauno(l_newno,l_newdate) RETURNING g_i,l_newno
IF g_i THEN NEXT FIELD pmw01 END IF #
DISPLAY l_newno TO pmw01
END IF
SELECT count(*) INTO g_cnt FROM pmw_file WHERE pmw01 = l_newno
IF g_cnt > 0 THEN
# key
CALL cl_err(l_newno,-239,0)
NEXT FIELD pmw01
END IF
ON ACTION controlp
CASE
WHEN INFIELD(pmw01) #
LET g_t1=l_newno[1,3]
CALL q_smy(FALSE,FALSE,g_t1,'apm','6') RETURNING g_t1
LET l_newno[1,3]=g_t1
DISPLAY BY NAME l_newno
NEXT FIELD pmw01
OTHERWISE EXIT CASE
END CASE
ON IDLE g_idle_seconds
CALL cl_on_idle()
CONTINUE INPUT
END INPUT
IF INT_FLAG THEN
LET INT_FLAG = 0
DISPLAY BY NAME g_pmw.pmw01
RETURN
END IF
DROP TABLE y

# temp table

SELECT * FROM pmw_file


WHERE pmw01=g_pmw.pmw01
INTO TEMP y

UPDATE y
SET pmw01=l_newno,
pmw06=l_newdate,
pmwuser=g_user,

#
#
#
#

temp

TIPTOP GP 5-53

TIPTOP GP

1668
pmwgrup=g_grup,
#
1669
pmwmodu=NULL,
#
1670
pmwdate=g_today,
#
1671
pmwacti='Y'
#
1672
# temp table insert table
1673
INSERT INTO pmw_file
1674
SELECT * FROM y
1675
1676
DROP TABLE x
# temp table
1677
1678
SELECT * FROM pmx_file
#
1679
WHERE pmx01=g_pmw.pmw01
1680
INTO TEMP x
1681
IF SQLCA.sqlcode THEN
1682
CALL cl_err(g_pmw.pmw01,SQLCA.sqlcode,0)
1683
RETURN
1684
END IF
1685
1686
UPDATE x
# temp table
1687
SET pmx01=l_newno
1688
1689
INSERT INTO pmx_file
# temp table table
1690
SELECT * FROM x
1691
IF SQLCA.sqlcode THEN
1692
ROLLBACK WORK
1693
CALL cl_err(g_pmw.pmw01,SQLCA.sqlcode,0)
1694
RETURN
1695
ELSE
1696
COMMIT WORK
1697
END IF
1698
LET g_cnt=SQLCA.SQLERRD[3]
1699
MESSAGE '(',g_cnt USING '##&',') ROW of (',l_newno,') O.K'
1700
1701
LET l_oldno = g_pmw.pmw01
1702
SELECT ROWID,* INTO g_pmw_rowid,g_pmw.* FROM pmw_file WHERE pmw01 = l_newno
1703
CALL i252_u()
#
1704
CALL i252_b()
#
1705
SELECT ROWID,* INTO g_pmw_rowid,g_pmw.* FROM pmw_file WHERE pmw01 = l_oldno
1706
CALL i252_show()
#
1707
1708 END FUNCTION

TIPTOP GP 5-54

DataSystem
5.4.5.4 xxxx_r() function
849 FUNCTION i252_r()
850
851
IF s_shut(0) THEN
852
RETURN
853
END IF
854
855
IF g_pmw.pmw01 IS NULL THEN
856
CALL cl_err("",-400,0)
857
RETURN
858
END IF
859
860
SELECT * INTO g_pmw.* FROM pmw_file
861
WHERE pmw01=g_pmw.pmw01
862
IF g_pmw.pmwacti ='N' THEN
#
863
CALL cl_err(g_pmw.pmw01,'mfg1000',0)
864
RETURN
865
END IF
866
BEGIN WORK
867
868
OPEN i252_cl USING g_pmw_rowid
869
IF STATUS THEN
870
CALL cl_err("OPEN i252_cl:", STATUS, 1)
871
CLOSE i252_cl
872
ROLLBACK WORK
873
RETURN
874
END IF
875
876
FETCH i252_cl INTO g_pmw.*
#
877
IF SQLCA.sqlcode THEN
878
CALL cl_err(g_pmw.pmw01,SQLCA.sqlcode,0)
# LOCK
879
ROLLBACK WORK
880
RETURN
881
END IF
882
883
CALL i252_show()
884
885
IF cl_delh(0,0) THEN
#
886
DELETE FROM pmw_file WHERE pmw01 = g_pmw.pmw01
887
DELETE FROM pmx_file WHERE pmx01 = g_pmw.pmw01
888
CLEAR FORM
#
889
CALL g_pmx.clear()
890
OPEN i252_count
#
TIPTOP GP 5-55

TIPTOP GP

891
FETCH i252_count INTO mi_row_count
892
DISPLAY mi_row_count TO FORMONLY.cnt
893
OPEN i252_cs
894
IF mi_curs_index = mi_row_count + 1 THEN #
895
LET mi_jump = mi_row_count
# _fetch
896
CALL i252_fetch('L')
897
ELSE
#
898
LET mi_jump = mi_curs_index
899
LET mi_no_ask = TRUE
#
900
CALL i252_fetch('/')
#
901
END IF
#
902
END IF
903
904
CLOSE i252_cl
905
COMMIT WORK
906
CALL cl_flow_notify(g_pmw.pmw01,'D')
907 END FUNCTION

TIPTOP GP 5-56

DataSystem
5.4.5.5 xxxx_x() function
783 FUNCTION i252_x()
784
785
IF s_shut(0) THEN
786
RETURN
787
END IF
788
789
IF g_pmw.pmw01 IS NULL THEN
790
CALL cl_err("",-400,0)
791
RETURN
792
END IF
793
794
BEGIN WORK
795
796
OPEN i252_cl USING g_pmw_rowid
797
IF STATUS THEN
798
CALL cl_err("OPEN i252_cl:", STATUS, 1)
799
CLOSE i252_cl
800
ROLLBACK WORK
801
RETURN
802
END IF
803
804
FETCH i252_cl INTO g_pmw.*
#
805
IF SQLCA.sqlcode THEN
806
CALL cl_err(g_pmw.pmw01,SQLCA.sqlcode,0)
# LOCK
807
ROLLBACK WORK
808
RETURN
809
END IF
810
811
LET g_success = 'Y'
812
813
CALL i252_show()
814
815
IF cl_exp(0,0,g_pmw.pmwacti) THEN
#
816
LET g_chr=g_pmw.pmwacti
#
817
IF g_pmw.pmwacti='Y' THEN
818
LET g_pmw.pmwacti='N'
#
819
ELSE
820
LET g_pmw.pmwacti='Y'
821
END IF
822
823
UPDATE pmw_file SET pmwacti=g_pmw.pmwacti,
824
pmwmodu=g_user,
TIPTOP GP 5-57

TIPTOP GP

825
pmwdate=g_today
826
WHERE pmw01=g_pmw.pmw01
827
IF SQLCA.sqlcode OR SQLCA.SQLERRD[3]=0 THEN
828
CALL cl_err(g_pmw.pmw01,SQLCA.sqlcode,0)
829
LET g_pmw.pmwacti=g_chr
830
END IF
831
END IF
832
833
CLOSE i252_cl
834
#
835
IF g_success = 'Y' THEN
836
COMMIT WORK
837
CALL cl_flow_notify(g_pmw.pmw01,'V')
838
ELSE
839
ROLLBACK WORK
#
840
END IF
841
842
SELECT pmwacti,pmwmodu,pmwdate
843
INTO g_pmw.pmwacti,g_pmw.pmwmodu,g_pmw.pmwdate FROM pmw_file
844
WHERE pmw01=g_pmw.pmw01
845
DISPLAY BY NAME g_pmw.pmwacti,g_pmw.pmwmodu,g_pmw.pmwdate
846
847 END FUNCTION

TIPTOP GP 5-58

DataSystem
5.4.6
5.4.6.1 xxxx_out() function
1710 FUNCTION i252_out()
1711
DEFINE l_i
SMALLINT,
1712
sr
RECORD
1713
pmw01
LIKE pmw_file.pmw01,
#
1714
pmw03
LIKE pmw_file.pmw03,
#
1715
pmc03
LIKE pmc_file.pmc03,
#
1716
pmw04
LIKE pmw_file.pmw04,
#
1717
pmw06
LIKE pmw_file.pmw06,
#
1718
pmwacti
LIKE pmw_file.pmwacti, #
1719
pmx02
LIKE pmx_file.pmx02,
#
1720
pmx08
LIKE pmx_file.pmx08,
#
1721
pmx081
LIKE pmx_file.pmx081, #
1722
pmx09
LIKE pmx_file.pmx09,
#
1723
pmx06
LIKE pmx_file.pmx06,
#
1724
pmx03
LIKE pmx_file.pmx03,
#
1725
pmx07
LIKE pmx_file.pmx07,
#
1726
pmx04
LIKE pmx_file.pmx04,
#
1727
pmx05
LIKE pmx_file.pmx05
#
1728
END RECORD,
1729
l_name
VARCHAR(20),
#External(Disk) file name
1730
l_za05
VARCHAR(40)
#
1731
1732
IF g_wc IS NULL THEN
1733
CALL cl_err('','9057',0) RETURN
1734
END IF
1735
CALL cl_wait()
#
1736
CALL cl_outnam('apmi252') RETURNING l_name
# : apmi252.10r
1737
SELECT zo02 INTO g_company FROM zo_file WHERE zo01 = g_lang
1738
DECLARE i252_za_cur CURSOR FOR
1739
SELECT za02,za05 FROM za_file
1740
WHERE za01 = "apmi252" AND za03 = g_lang
1741
FOREACH i252_za_cur INTO g_i,l_za05
1742
LET g_x[g_i] = l_za05
1743
END FOREACH
# g_x array
1744
SELECT zz17,zz05 INTO g_len,g_zz05 FROM zz_file WHERE zz01 = 'apmi252'
1745
IF g_len = 0 OR g_len IS NULL THEN LET g_len = 80 END IF
1746
FOR g_i = 1 TO g_len LET g_dash[g_i,g_i] = '=' END FOR
1747
LET g_sql="SELECT pmw01,pmw03,pmc03,pmw04,pmw06,pmwacti,",
1748
" pmx02,pmx08,pmx081,pmx09,pmx06,pmx03,pmx07,pmx04,pmx05 ",
TIPTOP GP 5-59

TIPTOP GP

1749
" FROM pmw_file,pmx_file,OUTER pmc_file",
1750
" WHERE pmx01 = pmw01 AND pmw03=pmc_file.pmc01 AND ",g_wc CLIPPED,
1751
" AND ",g_wc2 CLIPPED
1752
PREPARE i252_p1 FROM g_sql
# RUNTIME
1753
DECLARE i252_co
# CURSOR
1754
CURSOR FOR i252_p1
1755
1756
START REPORT i252_rep TO l_name
1757
1758
FOREACH i252_co INTO sr.*
#
1759
IF SQLCA.sqlcode THEN
1760
CALL cl_err('foreach:',SQLCA.sqlcode,1)
1761
EXIT FOREACH
1762
END IF
1763
OUTPUT TO REPORT i252_rep(sr.*)
#
1764
END FOREACH
1765
1766
FINISH REPORT i252_rep
1767
1768
CLOSE i252_co
1769
ERROR ""
1770
CALL cl_prt(l_name,' ','1',g_len)
#
1771 END FUNCTION

TIPTOP GP 5-60

DataSystem
5.4.6.2 xxxx_rep() function
1773 REPORT i252_rep(sr)
1774
DEFINE l_trailer_sw CHAR(1),
1775
l_i
SMALLINT,
1776
sr
RECORD
1777
pmw01
LIKE pmw_file.pmw01,
#
1778
pmw03
LIKE pmw_file.pmw03,
#
1779
pmc03
LIKE pmc_file.pmc03,
#
1780
pmw04
LIKE pmw_file.pmw04,
#
1781
pmw06
LIKE pmw_file.pmw06,
#
1782
pmwacti
LIKE pmw_file.pmwacti, #
1783
pmx02
LIKE pmx_file.pmx02,
#
1784
pmx08
LIKE pmx_file.pmx08,
#
1785
pmx081
LIKE pmx_file.pmx081, #
1786
pmx09
LIKE pmx_file.pmx09,
#
1787
pmx06
LIKE pmx_file.pmx06,
#
1788
pmx03
LIKE pmx_file.pmx03,
#
1789
pmx07
LIKE pmx_file.pmx07,
#
1790
pmx04
LIKE pmx_file.pmx04,
#
1791
pmx05
LIKE pmx_file.pmx05
#
1792
END RECORD
1793
1794
OUTPUT
1795
TOP MARGIN 0
1796
LEFT MARGIN 0
1797
BOTTOM MARGIN 6
1798
PAGE LENGTH 66
1799
1800
ORDER BY sr.pmw01,sr.pmx02
1801
FORMAT
1802
PAGE HEADER
1803
PRINT (g_len-length(g_company))/2 SPACES,g_company
1804
PRINT COLUMN (g_len-length(g_user)-5),'FROM:',g_user CLIPPED
1805
PRINT (g_len-length(g_x[1]))/2 SPACES,g_x[1]
1806
PRINT ' '
1807
PRINT g_x[2] CLIPPED,g_today ,' ',TIME,
1808
COLUMN g_len-10,g_x[3] CLIPPED,PAGENO USING '<<<'
1809
PRINT g_dash[1,g_len]
1810
LET l_trailer_sw = 'y'
1811
1812
BEFORE GROUP OF sr.pmw01 #
1813
IF (PAGENO > 1 OR LINENO > 9)
1814
THEN SKIP TO TOP OF PAGE
TIPTOP GP 5-61


1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858

TIPTOP GP

END IF
PRINT g_x[11],COLUMN 41,g_x[12]
PRINT ' ---------- -------- ---------- ---------- ----'
IF sr.pmwacti MATCHES'[Nn]' THEN
PRINT '*';
END IF
PRINT COLUMN 02,sr.pmw01,
COLUMN 13,sr.pmw06, #,
COLUMN 22,sr.pmw03,
COLUMN 34,sr.pmc03, #
COLUMN 45,sr.pmw04
#
PRINT
PRINT g_x[13],COLUMN 41,g_x[14]
PRINT g_x[15],COLUMN 41,g_x[16]
PRINT '---- -------------------- -----------------',
' -------- --------------'
ON EVERY ROW
PRINT COLUMN 01,sr.pmx02 USING '####',
COLUMN 06,sr.pmx08,
COLUMN 27,sr.pmx09,
COLUMN 35,sr.pmx06 USING '#########&.&&&',
COLUMN 51,sr.pmx07,
COLUMN 61,sr.pmx03 USING '#########&.&&&'
PRINT COLUMN 06,sr.pmx081,
COLUMN 51,sr.pmx04,
COLUMN 61,sr.pmx05
ON LAST ROW
PRINT g_dash[1,g_len]
IF g_zz05 = 'Y'
# 80:70,140,210
132:120,240
THEN IF g_wc[001,080] > ' ' THEN
PRINT g_x[8] CLIPPED,g_wc[001,070] CLIPPED END IF
IF g_wc[071,140] > ' ' THEN
PRINT COLUMN 10,
g_wc[071,140] CLIPPED END IF
IF g_wc[141,210] > ' ' THEN
PRINT COLUMN 10,
g_wc[141,210] CLIPPED END IF
PRINT g_dash[1,g_len]
END IF
LET l_trailer_sw = 'n'
PRINT g_x[4],g_x[5] CLIPPED, COLUMN (g_len-9), g_x[7] CLIPPED
AFTER GROUP OF sr.pmw01 #
PRINT ' '

TIPTOP GP 5-62

DataSystem
1859
PAGE TRAILER
1860
IF l_trailer_sw = 'y' THEN
1861
PRINT g_dash[1,g_len]
1862
PRINT g_x[4],g_x[5] CLIPPED, COLUMN (g_len-9), g_x[6] CLIPPED
1863
ELSE
1864
SKIP 2 LINE
1865
END IF
1866 END REPORT

TIPTOP GP 5-63

TIPTOP GP 5-64

TIPTOP GP

Chapter 6

DataSystem
6.1

MAIN

tm()

xxxx()

xxxx()

rep()

rep()

TIPTOP GP 6-1

TIPTOP GP

6.2
SCHEMA FORMONLY
LAYOUT
VBOX
GRID
{
<G group01
Order No.
Order Dt
Ac.Cust
Shp.Cust

[oea01
[oea02
[oea03
[oea04

}
END --GRID
GROUP g01 (TEXT="INPUT")
VBOX
GRID
{
<G group02
[s1
[t1
[u1
<G group03
[a
}
END --GRID
GRID
{
[c
}
END --GRID
END --VBOX
END --GROUP
GRID
{
[m
}
END --GRID
END --VBOX
END --LAYOUT

TIPTOP GP 6-2

]
]
]
]

Empl No.
Dept No.
Curr
Cont.No.
On-Hd No.

>
]
]
]
]
]

[oea14
[oea15
[ea23
[oea12
[hold

>
] [s2
] [t2
] [u2

] [s3
] [t3
] [u3
> <G group04
[b

]
]
]
>
]

DataSystem
ATTRIBUTES
GROUP
GROUP
GROUP
GROUP

COMBOBOX

group01
group02
group03
group04
oea01
oea02
oea03
oea04
oea14
oea15
ea23
oea12
hold
s1

:
:
:
:
=
=
=
=
=
=
=
=
=
=

COMBOBOX

s2

COMBOBOX

s3

CHECKBOX

t1

CHECKBOX

t2

CHECKBOX

t3

CHECKBOX

u1

CHECKBOX

u2

CHECKBOX

u3

DATEEDIT

RADIOGROUP a

RADIOGROUP b
CHECKBOX c

=
=

CHECKBOX

group01, TEXT="QBE";
group02, TEXT="Sequence";
group03, TEXT="Data Option 1";
group04, TEXT="Data Option 2";
FORMONLY.oea01 TYPE CHAR;
FORMONLY.oea02 TYPE DATE;
FORMONLY.oea03 TYPE CHAR;
FORMONLY.oea04 TYPE CHAR;
FORMONLY.oea14 TYPE CHAR;
FORMONLY.oea15 TYPE CHAR;
FORMONLY.oea23 TYPE CHAR;
FORMONLY.oea12 TYPE CHAR;
FORMONLY.oeahold TYPE CHAR;
FORMONLY.s1, QUERYEDITABLE,
ITEMS=((1,"Order No."),(2,"Order Dt"),(3,"Ac. Cust"),(4,"Shp. Cust"),
(5,"Empl No."),(6,"Dept No."),(7,"Curr"),(8,"Cont. No."),
(9,"On-Hd No."));
FORMONLY.s2, QUERYEDITABLE,
ITEMS=((1,"Order No."),(2,"Order Dt"),(3,"Ac. Cust"),(4,"Shp. Cust"),
(5,"Empl No."),(6,"Dept No."),(7,"Curr"),(8,"Cont. No."),
(9,"On-Hd No."));
FORMONLY.s3, QUERYEDITABLE,
ITEMS=((1,"Order No."),(2,"Order Dt"),(3,"Ac. Cust"),(4,"Shp. Cust"),
(5,"Empl No."),(6,"Dept No."),(7,"Curr"),(8,"Cont. No."),
(9,"On-Hd No."));
FORMONLY.t1, NOT NULL,
VALUECHECKED="Y", VALUEUNCHECKED="N", TEXT="Next Page";
FORMONLY.t2, NOT NULL,
VALUECHECKED="Y", VALUEUNCHECKED="N", TEXT="Next Page";
FORMONLY.t3, NOT NULL,
VALUECHECKED="Y", VALUEUNCHECKED="N", TEXT="Next Page";
FORMONLY.u1, NOT NULL,
VALUECHECKED="Y", VALUEUNCHECKED="N", TEXT="Subtotal";
FORMONLY.u2, NOT NULL,
VALUECHECKED="Y", VALUEUNCHECKED="N", TEXT="Subtotal";
FORMONLY.u3, NOT NULL,
VALUECHECKED="Y", VALUEUNCHECKED="N", TEXT="Subtotal";
FORMONLY.a TYPE CHAR,
ITEMS=((1,"Confirmed"),(2,"UnConfirmed"),(3,"All"));
FORMONLY.b TYPE CHAR,ITEMS=((1,"Held"),(2,"Unheld"),(3,"All"));
FORMONLY.c TYPE CHAR, NOT NULL,
VALUECHECKED="Y", VALUEUNCHECKED="N", TEXT="Print total qty";
FORMONLY.more TYPE CHAR, NOT NULL,
VALUECHECKED="Y", VALUEUNCHECKED="N", TEXT="Other codition to print";

END

TIPTOP GP 6-3

TIPTOP GP

6.3
(dstest)(bvi)
FROM:saki

:04/06/09 20:12:35
:-+
+
:1
========================================================================================================================================


---------- ------ -------- -------- ---- ---------- ------ ---- -- -------------------- ---- ----------- ---------- ----------- -------111-5A0001 C00001 tiptop TWD 111-5A0001 A
11
1 SM01

10.00 50,000.00
500,000 02/08/15
02/08/15 B01
S301
003
Y
586 Computer
:
111-5A0002 B01
95/10/07 B01

TWD 111-5A0002 A
T000
003

1 101
101-test
2 MISC
.

10.00
KG

1.00

21.00

21 95/10/07

SET

.00

0.00

0 95/10/07

:
111-5A0003 B01
95/10/07 B01

TWD 111-5A0003 A
T000
001

1.00

1 A-FGC-M11
SET
- 286
2 A-FGC-M11
SET
- 286
:

111-5A0004 C00001
95/10/13 C00001

TIPTOP GP 6-4

TWD 111-5A0004 A
S301
002

1 A-RMC-P10-02
CHIP SET (-286-16)
3 rereorie

500,000

21

100.00

105.00

10,500 95/10/07

100.00

105.00

10,500 95/10/07

200.00

21,000

PCS

50.00

10.00

500 95/10/30

SET

1.00

0.00

0 95/10/30

DataSystem

TIPTOP GP
2 wang
101 Keyb 10k

150K
1.2 MB

:
111-5A0005 C00001
95/10/13 C00001

TWD 111-5A0005 A
T301
001

12
Y

2 P12
P12
1 P11
P11

TWD 111-5A0008 A
T301
001

1 P11
P11
2 P12
P12

TWD 111-5A0009 A
T000
001

1 P11
P11
2 P12
P12
:

0 95/10/30

500

PCS

100.00

77.00

7,700 95/10/30

PCS

100.00

23.00

2,300 95/10/30

200.00

10,000

PCS

100.00

33.33

3,333 95/10/30

PCS

100.00

66.67

6,667 95/10/30

:
111-5A0009 C00001
95/10/13 C00001

0.00

51.00

:
111-5A0008 C00001
95/10/13 C00001

.00

200.00

10,000

PCS

100.00

33.33

3,333 95/10/30

PCS

100.00

66.67

6,667 95/10/30

200.00

10,000

111-5A0010 C00001
TWD
A
1 1111
SET
100.00
10.00
1,000 95/10/13
========================================================================================================================================
:____________ :____________ :____________ :____________
()

TIPTOP GP 6-5

TIPTOP GP

6.4

44

LET tm.wc
= ARG_VAL(7)

63
IF NOT cl_null(tm.wc) THEN
64
CALL r410()
65
ELSE
66
CALL r410_tm(0,0)
67
END IF

function

70 FUNCTION r410_tm(p_row,p_col)

76
OPEN WINDOW r410_w AT p_row,p_col WITH FORM "axm/42f/axmr410"

102
CONSTRUCT BY NAME tm.wc ON oea01,oea02,oea03,oea04,

201 FUNCTION r410()

282
START REPORT r410_rep TO l_name

329 OUTPUT TO REPORT r410_rep(sr.*)

332
FINISH REPORT r410_rep

338 REPORT r410_rep(sr)


378 FORMAT

381
PAGE HEADER

445 ON EVERY ROW

501 ON LAST ROW

529
PAGE TRAILER

TIPTOP GP 6-6

DataSystem

TIPTOP GP

6.4.1
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

DATABASE ds
GLOBALS "../../config/top.global"
DEFINE

tm

DEFINE
DEFINE

RECORD
wc
VARCHAR(500),
s
VARCHAR(03),
t
VARCHAR(03),
u
VARCHAR(03),
a
VARCHAR(01),
b
VARCHAR(01),
c
VARCHAR(01),
more
VARCHAR(01)
END RECORD
g_x
ARRAY[38] OF VARCHAR(40)
g_orderA
ARRAY[3] OF VARCHAR(10)

DEFINE
DEFINE
DEFINE
DEFINE
DEFINE

g_dash
g_i
g_len
g_zz05
g_pageno

VARCHAR(400)
SMALLINT
SMALLINT
VARCHAR(1)
SMALLINT

#
#
#
#

QBE
(INPUT )
(INPUT )
(INPUT )

#
# za Array
#
#
#
#
#
#

Dash line
count/index for any purpose
Report width(79/132/136)
Print tm.wc ?(Y/N)
Report page no

TIPTOP GP 6-7

TIPTOP GP

6.4.2
29 MAIN
30
OPTIONS
31
FORM LINE
FIRST + 2,
32
MESSAGE LINE LAST,
33
PROMPT LINE LAST,
34
INPUT NO WRAP
35
DEFER INTERRUPT
36
37
#-- Background Job --#
38
LET g_pdate = ARG_VAL(1)
# cl_user
39
LET g_towhom = ARG_VAL(2)
# cl_user global ex:g_bgjob
40
LET g_rlang = ARG_VAL(3)
41
LET g_bgjob = ARG_VAL(4)
42
LET g_prtway = ARG_VAL(5)
43
LET g_copies = ARG_VAL(6)
44
LET tm.wc
= ARG_VAL(7)
45
LET tm.s
= ARG_VAL(8)
46
LET tm.t
= ARG_VAL(9)
47
LET tm.u
= ARG_VAL(10)
48
LET tm.a
= ARG_VAL(11)
49
LET tm.b
= ARG_VAL(12)
50
LET tm.c
= ARG_VAL(13)
51
LET tm.more = ARG_VAL(14)
52
53
IF (NOT cl_user()) THEN
54
EXIT PROGRAM
55
END IF
56
57
WHENEVER ERROR CALL cl_err_msg_log
58
59
IF (NOT cl_setup("AXM")) THEN
60
EXIT PROGRAM
61
END IF
62
63
IF NOT cl_null(tm.wc) THEN
#
64
CALL r410()
# run r410()
65
ELSE
#
66
CALL r410_tm(0,0)
#
67
END IF
68 END MAIN

TIPTOP GP 6-8

TIPTOP GP

DataSystem

6.4.3
70 FUNCTION r410_tm(p_row,p_col)
71
DEFINE p_row,p_col
SMALLINT
72
DEFINE l_cmd
VARCHAR(1000)
73
74
#
75
LET p_row = 3 LET p_col = 11
76
OPEN WINDOW r410_w AT p_row,p_col WITH FORM "axm/42f/axmr410"
77
ATTRIBUTE (STYLE = g_win_style)
78
CALL cl_ui_init()
79
CALL cl_opmsg('p')
80
81
#
82
INITIALIZE tm.* TO NULL
83
LET tm2.s1 = '1'
84
LET tm2.u1 = 'Y'
85
LET tm2.u2 = 'N'
86
LET tm2.u3 = 'N'
87
LET tm2.t1 = 'N'
88
LET tm2.t2 = 'N'
89
LET tm2.t3 = 'N'
90
LET tm.a
= '3'
91
LET tm.b
= '3'
92
LET tm.c
= 'N'
93
LET tm.more = 'N'
94
LET g_pdate = g_today
95
LET g_rlang = g_lang
96
LET g_bgjob = 'N'
97
LET g_copies = '1'
98
99
WHILE TRUE
100
101
# QBE
102
CONSTRUCT BY NAME tm.wc ON oea01,oea02,oea03,oea04,
103
oea14,oea15,oea23,oea12,oeahold
104
ON ACTION locale
105
LET g_action_choice = "locale"
#
106
EXIT CONSTRUCT
#
107
# action CONSTRUCT
108
ON IDLE g_idle_seconds
109
CALL cl_on_idle()
110
CONTINUE CONSTRUCT
111
TIPTOP GP 6-9


112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155

TIPTOP GP

ON ACTION exit
LET INT_FLAG = 1
EXIT CONSTRUCT
END CONSTRUCT
IF g_action_choice = "locale" THEN
#
LET g_action_choice = ""
#
CALL cl_dynamic_locale()
CONTINUE WHILE
END IF
IF INT_FLAG THEN
#
LET INT_FLAG = 0
CLOSE WINDOW r410_w
EXIT PROGRAM
END IF
IF tm.wc = ' 1=1' THEN
CALL cl_err('','9046',0) CONTINUE WHILE
END IF

# INPUT
INPUT BY NAME tm2.s1,tm2.s2,tm2.s3,
#
tm2.t1,tm2.t2,tm2.t3,
#
tm2.u1,tm2.u2,tm2.u3,
#
tm.a,tm.b,tm.c,tm.more
WITHOUT DEFAULTS
AFTER FIELD more
#
IF tm.more = 'Y' THEN
CALL cl_repcon(0,0,g_pdate,g_towhom,g_rlang,
g_bgjob,g_time,g_prtway,g_copies)
RETURNING g_pdate,g_towhom,g_rlang,
g_bgjob,g_time,g_prtway,g_copies
END IF
ON ACTION CONTROLZ
CALL cl_show_req_fields()
ON ACTION CONTROLG
CALL cl_cmdask()
AFTER INPUT
LET tm.s = tm2.s1[1,1],tm2.s2[1,1],tm2.s3[1,1]
LET tm.t = tm2.t1,tm2.t2,tm2.t3
LET tm.u = tm2.u1,tm2.u2,tm2.u3
ON IDLE g_idle_seconds
CALL cl_on_idle()

TIPTOP GP 6-10

TIPTOP GP

DataSystem

156
CONTINUE INPUT
157
158
ON ACTION exit
159
LET INT_FLAG = 1
160
EXIT INPUT
161
END INPUT
162
IF INT_FLAG THEN
163
LET INT_FLAG = 0
164
CLOSE WINDOW r410_w
165
EXIT PROGRAM
166
END IF
167
168
# ( Background Job )
169
IF g_bgjob = 'Y' THEN
170
SELECT zz08 INTO l_cmd FROM zz_file
# p_zz
171
WHERE zz01='axmr410'
# UNIX
172
IF SQLCA.sqlcode OR l_cmd IS NULL THEN
173
CALL cl_err('axmr410','9031',1)
174
ELSE
175
LET tm.wc=cl_replace_str(tm.wc, "'", "\"")
176
LET l_cmd = l_cmd CLIPPED,
# UNIX
177
" '",g_pdate CLIPPED,"'",
178
" '",g_towhom CLIPPED,"'",
179
" '",g_lang CLIPPED,"'",
180
" '",g_bgjob CLIPPED,"'",
181
" '",g_prtway CLIPPED,"'",
182
" '",g_copies CLIPPED,"'",
183
" '",tm.wc CLIPPED,"'",
184
" '",tm.s CLIPPED,"'",
185
" '",tm.t CLIPPED,"'",
186
" '",tm.u CLIPPED,"'"
187
CALL cl_cmdat('axmr410',g_time,l_cmd) # UNIX
188
END IF
189
CLOSE WINDOW r410_w
190
EXIT PROGRAM
191
END IF
192
193
CALL cl_wait()
#
194
#
195
CALL r410()
196
ERROR ""
197
END WHILE
198
CLOSE WINDOW r410_w
199 END FUNCTION
TIPTOP GP 6-11

TIPTOP GP

6.4.4
201 FUNCTION r410()
202
DEFINE l_name
VARCHAR(20)
# External(Disk) file name
203
DEFINE l_time
VARCHAR(8)
# Used time for running the job
204
DEFINE l_sql
VARCHAR(1000)
# SQL STATEMENT
205
DEFINE l_za05
VARCHAR(40)
206
DEFINE l_order
ARRAY[5] OF VARCHAR(10)
207
DEFINE sr
RECORD
208
order1 VARCHAR(20),
209
order2 VARCHAR(20),
210
order3 VARCHAR(20),
211
oea01
LIKE oea_file.oea01,
212
oea02
LIKE oea_file.oea02,
213
oea03
LIKE oea_file.oea03,
214
oea032 LIKE oea_file.oea032, #
215
oea04
LIKE oea_file.oea04,
#
216
occ02
LIKE occ_file.occ02,
#
217
gen02
LIKE gen_file.gen02,
218
gem02
LIKE gem_file.gem02,
219
oea23
LIKE oea_file.oea23,
220
oea21
LIKE oea_file.oea21,
221
oea12
LIKE oea_file.oea12,
222
oea25
LIKE oea_file.oea25,
223
oea32
LIKE oea_file.oea32,
224
oeahold LIKE oea_file.oeahold,
225
oeaconf LIKE oea_file.oeaconf,
226
oeb03
LIKE oeb_file.oeb03,
227
oeb04
LIKE oeb_file.oeb04,
228
oeb06
LIKE oeb_file.oeb06,
229
oeb05
LIKE oeb_file.oeb05,
230
oeb12
LIKE oeb_file.oeb12,
231
oeb13
LIKE oeb_file.oeb13,
232
oeb14
LIKE oeb_file.oeb14,
233
oeb15
LIKE oeb_file.oeb15
234
END RECORD
235
236
CALL cl_used('axmr410',l_time,1) RETURNING l_time
237
#
238
SELECT zo02 INTO g_company FROM zo_file WHERE zo01 = g_rlang
239
# (za_file)
240
DECLARE r410_za_cur CURSOR FOR
241
SELECT za02,za05
242
FROM za_file
TIPTOP GP 6-12

DataSystem

TIPTOP GP
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286

WHERE za01 = "axmr410" AND za03 = g_rlang


FOREACH r410_za_cur INTO g_i,l_za05
LET g_x[g_i] = l_za05
END FOREACH
SELECT zz17,zz05 INTO g_len,g_zz05
# &
FROM zz_file WHERE zz01 = 'axmr410'
IF g_len = 0 OR g_len IS NULL THEN LET g_len = 80 END IF
FOR g_i = 1 TO g_len LET g_dash[g_i,g_i] = '=' END FOR
IF g_priv2='4' THEN
#
LET tm.wc = tm.wc clipped," AND oeauser = '",g_user,"'"
END IF
IF g_priv3='4' THEN
#
LET tm.wc = tm.wc clipped," AND oeagrup MATCHES '",g_grup CLIPPED,"*'"
END IF
SELECT
INTO
FROM
WHERE

azi03,azi04,azi05
g_azi03,g_azi04,g_azi05
azi_file
azi01=g_aza.aza17

#
LET l_sql = "SELECT '','','',
",
"
oea01, oea02, oea03, A.occ02, oea04, B.occ02, ",
"
gen02, gem02, oea23, oea21, oea12, oea25, ",
"
oea32, oeahold,oeaconf,oeb03, oeb04, oeb06,",
"
oeb05, oeb12, oeb13,oeb14, oeb15 ",
" FROM oea_file, OUTER occ_file A,OUTER occ_file B,",
"
OUTER gen_file, OUTER gem_file, oeb_file ",
" WHERE oea03 = A.occ01 AND B.occ01 = oea04 ",
" AND gen_file.gen01 = oea14 ",
" AND gem_file.gem01 = oea15 AND oea01=oeb_file.oeb01 ",
" AND oeaconf!='X' ",
" AND ", tm.wc CLIPPED
PREPARE r410_prepare1 FROM l_sql
IF SQLCA.sqlcode != 0 THEN
CALL cl_err('prepare:',SQLCA.sqlcode,1)
EXIT PROGRAM
END IF
DECLARE r410_curs1 CURSOR FOR r410_prepare1
CALL cl_outnam('axmr410') RETURNING l_name # , zz06
START REPORT r410_rep TO l_name
#
LET g_pageno = 0
FOREACH r410_curs1 INTO sr.*
IF SQLCA.sqlcode != 0 THEN
TIPTOP GP 6-13


287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330

TIPTOP GP
CALL cl_err('foreach:',SQLCA.sqlcode,1) EXIT FOREACH
END IF
IF tm.a = '1' AND sr.oeaconf = 'N' THEN #
CONTINUE FOREACH
#
END IF
IF tm.a = '2' AND sr.oeaconf = 'Y' THEN #
CONTINUE FOREACH
#
END IF
IF tm.b = '1' AND cl_null(sr.oeahold) THEN # check
CONTINUE FOREACH
END IF
IF tm.b = '2' AND NOT cl_null(sr.oeahold) THEN
CONTINUE FOREACH
END IF
#
FOR g_i = 1 TO 3
CASE WHEN tm.s[g_i,g_i] = '1' LET l_order[g_i] = sr.oea01
LET g_orderA[g_i]= g_x[30] #
WHEN tm.s[g_i,g_i] = '2' LET l_order[g_i] = sr.oea02
USING 'yyyymmdd'
LET g_orderA[g_i]= g_x[31] #
WHEN tm.s[g_i,g_i] = '3' LET l_order[g_i] = sr.oea03
LET g_orderA[g_i]= g_x[32] #
WHEN tm.s[g_i,g_i] = '4' LET l_order[g_i] = sr.oea04
LET g_orderA[g_i]= g_x[33] #
WHEN tm.s[g_i,g_i] = '5' LET l_order[g_i] = sr.gen02
LET g_orderA[g_i]= g_x[34] #
WHEN tm.s[g_i,g_i] = '6' LET l_order[g_i] = sr.gem02
LET g_orderA[g_i]= g_x[35] #
WHEN tm.s[g_i,g_i] = '7' LET l_order[g_i] = sr.oea23
LET g_orderA[g_i]= g_x[36] #
WHEN tm.s[g_i,g_i] = '8' LET l_order[g_i] = sr.oea12
LET g_orderA[g_i]= g_x[37] #
WHEN tm.s[g_i,g_i] = '9' LET l_order[g_i]=sr.oeahold
LET g_orderA[g_i]= g_x[38] #
OTHERWISE LET l_order[g_i] = '-'
LET g_orderA[g_i] = ' '
#
END CASE
END FOR
LET sr.order1 = l_order[1]
LET sr.order2 = l_order[2]
LET sr.order3 = l_order[3]
OUTPUT TO REPORT r410_rep(sr.*)
#

TIPTOP GP 6-14

TIPTOP GP
331
END FOREACH
332
333
FINISH REPORT r410_rep
334
335
CALL cl_prt(l_name,g_prtway,g_copies,g_len)
336
CALL cl_used('axmr410',l_time,2) RETURNING l_time
END FUNCTION

DataSystem

#
#

TIPTOP GP 6-15


6.4.5
339 REPORT r410_rep(sr)
340
DEFINE l_last_sw
VARCHAR(1)
341
DEFINE sr
RECORD
342
order1
VARCHAR(20),
343
order2
VARCHAR(20),
344
order3
VARCHAR(20),
345
oea01
LIKE oea_file.oea01,
346
oea02
LIKE oea_file.oea02,
347
oea03
LIKE oea_file.oea03,
348
oea032
LIKE oea_file.oea032,
#
349
oea04
LIKE oea_file.oea04,
#
350
occ02
LIKE occ_file.occ02,
#
351
gen02
LIKE gen_file.gen02,
352
gem02
LIKE gem_file.gem02,
353
oea23
LIKE oea_file.oea23,
354
oea21
LIKE oea_file.oea21,
355
oea12
LIKE oea_file.oea12,
356
oea25
LIKE oea_file.oea25,
357
oea32
LIKE oea_file.oea32,
358
oeahold
LIKE oea_file.oeahold,
359
oeaconf
LIKE oea_file.oeaconf,
360
oeb03
LIKE oeb_file.oeb03,
361
oeb04
LIKE oeb_file.oeb04,
362
oeb06
LIKE oeb_file.oeb06,
363
oeb05
LIKE oeb_file.oeb05,
364
oeb12
LIKE oeb_file.oeb12,
365
oeb13
LIKE oeb_file.oeb13,
366
oeb14
LIKE oeb_file.oeb14,
367
oeb15
LIKE oeb_file.oeb15
368
END RECORD,
369
l_rowno
SMALLINT,
370
l_amt_1
DECIMAL(17,5),
371
l_amt_2
DECIMAL(17,5)
372
373
#
374
OUTPUT TOP MARGIN 0
375
LEFT MARGIN 0
376
BOTTOM MARGIN 5
377
PAGE LENGTH 66
378
ORDER BY sr.order1,sr.order2,sr.order3
#
379
#
380
FORMAT
TIPTOP GP 6-16

TIPTOP GP

DataSystem

TIPTOP GP
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424

#
PAGE HEADER
PRINT (g_len-length(g_company))/2 SPACES,g_company #
IF g_towhom IS NULL OR g_towhom = ' '
#
THEN PRINT '';
ELSE PRINT 'TO:',g_towhom;
END IF
PRINT COLUMN (g_len-length(g_user)-5),'FROM:',g_user CLIPPED #
PRINT (g_len-length(g_x[1]))/2 SPACES,g_x[1]
#
PRINT ' '
LET g_pageno = g_pageno + 1
#
PRINT g_x[2] CLIPPED,g_pdate ,' ',TIME,
#
COLUMN 40,g_x[23] CLIPPED,
#
g_orderA[1] CLIPPED,'-',g_orderA[2] CLIPPED,'-',
g_orderA[3] CLIPPED;
CASE tm.a
#
WHEN '1' PRINT '
',g_x[24] CLIPPED;
WHEN '2' PRINT '
',g_x[25] CLIPPED;
WHEN '3' PRINT '
',g_x[26] CLIPPED;
END CASE
CASE tm.b
WHEN '1' PRINT '
',g_x[27] CLIPPED;
WHEN '2' PRINT '
',g_x[28] CLIPPED;
WHEN '3' PRINT '
',g_x[29] CLIPPED;
END CASE
PRINT COLUMN g_len-7,g_x[3] CLIPPED,PAGENO USING '<<<' #
PRINT g_dash[1,g_len]
#
PRINT g_x[11],COLUMN 41,g_x[12],COLUMN 81,g_x[13],
# title
COLUMN 121,g_x[14] CLIPPED
PRINT g_x[15],COLUMN 41,g_x[16] CLIPPED
PRINT g_x[17] CLIPPED, g_x[18] CLIPPED,
g_x[19] CLIPPED, g_x[20] CLIPPED
LET l_last_sw = 'n'
BEFORE GROUP OF sr.order1
IF tm.t[1,1] = 'Y'
THEN SKIP TO TOP OF PAGE
END IF
BEFORE GROUP OF sr.order2
IF tm.t[2,2] = 'Y'
THEN SKIP TO TOP OF PAGE
END IF

TIPTOP GP 6-17


425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468

BEFORE GROUP OF sr.order3


IF tm.t[3,3] = 'Y'
THEN SKIP TO TOP OF PAGE
END IF

TIPTOP GP

BEFORE GROUP OF sr.oea01


SELECT azi03,azi04,azi05
INTO g_azi03,g_azi04,g_azi05
FROM azi_file
WHERE azi01=sr.oea23
LET l_rowno = 1
PRINT COLUMN 1 ,sr.oea01 CLIPPED,
COLUMN 12,sr.oea03[1,6] CLIPPED,
COLUMN 19,sr.oea032 CLIPPED,
COLUMN 28,sr.gen02 CLIPPED,
COLUMN 37,sr.oea23 CLIPPED,
COLUMN 42,sr.oea12 CLIPPED,
COLUMN 53,sr.oea25 CLIPPED,
COLUMN 60,sr.oeahold CLIPPED;

# PRINT
# PRINT
# ';'

ON EVERY ROW
PRINT COLUMN 65,sr.oeb03 USING '##',
COLUMN 68,sr.oeb04 CLIPPED,
COLUMN 89,sr.oeb05 CLIPPED,
COLUMN 94,sr.oeb12 USING '########.##',
COLUMN 106,cl_numfor(sr.oeb13,9,g_azi03),
COLUMN 117,cl_numfor(sr.oeb14,10,g_azi04),
COLUMN 129,sr.oeb15
IF l_rowno = 1 THEN
PRINT COLUMN 1 ,sr.oea02 CLIPPED,
COLUMN 12,sr.oea04 CLIPPED,
COLUMN 19,sr.occ02 CLIPPED,
COLUMN 28,sr.gem02 CLIPPED,
COLUMN 37,sr.oea21 CLIPPED,
COLUMN 53,sr.oea32 CLIPPED,
COLUMN 60,sr.oeaconf CLIPPED;
LET l_rowno = l_rowno + 1
END IF
PRINT COLUMN 68,sr.oeb06 CLIPPED
AFTER GROUP OF sr.order1
IF tm.u[1,1] = 'Y' THEN

TIPTOP GP 6-18

DataSystem

TIPTOP GP
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512

LET l_amt_1 = GROUP SUM(sr.oeb14) #


LET l_amt_2 = GROUP SUM(sr.oeb12) #
PRINT ''
PRINT COLUMN 70,g_orderA[1] CLIPPED,
COLUMN 80,g_x[21] CLIPPED,
COLUMN 94,l_amt_2 USING '########.##',
COLUMN 117,cl_numfor(l_amt_1,10,g_azi05)
PRINT ''
END IF
AFTER GROUP OF sr.order2
#
IF tm.u[2,2] = 'Y' THEN
LET l_amt_1 = GROUP SUM(sr.oeb14)
LET l_amt_2 = GROUP SUM(sr.oeb12)
PRINT ''
PRINT COLUMN 70,g_orderA[2] CLIPPED,
COLUMN 80,g_x[21] CLIPPED,
COLUMN 94,l_amt_2 USING '########.##',
COLUMN 117,cl_numfor(l_amt_1,10,g_azi05)
PRINT ''
END IF
AFTER GROUP OF sr.order3
#
IF tm.u[3,3] = 'Y' THEN
LET l_amt_1 = GROUP SUM(sr.oeb14)
LET l_amt_2 = GROUP SUM(sr.oeb12)
PRINT ''
PRINT COLUMN 70,g_orderA[3] CLIPPED,
COLUMN 80,g_x[21] CLIPPED,
COLUMN 94,l_amt_2 USING '########.##',
COLUMN 117,cl_numfor(l_amt_1,10,g_azi05)
PRINT ''
END IF
ON LAST ROW
# ,
PRINT ''
LET l_amt_1 = SUM(sr.oeb14)
LET l_amt_2 = SUM(sr.oeb12)
PRINT COLUMN 80,g_x[22] CLIPPED,
COLUMN 94,l_amt_2 USING '########.##',
COLUMN 117,cl_numfor(l_amt_1,10,g_azi05)
#
IF g_zz05 = 'Y' THEN
TIPTOP GP 6-19


513
CALL cl_wcchp(tm.wc,'oea01,oea02,oea03,oea04,oea05')
514
RETURNING tm.wc
515
PRINT g_dash[1,g_len]
516
IF tm.wc[001,070] > ' ' THEN
# for 80
517
PRINT g_x[8] CLIPPED,tm.wc[001,070] CLIPPED END IF
518
IF tm.wc[071,140] > ' ' THEN
519
PRINT COLUMN 10,
tm.wc[071,140] CLIPPED END IF
520
IF tm.wc[141,210] > ' ' THEN
521
PRINT COLUMN 10,
tm.wc[141,210] CLIPPED END IF
522
IF tm.wc[211,280] > ' ' THEN
523
PRINT COLUMN 10,
tm.wc[211,280] CLIPPED END IF
524
END IF
525
PRINT g_dash[1,g_len]
526
LET l_last_sw = 'y'
527
PRINT g_x[4],g_x[5] CLIPPED,
528
COLUMN (g_len-9), g_x[7] CLIPPED
529
530
#
531
PAGE TRAILER
#
532
IF l_last_sw = 'n'
533
THEN PRINT g_dash[1,g_len]
534
PRINT g_x[4],g_x[5] CLIPPED,
535
COLUMN (g_len-9), g_x[6] CLIPPED
536
ELSE SKIP 2 LINE
537
END IF
538 END REPORT

TIPTOP GP 6-20

TIPTOP GP

Chapter 7
Genero Debugger

DataSystem
7.1 Debugger
Genero debuggerr.d2
r.d2+

7.1.1
unix r.d2+
r.d2+

apmi252

7.1.2 Debugger

Genero Debugger

TIPTOP GP 7-1

TIPTOP GP DEBUGGER

7.1.3
TopMenu
ToolBar

Auto Variables
Watched Variables Inspect
Current Function function
Current Line
Status
Hide Auto Auto Variables
Hide Watches Watched Variables

TIPTOP GP 7-2

DataSystem
7.2
debugger

7.2.1 Find... Control-f

7.2.2 Find NextF3

7.2.3 Restart Ctrl-Shift-F5


debug Restart debug

7.2.4 Run/Cont F5
Run/Cont

7.2.5 Step Into F11

7.2.6 Step Over F10


Step Into debug

TIPTOP GP 7-3

TIPTOP GP DEBUGGER

7.2.7 Step Out function Shift-F11


debug function function

7.2.8 To Cursor cursor debug


F4
debug
To Cursor debug

7.2.9 Inspect Ctrl+I


valueGrab Variable
Locals function Globals
global Add Watch debug
debug Watched Variables

7.2.10 Toggle debug F9


Toggle
Breakpoint

TIPTOP GP 7-4

DataSystem
7.2.11 Execute Debugger CommandCtrl+D
TopMenu Run
debug Show all commands

7.2.12 Stack Ctrl+S


TopMenu View
debug cl_null()
cl_null() function
function

TIPTOP GP 7-5

TIPTOP GP DEBUGGER

7.2.13 Breakpoints Ctrl+B


TopMenu View

Breakpoint
-Delete breakpointDelete All
Jump ToHighlight

Add breakpoint function name


functionBrowse Functions
function

Breakpoints TopMenu Breakpoints

TIPTOP GP 7-6

DataSystem
7.2.14 ModulesCtrl+M
TopMenu Modules 4gl

7.2.15 FunctionsCtrl+U
TopMenu Functions
Function name

TIPTOP GP 7-7

TIPTOP GP DEBUGGER

7.2.16 Global VariablesCtrl+G


TopMenu Global Variables

7.2.17 Local VariablesCtrl+L


TopMenu Local Variables
Function

7.2.18 WatchesCtrl+W
TopMenu Watches
0

TIPTOP GP 7-8

Appendix

TIPTOP GP

DataSystem
A.1

cl_act_del_tmp_path

cl_load_act_list.4gl
ActionList

None

None

CALL cl_act_del_tmp_path()

cl_anykey

cl_anykey.4gl

p_sw

None

CALL cl_anykey()

Not used

cl_arful

cl_arful.4gl
buffer size too small

p_row,p_col
p_arrno :

TRUE / FALSE

IF cl_arful(p_row,p_col) THEN

cl_batch_proc

cl_batch_proc.4gl

ps_headers

None

LET ls_headers = "img01,img02,img03,img04,imk09"


CALL cl_batch_proc(ls_headers)

Table Header

TIPTOP GP A-1

TIPTOP GP

cl_browse_dir

cl_transfer_file.4gl
Windows

None
STRING
NULL

LET dir = cl_browse_dir()

cl_browse_file

cl_transfer_file.4gl
Windows

None
STRING
NULL

LET file = cl_browse_file()

cl_chg_win_title

cl_chg_win_title.4gl
Window Title

ps_code

None

CALL cl_chg_win_title( ps_code)

cl_chk_act_auth

cl_chk_act_auth.4gl
g_action_choice ACTION

None
g_action_choice Action ID

TRUE/FALSE

LET g_action_choice=accept
IF cl_chk_act_auth() THEN

TIPTOP GP A-2

DataSystem

cl_chk_data_continue

cl_chk_data_continue.4gl

ps_source

TRUE/FALSE

IF NOT cl_chk_data_continue(g_fgf.fgf01[5,10]) THEN

cl_chk_err_setting

cl_err_msg.4gl

None

None

CALL cl_chk_err_setting()

cl_chkabf

cl_chkabf.4gl

p_priv

TRUE / FALSE

cl_choice

cl_choice.4gl

l_msg

l_choice

CALL cl_choice(l_msg) RETURNING g_choice

cl_close

cl_close.4gl
"(Y/N):"
"(Y/N):"

p_row,p_col,p_old_acticode

TRUE / FALSE

IF cl_close(p_row,p_col,p_old_acticode) THEN

TIPTOP GP A-3

TIPTOP GP

cl_cmdask

cl_cmdask.4gl

None

None

CALL cl_cmdask()

cl_cmdat

cl_cmdat.4gl
UNIX

p_time
p_cmd

None

CALL cl_cmdat(p_code,p_time,p_cmd)

UNIX

cl_cmdrun

cl_cmdrun.4gl
UNIX

ps_cmd

None

CALL cl_cmdrun('axmq450')

cl_cmdrun_wait

cl_cmdrun.4gl
UNIX

ps_cmd

None

CALL cl_cmdrun_wait('axmq450')

cl_cmmsg

cl_cmmsg.4gl
COMMIT WORK

p_code

None

CALL cl_cmmsg(1)

TIPTOP GP A-4

DataSystem

cl_conf

cl_conf.4gl
MESSAGE CODE ,
"......(Y/N):", 60 Byte

p_row,p_col,p_msgcode

TRUE / FALSE

IF cl_conf(p_row,p_col,p_msgcode) THEN

cl_conf2

cl_conf2.4gl
MESSAGE CODE
"......(1/2/3/4):", 60 Byte

p_row,p_col,p_msgcode,p_velue

TRUE / FALSE

IF cl_conf2(p_row,p_col,p_msgcode) THEN

cl_conf3

cl_conf3.4gl
MESSAGE CODE ,

p_row,p_col,p_msgcode

TRUE / FALSE

IF cl_conf(p_row,p_col,p_msgcode) THEN

cl_confirm

cl_confirm.4gl

ps_msg

TRUE / FALSE

IF (cl_confirm("agl-021")) THEN

cl_cont

cl_cont.4gl
"(Y/N):"

p_row,p_col

TRUE / FALSE

IF cl_cont(p_row,p_col) THEN

TIPTOP GP A-5

TIPTOP GP

cl_create_4sm

cl_create_4sm.4gl
udmtree StartMenu

pc_menu_root
pi_rebuild

None

CALL cl_create_4sm("m01", TRUE)

StartMenu
4sm

cl_create_qry

cl_create_qry.4gl

None
g_parameter.*
iINPUT
g_qryparam.state
cCONSTRUCT

g_qryparam.form
gab
CONSTRUCT
g_qryparam.construct
YN

g_qryparam.where

g_qryparam.pagecount
3
g_qryparam.default1
9
g_qryparam.arg1
g_qryparam.multiret_index
1

g_qryparam.multiret
ORDER BY ( DESC)
g_qryparam.ordercons

ms_ret1,ms_ret2,ms_ret3

CALL cl_create_qry() RETURNING g_oea.oea14

cl_days

cl_days.4gl

p_year
p_month

l_days

LET l_days=cl_days(p_yy,p_mm)

TIPTOP GP A-6

DataSystem

cl_del_data

cl_prt.4gl
TEMP table

p_table table name

None

CALL cl_del_data(l_table)

cl_delb

cl_delb.4gl
"(Y/N):"

p_row,p_col

TRUE / FALSE

IF cl_delb(p_row,p_col) THEN

cl_delete

cl_delete.4gl

None

TRUE / FALSE

IF (cl_delete()) THEN

cl_delh

cl_delh.4gl
"(Y/N):"
(for )

p_row,p_col

TRUE / FALSE

IF cl_delh(p_row,p_col) THEN

cl_delh1

cl_delh1.4gl
"(Y/N):"
(for )

p_row,p_col

TRUE / FALSE

IF cl_delh1(p_row,p_col) THEN

TIPTOP GP A-7

TIPTOP GP

cl_detail_input_auth

cl_detail_input_auth.4gl
insert delete

Insert Delete

TRUE / FALSE

LET l_allow_insert = cl_detail_input_auth("insert")

cl_digcut

cl_digcut.4gl
.

p_value
p_digit

p_value

LET a = cl_digcut(p_value,p_digit)

cl_doc

cl_doc

None

None

CALL cl_doc()

cl_dynamic_locale

cl_dynamic_locale.4gl

None

None

CALL cl_dynamic_locale()

cl_end

cl_end.4gl
",:"

p_row,p_col

None

CALL cl_end(p_row,p_col)

TIPTOP GP A-8

DataSystem

cl_end2

cl_end2.4gl

p_code

TRUE / FALSE

CALL cl_end2(1) RETURNING l_flag

1 2

cl_err

cl_err.4gl
24

p_msg
err_code
()
p_n
(CR)
0 :(CR) 1:(CR)
> 1 :
-1 : TEXT MODE '0'
GUI MODE '1'

None

CALL cl_err(p_msg,err_code,p_n)

cl_err_msg

cl_err_msg.4gl

ps_title
ps_err_code
ps_replace_arg
pi_idle_sec

None

CALL cl_err_msg("Warning","1000",NULL,g_aza.aza37)

cl_err_msg_log

cl_err_msg.4gl

title

|
idle

None

None

WHENEVER ERROR CALL cl_err_msg_log

TIPTOP GP A-9

TIPTOP GP

cl_exp

cl_exp.4gl
"(Y/N):"
"(Y/N):"
(for )

p_row,p_col,p_old_acticode

TRUE / FALSE

IF cl_exp(p_row,p_col,p_old_acticode) THEN

cl_export_to_excel

cl_export_to_excel.4gl
MS Excel

ui.Interface.getRootNode(),
om.DomNode
base.TypeInfo.create( object_id ) om.DomNode
t1
om.DomNode
t2
om.DomNode

None

CALL cl_export_to_excel(ui.Interface.getRootNode(),
base.TypeInfo.create(g_gem),'','')

cl_facfor

cl_facfor.4gl
INPUT DECLIAM(16,8) 9 .
12345678 , '^12345678'
1234567 , '1234567.0'
123456
, '123456.00'
12345.67 , '12345.670'
1.234567 , '1.2345670'
.1234567 , '.12345670'

p_fac

l_str

FORMAT , CHAR RETURN

LET a = cl_facfor(p_fac); PRINT a


.or. print cl_facfor(p_fac)

TIPTOP GP A-10

DataSystem

cl_fglgui

cl_user.4gl

None
li_gui_type

LET g_gui_type = cl_fglgui()

cl_file_2_module

cl_file_2_module.4gl
4gl Module

ms_prog
mc_type S: D:

mc_module /

SELECT zz011

cl_fldhlp

cl_fldhlp.4gl
( 4 WINDOW )

p_field_name

None

CALL cl_fldhlp(p_field_name)

cl_flow_mail

cl_flow_notify.4gl
JavaMail

ps_pre_subject
pr_mail_info

None

CALL cl_flow_mail("Work flow notify", lr_mail_info.*)

Mail
Mail

TIPTOP GP A-11

TIPTOP GP

cl_flow_notify

cl_flow_notify.4gl

ps_doc_no
pc_state

None

CALL cl_flow_notify(g_oea.oea01, 'I')

I.U.D.Y.

cl_forupd_sql

cl_forupd_sql.4gl
SELECT ... FOR UPDATE

ps_forupd_sql

SQL

ps_forupd_sql

SQL

LET g_forupd_sql = cl_forupd_sql(g_forupd_sql)

cl_get_act_path

cl_load_act_list.4gl
ActionList

ps_prog

ls_path

ActionList

cl_getClientIP

cl_transfer_file.4gl
Client IP

None
ls_client

LET gs_client = cl_getClientIP()

IP

cl_getmsg

cl_getmsg.4gl
(ze_file).

p_code
p_lang

l_msg .

LET g_msg = cl_getmsg(p_code,p_lang)

TIPTOP GP A-12

DataSystem

cl_init_batch_var

cl_batch_proc.4gl

None

None

CALL cl_init_batch_var()

cl_init_qry_var

cl_create_qry.4gl

None

None

CALL cl_init_qry_var()

cl_jmail

cl_jmail.4gl
javamail function mail

None g_xml.*
Javamail
XML (
g_xml.file
$TEMPDIR )
g_xml.mailserver MAIL SERVER IP()
g_xml.serverport MAIL SERVER Port()
MAIL SERVER User()
g_xml.user
MAIL SERVER User Password()
g_xml.passwd
()
g_xml.subject

g_xml.body

g_xml.attach
(
g_xml.recipient
)

g_xml.cc

g_xml.bcc

g_xml.sender

None

CALL cl_jmail()

TIPTOP GP A-13

TIPTOP GP

cl_jmaillist

cl_jmail.4gl
mail address CALL cl_jmaillist()

None

g_str

LET g_xml.recipient =cl_jmaillist()

mail-address

cl_load_act_list

cl_load_act_list.4gl
ActionList

ps_prog

None

CALL cl_load_act_sys("axmt410")

cl_load_style_list

cl_load_style_list.4gl
StyleList

ps_prog

None

CALL cl_load_style_list(NULL)

cl_mail

cl_mail.4gl
sma106
mail Y
MAIL

p_azo

None

CALL cl_mail(l_azo.*)

azo_file.*

cl_msgany

cl_msgany.4gl
, .

p_row,p_col,p_msg

None

CALL cl_prompt(p_row,p_col,l_msg)

TIPTOP GP A-14

DataSystem

cl_navigator_setting

cl_navigator_setting.4gl
ToolBar

pi_curr_index Cursor
pi_row_count

None

CALL cl_navigator_setting( g_curs_index, g_row_count )

cl_null

cl_null.4gl
Null

ps_source

TRUE / FALSE

IF NOT cl_null(g_pmx[l_ac].pmx02) THEN

cl_numchk

cl_numchk.4gl
'p_str'

p_str
p_len

TRUE / FALSE

IF cl_numchk(p_str,p_len) THEN

cl_numfor

cl_numfor.4gl
FORMAT, .
0 , 0.00, .

p_value
p_len

l_str

LET a = cl_numfor(amt,17); PRINT a

FORMAT , CHAR RETURN

TIPTOP GP A-15

TIPTOP GP

cl_numfor3

cl_numfor3.4gl

p_value

l_str

LET a = cl_numfor3(amt,13); PRINT a

FORMAT , CHAR RETURN

cl_on_idle

cl_on_idle.4gl
ON IDLE

None

None

CALL cl_on_idle()

cl_opmsg

cl_opmsg.4gl
,
FUNCTION

p_op_type ,a:,u:,q:
b:,w:,
p:,

None

CALL cl_opmsg('q')

cl_open_doc

cl_client_app.4gl
, client

doc STRING
TRUE / FALSE,

LET status = cl_open_doc("C:/Temp/abc.xls")

TIPTOP GP A-16

DataSystem

cl_open_prog

cl_client_app.4gl
(optional)

prog STRING, argu STRING


TRUE / FALSE,
LET status = cl_open_prog("C:/App/MyApp.exe", "")
LET status = cl_open_prog("C:/App/MyApp.exe", "123")

cl_open_url

cl_client_app.4gl
URL client (IE)

url STRING
TRUE / FALSE,

LET status = cl_open_url("http://www.yahoo.com.tw")

cl_outnam

cl_outnam.4gl
(Disk File Name)

p_code

p_name

CALL cl_outnam(p_code) RETURNING l_name

cl_pause

cl_pause.4gl
,

None

None

IF cl_pause() THEN

cl_progress_bar

cl_progress_bar.4gl

pi_total_count

None

CALL cl_progress_bar(3)

TIPTOP GP A-17

TIPTOP GP

cl_progressing

cl_progress_bar.4gl

ps_log

None

CALL cl_progressing("Create : ")

cl_prompt

cl_prompt.4gl
l_msg

p_row,p_col,l_msg

TRUE / FALSE

IF cl_prompt(p_row,p_col,l_msg) THEN

cl_prt

cl_prt.4gl

(1) -1 by lp default destination


(2-9) 2-9 by 'lp -dpr2' or 'lp -dpr3' ...
(L) by p000
(O)

(V) View-320
(J) Java Mail
(H)

p_name
p_prtway
p_copies
p_len

None

CALL cl_prt(l_name,' ','1',g_len)

(80/132)

cl_prt_browser

cl_prt.4gl
Java Client

None

None

CALL cl_prt_browser()

TIPTOP GP A-18

DataSystem

cl_prt_c

cl_prt.4gl
cut-page

p_name

None

CALL cl_prt_c(p_name)

cl_prt_chkbrowser

cl_prt.4gl

None

TRUE / FALSE

IF cl_prt_chkbrowser() THEN

cl_prt_cs1

cl_prt.4gl
4GL construct sql crystal report

p_rptname ID
p_sql
SQL
p_title2

TRUE / FALSE

IF cl_prt_cs1('axmr720_c',l_sql,g_x[1])='0 ' THEN

cl_prt_cs2

cl_prt.4gl
report file temptable crystal report

p_rptname ID
p_sql
SQL
p_title2

TRUE / FALSE

CALL cl_prt_cs2()

TIPTOP GP A-19

TIPTOP GP

cl_prt_cs3

cl_prt.4gl
4GL report temptable crystal report

p_rptname ID
p_sql
SQL
p_title2

TRUE / FALSE

CALL cl_prt_cs3('axmr213',l_sql,g_x[1]) RETURNING g_i

cl_prt_temptable

cl_prt.4gl
Temp Table

p_prog
p_sql
SQL

l_table

LET l_table = cl_prt_temptable('axmr213',g_sql)

Temp Table Name

cl_prt_p

cl_prt.4gl
pdf

p_name ID

None

CALL cl_prt_p(p_name)

cl_prt_webp

cl_prt.4gl
Java Client Web Printer

None

None

CALL cl_prt_webp()

TIPTOP GP A-20

DataSystem

cl_prt_url

cl_prt.4gl
Java Client

p_url

None

CALL cl_prt_url(l_url)

cl_prtmsg

cl_prtmsg.4gl

p_row,p_col,p_code,p_lang

TRUE / FALSE

CALL cl_prtmsg(16,11,'axm-293',g_lang) RETURNING l_sw

cl_qzx

cl_qzx.4gl
g_user .

p_row p_col
p_key
p_key

CALL cl_qzx(p_row,p_col,p_key) RETURNING p_key

cl_qzz

cl_qzz.4gl

pi_multi_sel
pi_need_cons
ps_default1

construct

ms_ret1

CALL cl_qzz(FALSE,TRUE, )

cl_rbmsg

cl_rbmsg.4gl
ROLLBACK WORK

p_code

None

CALL cl_rbmsg(1)

TIPTOP GP A-21

TIPTOP GP

cl_say

cl_say.4gl
SAY TOTAL

p_amt (Decimal value of money)


p_len (String length of SAY1 and SAY2)

l_say1 (Say total string-1 of p_amt)


l_say2 (Say total string-2 of p_amt)

CALL cl_say(p_amt,p_len)
RETURNING l_say1,l_say2

cl_set_act_lang

cl_load_act_list.4gl
ActionList

pc_lang

None

CALL cl_set_act_lang(NULL)

cl_set_act_visible

cl_set_act_visible.4gl
/ Action

ps_act_names
pi_visible

None

CALL cl_set_act_visible("accept,cancel", FALSE)

TRUEFALSE

cl_set_combo_items

cl_set_combo_items.4gl
ComboBox Item

ps_field_name
ps_values
ps_items

None

CALL cl_set_combo_items("oea08", "1,2", "Local Order,Export


Order")

TIPTOP GP A-22

ComboBox
Item
Item

DataSystem

cl_set_combo_lang

cl_set_combo_lang.4gl
ComboBox

ps_field_name

None

CALL cl_set_combo_lang("oea08")

ComboBox

cl_set_combo_module

cl_set_combo_module.4gl
ComboBox

ps_field_name
pi_type

None

CALL cl_set_combo_module("oea08",0)

ComboBox
pi_type = 1

cl_set_comp_att_text

cl_set_comp_att_text.4gl
Label text

ps_fields
ps_att_value

None

CALL cl_set_comp_att_text("oma16,Order Number)

cl_set_comp_entry

cl_set_comp_entry.4gl

ps_fields
pi_entry

None

CALL cl_set_comp_entry("m01,m03,m07", FALSE)

TRUEFALSE

TIPTOP GP A-23

TIPTOP GP

cl_set_comp_font_color

cl_set_comp_font_color.4gl

ps_fields
ps_color

None

CALL cl_set_comp_font_color("oea01,oea04", "red")

black,blue,cyan,...

cl_set_comp_required

cl_set_comp_required.4gl

ps_fields
pi_required

None

CALL cl_set_comp_required("m01,m03,m07", TRUE)

TRUEFALSE

cl_set_comp_visible

cl_set_comp_visible.4gl
/

ps_fields
pi_visible

None

CALL cl_set_comp_visible("oea01,oea04", FALSE)

TRUEFALSE

cl_set_config_path

cl_ui_init.4gl
config

None

None

CALL cl_set_config_path()

cl_set_detail_auth_string

cl_detail_input_auth.4gl
detail insert/delete

ps_detail_auth lib

None

TIPTOP GP A-24

DataSystem

cl_set_field_pic

cl_set_field_pic.4gl

ps_confirm
ps_approve
ps_post
ps_close
ps_void
ps_valid

None

CALL cl_set_field_pic(g_oea.oeaconf,g_approve,"","",g_void,"")

cl_set_focus_form

cl_set_focus_form.4gl

ui.Interface.getRootNode(),
fld_name
frm_name

CALL cl_set_focus_form(ui.Interface.getRootNode())
RETURNING fld_name, frm_name

cl_set_locale_frm_name

cl_ui_init.4gl

om.DomNode

ps_frm_name

None

CALL cl_set_locale_frm_name("aimt370")

cl_set_proc_result

cl_batch_proc.4gl

pr_curr_proc
pi_success

None

CALL cl_set_proc_result(ga_batch[li_i].*, TRUE)

TIPTOP GP A-25

TIPTOP GP

cl_set_win_title

cl_set_win_title.4gl
OPEN WINDOW FORM title

lc_frm_name

None

CALL cl_set_win_title(aimt370)

cl_setup

cl_setup.4gl

ps_module

TRUE / FALSE

CALL cl_setup("AXM")

cl_show_help

cl_show_help.4gl

None

None

CALL cl_show_help()

cl_softscore

cl_softscore.4gl

Dump AUI tree and convert to .sco file format for SoftScore

None

None

CALL cl_softscore()

cl_softscore_check

cl_softscore.4gl

Check client environment; if SoftScore has been installed


IMPORTANTMUST CALL BEFORE cl_softscore()

None

None

CALL cl_softscore_check()

TIPTOP GP A-26

DataSystem

cl_show_req_fields

cl_show_req_fields.4gl

None

None

CALL cl_show_req_fields()

cl_show_success_win

cl_batch_proc.4gl

ps_headers

None

CALL cl_show_success_win(ls_headers)

TableHeader

cl_smuchk

cl_smuchk.4gl
g_user p_slip p_priv

None

TRUE / FALSE

cl_startRcpDaemon

cl_transfer_file.4gl
frontCall Rcp

None

TRUE / FALSE

IF NOT cl_startRcpDaemon() THEN

cl_stopRcpDaemon

cl_transfer_file.4gl
frontCall Rcp

None

TRUE / FALSE

IF NOT cl_stopRcpDaemon() THEN

TIPTOP GP A-27

TIPTOP GP

cl_sure

cl_sure.4gl
"(Y/N):"

p_row,p_col

TRUE / FALSE

IF cl_sure(p_row,p_col) THEN

cl_sure3

cl_sure3.4gl
"(Y/N)?"

p_row,p_col

TRUE / FALSE

IF cl_sure3(p_row,p_col) THEN

cl_transferPrepare

cl_transfer_file.4gl

None

None

CALL cl_transferPrepare()

cl_ui_init

cl_ui_init.4gl

None

None

CALL cl_ui_init()

cl_ui_locale

cl_ui_locale.4gl

pc_frm_name

None

CALL cl_ui_locale()

TIPTOP GP A-28

NULL:g_prog

DataSystem

cl_upload_file

cl_transfer_file.4gl
Client Server

source STRING, destination STRING

TRUE/FALSE

(1) LET status = CALL cl_download_file("C:/Temp/a.doc",


"/tmp")
Client C:/Temp/a.doc Server /tmp

(2)LET status = CALL cl_download_file("C:/Temp/a.doc",


"/tmp/b.doc")
Client C:/Temp/a.doc
Server /tmp/b.doc

cl_upsw

cl_upsw.4gl
" (Y/N)? "
" (Y/N)? "

p_row,p_col
p_upsw N:
Y:

TRUE / FALSE

IF cl_upsw(p_row,p_col,p_upsw) THEN

cl_used

cl_used.4gl

p_code -
time1 -
sw
- 1:, RETURN TIME
2., INSERT () TO zu_file

time

CALL cl_used(p_code,time1,sw)
CALL cl_used('aom2020','09:30','1')
CALL cl_used('aom2020','09:40','2')

TIPTOP GP A-29

TIPTOP GP

cl_user

cl_user.4gl

None

TRUE / FALSE

CALL cl_user()

cl_void

cl_void.4gl
"(Y/N):"
"(Y/N):"

p_row,p_col,p_old_acticode

TRUE / FALSE

IF cl_void(p_row,p_col,p_old_acticode) THEN

cl_wait

cl_wait.4gl

None

None

CALL cl_wait()

cl_wcchp

cl_wcchp.4gl
WC (Changing pattern in p_wc)

p_wc VARCHAR(300)
p_oldp VARCHAR(60)

p_newwc VARCHAR(300) New where condition after changed

CALL cl_wcchp(p_wc,p_oldp) returning p_wc


CALL cl_wcchp(l_wc,'gca01,gca02,gca03,gca09,gca30')
RETURNING p_wc

TIPTOP GP A-30

Where condition
Pattern (column list) to be changed

DataSystem

cl_wcshow

cl_wcshow.4gl
RDSQL 20,21,22,23

p_wc (Where Condition clause)

None

CALL cl_wcshow(p_wc)

cl_wcsub

cl_wcsub.4gl
1.TEXT
mode:p_str "'
2.GUI/WEB mode:p_str '"

p_str

l_str

LET tm.wc = cl_wcsub(tm.wc)

TIPTOP GP A-31

TIPTOP GP A-32

TIPTOP GP

You might also like