emea natural programmers user group manipulating the natural source area ralph zbrog len c onsulting...

56
EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN CONSULTING LLC [email protected] June 2004

Upload: jaelyn-hanke

Post on 14-Dec-2015

220 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

EMEA Natural Programmers User Group

Manipulating the Natural Source Area

Ralph ZbrogLEN CONSULTING LLC

[email protected]

June 2004

Page 2: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

2

• Uses of the Source Work Area

• SAG user exits

Manipulating the Natural Source Area

Overview

Page 3: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

3

• Editing Natural objects

• On-line debugging

• Debugging NATRJE

Uses of the Source Work Area

• Utility customization

• As a temp file

Page 4: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

4

• Write trace data within an on-line module

• Printer (0) for production report

• INPUT/REINPUT

Uses of the Source Work Area

On-line Debugging

• Appends to current contents of SWA

• Potential NAT0886 ESIZE overflow error

Page 5: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

5

• Sample code

Uses of the Source Work Area

On-line Debugging

> run > + Program NC-SW-01 Lib ZZUTILS All ....+....1....+....2....+....3....+....4....+....5....+.Mode Structured. 0010 DEFINE DATA LOCAL 0020 1 #I (I4) 0030 END-DEFINE 0040 * 0050 FORMAT (3) LS=70 0060 DEFINE PRINTER (3) OUTPUT 'SOURCE' 0070 * 0080 WRITE 'Start' 0090 FOR #I = 1 4 0100 WRITE (3) 'AbCdEf' #I 0110 END-FOR 0120 WRITE 'End' 0130 END 0140 0150 0160 0170 0180 0190 0200 ....+..Current Source Size: 209 Char. Free: 223600 ...+... S 13 L 1

Page 6: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

6

• Report

Uses of the Source Work Area

On-line Debugging

Page 1 05/02/04 14:26:43 Start End

NEXT e LIB=ZZUTILS

Page 7: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

7

• Result

Uses of the Source Work Area

On-line Debugging

> > + Program NC-SW-01 Lib ZZUTILS All ....+....1....+....2....+....3....+....4....+....5....+.Mode Structured. 0010 DEFINE DATA LOCAL 0020 1 #I (I4) 0030 END-DEFINE 0040 * 0050 FORMAT (3) LS=70 0060 DEFINE PRINTER (3) OUTPUT 'SOURCE' 0070 * 0080 WRITE 'Start' 0090 FOR #I = 1 4 0100 WRITE (3) 'AbCdEf' #I 0110 END-FOR 0120 WRITE 'End' 0130 END 0000 */ 0000 Page 1 05/02/04 14:27:14 0000 0000 AbCdEf 1 0000 AbCdEf 2 0000 AbCdEf 3 0000 AbCdEf 4 ....+..Current Source Size: 380 Char. Free: 223429 ...+... S 20 L 1

Page 8: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

8

• After ENTER

Uses of the Source Work Area

On-line Debugging

> > + Program NC-SW-01 Lib ZZUTILS All ....+....1....+....>>> Source has been updated <<<..+.Mode Structured. 0010 DEFINE DATA LOCAL 0020 1 #I (I4) 0030 END-DEFINE 0040 * 0050 FORMAT (3) LS=70 0060 DEFINE PRINTER (3) OUTPUT 'SOURCE' 0070 * 0080 WRITE 'Start' 0090 FOR #I = 1 4 0100 WRITE (3) 'AbCdEf' #I 0110 END-FOR 0120 WRITE 'End' 0130 END 0000 */ 0000 PAGE 1 05/02/04 14:27:14 0000 ABCDEF 1 0000 ABCDEF 2 0000 ABCDEF 3 0000 ABCDEF 4 0010 ....+..Current Source Size: 376 Char. Free: 223433 ...+... S 19 L 1

Page 9: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

9

• SET TYPE T; EX NC-SW-01

Uses of the Source Work Area

On-line Debugging

> > + Text Lib ZZUTILS All ....+....1....+....2....+....3....+....4....+....5....+.Mode Structured. 0000 */ 0000 Page 1 05/02/04 14:28:50 0000 0000 AbCdEf 1 0000 AbCdEf 2 0000 AbCdEf 3 0000 AbCdEf 4 0010 0020 0030 0040 0050 0060 0070 0080 0090 0100 0110 0120 0130 ....+..Current Source Size: 171 Char. Free: 223638 ...+... S 7 L 1

Page 10: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

10

• Save results for comparison or later review

• Allows scan and page-up/page-down

• Doesn’t interfere with production output or logic

Uses of the Source Work Area

On-line Debugging

Page 11: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

11

Uses of the Source Work Area

Questions?

Page 12: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

12

• JCL submitted to internal reader via NATRJE

• Some errors result in no JES listings

• Invalid JOB card

Uses of the Source Work Area

Debugging NATRJE

• Invalid password

• Invalid account codes

Page 13: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

13

• ZZTDOC

Uses of the Source Work Area

Debugging NATRJE

ZZTDOC LEN Consulting LLC 05/02/2004 17:52 Natural Utilities ZZUtils v2.1 Generate Code Walkthrough Document Profile: ZZUTIL/RALPH Old: Env: _ Library: ________ Member: ________ Type: _ PDS: ____________________________________________ New: Env: _ Library: ________ Member: ________ PDS: ____________________________________________ Set: Library: ________ Member: ________ Listing: Compare: _ Context: __ Delta: _ Summary: _ Ada Cmd: _ ILRC: _ Type: _ Print: ID: ________ Class: _ Hold: _ Copies: _ Sysout: _ File: Disp: _ Name: ______________________________________________________ Job: Suffix: _ Account: ________ Info: ____ Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Vrfy Help Auth Exit SetV MPswd Membr JCL Sub Set Verification will clear the editor work area

Page 14: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

14

• ZZTDOC

Uses of the Source Work Area

Debugging NATRJE

> > + Text Lib ZZUTILS Top ....+....1....+....2....+....3....+....4....+....5....+.Mode Structured. 0010 //RGZTDOC JOB (abcdef,abcd,RGZ),'TDOC: XXCUSTOM', 0020 // MSGLEVEL=(1,1), 0030 // USER=STRGZ,PASSWORD=$JPSWD$, 0040 // MSGCLASS=N,NOTIFY=RGZ 0050 //*MAIN JOBAFF=MPM,CLASS=X 0060 //FORM OUTPUT FORMS=LASER 0070 * 0080 * 0090 //******** NATURAL OLD SOURCE ******** 0100 //NATOLDP0 EXEC NATBT, 0110 // TIME=50,SYSOUT=X, 0120 // PRM='IM=D,AUTO=ON,MADIO=0,MAXCL=0,MT=0' 0130 //CMPRINT DD SYSOUT=X,OUTPUT=*.FORM 0140 //CMWKF01 DD DSN=&&OLDLST0,DISP=(NEW,PASS,DELETE), 0150 // UNIT=SYSDA,RECFM=FB,LRECL=133,SPACE=(CYL,(5,5)) 0160 //SYSIN DD * 0170 %* 0180 LOGON ZZUTILS 0190 %U 0200 %D ....+..Current Source Size: 1254 Char. Free: 222267 ..+... S 57 L 1

Page 15: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

15

• ZZTDOC

Uses of the Source Work Area

Debugging NATRJE

> > + Text Lib ZZUTILS ....+....1....+....2....+....3....+....4....+....5....+.Mode Structured. 0210 %Q 0220 ZZPUNCH ZZUTIL,ZZCUSTOM,ZZCUSTOM,N,N,N,N 0230 %K03 0240 FIN 0250 /* 0260 //* 0270 //* 0280 //******** NATURAL NEW SOURCE ******** 0290 //NATNEWP0 EXEC NATBT, 0300 // TIME=50,SYSOUT=X, 0310 // PRM='IM=D,AUTO=ON,MADIO=0,MAXCL=0,MT=0' 0320 //CMPRINT DD SYSOUT=X,OUTPUT=*.FORM 0330 //CMWKF01 DD DSN=&&NEWLST0,DISP=(NEW,PASS,DELETE), 0340 // UNIT=SYSDA,RECFM=FB,LRECL=133,SPACE=(CYL,(5,5)) 0350 //SYSIN DD * 0360 %* 0370 LOGON ZZUTILS 0380 %U 0390 %D 0400 %Q ....+..Current Source Size: 1254 Char. Free: 222267 ..+... S 57 L 21

Page 16: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

16

• ZZTDOC

Uses of the Source Work Area

Utility Customization

ZZTDOC LEN Consulting LLC 05/02/2004 17:52 Natural Utilities ZZUtils v2.1 Generate Code Walkthrough Document Profile: ZZUTIL/RALPH Old: Env: _ Library: ________ Member: ________ Type: _ PDS: ____________________________________________ New: Env: _ Library: ________ Member: ________ PDS: ____________________________________________ Set: Library: ________ Member: ________ Listing: Compare: _ Context: __ Delta: _ Summary: _ Ada Cmd: _ ILRC: _ Type: _ Print: ID: ________ Class: _ Hold: _ Copies: _ Sysout: _ File: Disp: _ Name: ______________________________________________________ Job: Suffix: _ Account: ________ Info: ____ Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Vrfy Help Auth Exit SetV MPswd Membr JCL Sub Set Verification will clear the editor work area

Page 17: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

17

• ZZTDOC

Uses of the Source Work Area

Utility Customization

ZZTDOC LEN Consulting LLC 05/02/2004 17:54 Natural Utilities ZZUtils v2.1 Generate Code Walkthrough Document Profile: ZZUTIL/RALPH Old: Env: P Library: ZZUTIL__ Member: ________ Type: N PDS: RALPH.PROD.JCL______________________________ New: Env: D Library: ZZUTIL__ Member: ________ PDS: RALPH.DEVL.JCL______________________________ Set: Library: ________ Member: ________ Listing: Compare: C Context: 10 Delta: N Summary: N Ada Cmd: Y ILRC: Y Type: L Print: ID: LASER___ Class: X Hold: Y Copies: 1 Sysout: N File: Disp: O Name: RALPH.TDOCLIST________________________________________ Job: Suffix: T Account: 123456__ Info: 1234 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Vrfy Help Auth Exit SetV MPswd Membr JCL Sub Set Verification will clear the editor work area

Page 18: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

18

• ZZTDPMNT

Uses of the Source Work Area

Utility Customization

ZZTDPMNT LEN Consulting LLC 05/02/2004 18:03 Natural Utilities ZZUtils v2.1 Technical Walkthrough Documentation - Profile Maintenance *** Profile maintenance will overwrite the Natural source work area *** Action: U (A,I,R,U,.) Library: ZZUTIL__ Profile: RALPH___ Module Type: N Default: ZZUTIL RALPH Old: Nat Lib: ZZUTIL__ Environment: P (DIUP) 3GL PDS: RALPH.PROD.JCL______________________________ New: Nat Lib: ZZUTIL__ Environment: D (DIUP) 3GL PDS: RALPH.DEVL.JCL______________________________ List: Compare: C (F|C) Context: 10 Delta: N Summary: N Adacmd: Y ILRC: Y Src/Cmpl: L (C|L|S) Print: ID: LASER___ Copies: 1 Class: 2 Hold: Y Sysout: N File: Disp: O DSN: RALPH.TDOCLIST________________________________________ (N|O|X) Job: Class: X Suffix: T Account: 123456__ Info: 1234____ Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Actn Help Auth Exit

Page 19: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

19

• ZZTDPROF

Uses of the Source Work Area

Utility Customization

> > + Text ZZTDPROF Lib ZZUTILS Top ....+....1....+....2....+....3....+....4....+....5....+.Mode Structured. 0010 ZZTDOC Profile 0020 Profile ZZTDPROF 0030 Library ZZUTIL 0040 * 0050 Module Type N 0060 Old Environment P 0070 New Environment D 0080 Old Library PRODLIB 0090 New Library DEVLLIB 0100 Old 3GL PDS PROD.APP.JCL 0110 New 3GL PDS DEVL.APP.JCL 0120 List Type L 0130 Compile Type DAC 0140 Compare Type F 0150 Context 10 0160 Delta N 0170 Summary N 0180 Adacmd Y 0190 ILRC Y 0200 Xref N ....+..Current Source Size: 1254 Char. Free: 222267 ..+... S 57 L 1

Page 20: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

20

• ZZTDPROF

Uses of the Source Work Area

Utility Customization

> > + Text ZZTDPROF Lib ZZUTILS ....+....1....+....2....+....3....+....4....+....5....+.Mode Structured. 0210 Copycode N 0220 Printer LASER 0230 Copies 1 0240 Output Class X 0250 Hold Y 0260 Sysout N 0270 File Disposition N 0280 DSN 0290 Job Class X 0300 Job Suffix T 0310 Account 123456 0320 Info 1234 0330 * 0340 Old Copybook 01 0350 Old Copybook 02 0360 Old Copybook 03 0370 Old Copybook 04 0380 Old Copybook 05 0390 Old Copybook 06 0400 Old Copybook 07 ....+..Current Source Size: 1254 Char. Free: 222267 ..+... S 57 L 21

Page 21: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

21

• ZZTDPROF

Uses of the Source Work Area

Utility Customization

> > + Text ZZTDPROF Lib ZZUTILS Bot ....+....1....+....2....+....3....+....4....+....5....+.Mode Structured. 0410 Old Copybook 08 0420 Old Copybook 09 0430 Old Copybook 10 0440 New Copybook 01 0450 New Copybook 02 0460 New Copybook 03 0470 New Copybook 04 0480 New Copybook 05 0490 New Copybook 06 0500 New Copybook 07 0510 New Copybook 08 0520 New Copybook 09 0530 New Copybook 10 0540 * 0550 Updated by RALPH 0560 Updated on 10/25/2003 0570 Updated at 17:31:58 0580 0590 0600 ....+..Current Source Size: 1266 Char. Free: 222255 ..+... S 60 L 41

Page 22: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

22

• Retrieve text member into array

USR1057N• Parse array entries into keyword/value

• Present values to user

Uses of the Source Work Area

Utility Customization

• Validate new values

• Write keywords/values to SWA

• Store SWA as text member

USR2019N• “Replace” option

Page 23: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

23

• ZZTDOC

Uses of the Source Work Area

Utility Customization

ZZTDOC LEN Consulting LLC 05/02/2004 17:54 Natural Utilities ZZUtils v2.1 Generate Code Walkthrough Document Profile: ZZUTIL/RALPH Old: Env: P Library: ZZUTIL__ Member: ________ Type: N PDS: RALPH.PROD.JCL______________________________ New: Env: D Library: ZZUTIL__ Member: ________ PDS: RALPH.DEVL.JCL______________________________ Set: Library: ________ Member: ________ Listing: Compare: C Context: 10 Delta: N Summary: N Ada Cmd: Y ILRC: Y Type: L Print: ID: LASER___ Class: X Hold: Y Copies: 1 Sysout: N File: Disp: O Name: RALPH.TDOCLIST________________________________________ Job: Suffix: T Account: 123456__ Info: 1234 Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Vrfy Help Auth Exit SetV MPswd Membr JCL Sub Set Verification will clear the editor work area

Page 24: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

24

• ZZL1057

Uses of the Source Work Area

Simple Code Example: Modify a Source Module

S 1 ZZ1057

S 2 OBJECT-KEY

3 LIBRARY A8

3 OBJECT-NAME A32

3 OBJECT-TYPE A2

2 INPUTS

3 OPT-ACCESS A1

3 OPT-UNUSED-1 L

3 OPT-UNUSED-2 A1

3 OPT-LINE-NUM A1

3 OPT-UNUSED-3 L

3 OPT-REDEF-DIR L

3 OPT-UNUSED-4 A1

3 OPT-AMOUNT I2

3 OPT-LINESIZE I2

2 INPUT-OUTPUTS

3 INT-HANDLE I4

3 NEXT-SEQ I4

3 NEXT-NUM I2

Page 25: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

25

• ZZL1057

Uses of the Source Work Area

Simple Code Example

2 OUTPUTS

3 RETURNED I2

3 SRC-NUM I2 (1:60)

3 SRC-TEXT A1 (1:60,1:72)

R 3 SRC-TEXT

4 DIR-OBJNAME A32

4 DIR-LIBRARY A8

4 DIR-OBJTYPE A2

4 DIR-OBJKIND A1

4 DIR-DBID A5

4 DIR-FNR A5

4 DIR-DATN A8

4 DIR-TIMN A7

4 DIR-USERID A8

4 DIR-PROGMODE A1

4 DIR-SRCSIZE A10

4 DIR-GPSIZE A10

4 DIR-UNIQUE-ID A32

4 DIR-DDM-DBID A5

4 DIR-DDM-FNR A5

Page 26: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

26

• ZZL1057

Uses of the Source Work Area

Simple Code Example

4 DIR-NATVERS A4

4 DIR-NATSM A2

4 DIR-INIT-USER A8

4 DIR-TID A8

4 DIR-TRANS-NAME A8

4 DIR-OPSYS A8

4 DIR-TPSYS A8

4 DIR-USED-GDA A8

R 3 SRC-TEXT

4 SRC-GROUP (1:60)

5 SRC-LINE A72

3 SRC-SEQ I4 (1:60)

3 SRC-LONG A1 (1:60)

Page 27: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

27

• ZZL1057

Uses of the Source Work Area

Simple Code Example

2 USR1057N

3 EXTENDED-DATA A1 (1:28)

R 3 EXTENDED-DATA

4 VERSION I1

4 V1-NSC-CKECK A1

4 V2-DBID N5

4 V2-FNR N4

4 V2-PSW A8

4 V2-CIP N8

4 V2-SYSFILE A1

Page 28: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

28

• ZZL2019

Uses of the Source Work Area

Simple Code Example

1 ZZ2019

2 SYSTEM-FILE A1

2 DBID N5

2 FNR N5

2 PASSWORD A8

2 CIPHERCODE N8

2 OBJECT-CLASS I1

2 LIBRARY A8

2 OBJECT-NAME A32

2 OBJECT-TYPE A2

2 OBJECT-KIND A1

2 OPT-ACCESS A1

2 OPT-ET L

2 OPT-REPLACE A1

2 OPT-SESNUM B2

2 OPT-BUFFNAME A8

2 OPT-NSC-CHECK A1

2 EDIT-MODE A1

2 EXTENDED-DATA A1 (1:2) INIT <H'02', 'Y'>

Page 29: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

29

• NC-SW-02

Uses of the Source Work Area

Simple Code Example

0010 DEFINE DATA

0020 LOCAL USING ZZL1057 /* Retrieve source

0030 LOCAL USING ZZL2019 /* Save source

0040 LOCAL USING USR-MSG /* Data for message exchange

0050 LOCAL USING USR-FLD /* Description of the field in error

0060 LOCAL

0070 1 #MAINFRAME (A16) CONST <'MAINFRAME'>

0080 1 #USR1057 (A8) CONST <'USR1057N'>

0090 1 #REAL

0100 2 #MACHINE-CLASS (A16) INIT <*MACHINE-CLASS>

0110 *

0120 1 #PLIB (A8) INIT <'BOSTON'>

0130 1 #PMOD (A8) INIT <‘NC-SW-03'>

0140 *

0150 1 #SET-UPPER (L)

0160 1 #I (I4)

0170 END-DEFINE

0180 *

0190 FORMAT PS=23 LS=80

0200 *

Page 30: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

30

• NC-SW-02

Uses of the Source Work Area

Simple Code Example

0210 DEFINE PRINTER (1) OUTPUT 'SOURCE'

0220 *

0230 *

0240 RESET ZZ1057.USR1057N

0250 ASSIGN ZZ1057.VERSION = 2

0260 ASSIGN ZZ1057.V2-SYSFILE = 'U' /* FUSER

0270 ASSIGN ZZ1057.OBJECT-TYPE = 'T' /* Text

0280 ASSIGN ZZ1057.OPT-LINE-NUM = 'Y'

0290 ASSIGN ZZ1057.OPT-REDEF-DIR = FALSE

0300 ASSIGN ZZ1057.OPT-AMOUNT = 60 /* Source block

0310 ASSIGN ZZ1057.OPT-LINESIZE = 72

0320 *

0330 ASSIGN ZZ2019.SYSTEM-FILE = 'U' /* FUSER

0340 ASSIGN ZZ2019.OBJECT-TYPE = 'T' /* Text

0350 ASSIGN ZZ2019.OPT-ACCESS = 'W' /* Write

0360 ASSIGN ZZ2019.OPT-REPLACE = 'Y'

0370 ASSIGN ZZ2019.OPT-NSC-CHECK = 'N'

0380 *

Page 31: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

31

• NC-SW-02

Uses of the Source Work Area

Simple Code Example

0390 REPEAT

0400 INPUT (AD=MDLT'_' IP=F SG=F ZP=F)

0410 *PROGRAM (CD=NE)

0420 10T 'LEN Consulting LLC' (CD=TU)

0430 64T *DAT4I (AD=O)

0440 *TIME (AL=5)

0450 / 10T 'Read/Edit/Update FUSER'

0460 /// 5X 'Library:' #PLIB

0470 // 5X ' Module:' #PMOD

0480 /*

0490 IF #PLIB = '.'

0500 OR #PMOD = '.'

0510 THEN

0520 STOP

0530 END-IF

0540 /*

0550 ASSIGN ZZ1057.LIBRARY = #PLIB

0560 ASSIGN ZZ1057.OBJECT-NAME = #PMOD

0570 ASSIGN ZZ1057.OPT-ACCESS = 'O' /* Open FUSER module

0580 CALLNAT #USR1057 ZZ1057 NAD-MSG NAD-FLD

Page 32: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

32

• NC-SW-02

Uses of the Source Work Area

Simple Code Example

0590 IF NAD-MSG.MSG-NR = 1006

0600 THEN

0610 REINPUT 'Module not found' MARK *#PMOD

0620 END-IF

0630 ASSIGN ZZ1057.OPT-ACCESS = 'R' /* Read into array

0640 CALLNAT #USR1057 ZZ1057 NAD-MSG NAD-FLD

0650 /* Update

0660 SET CONTROL 'Z' /* Clear Work area

0670 FOR #I = 1 ZZ1057.RETURNED

0680 IF ZZ1057.SRC-LINE (#I) = '*/'

0690 THEN

0700 ESCAPE TOP

0710 END-IF

0720 IF ZZ1057.SRC-LINE (#I) = 'UPPER CASE'

0730 THEN

0740 WRITE (1) NOTITLE

0750 'lower case'

0760 RESET #SET-UPPER

0770 ESCAPE TOP

0780 END-IF

Page 33: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

33

• NC-SW-02

Uses of the Source Work Area

Simple Code Example

0790 IF ZZ1057.SRC-LINE (#I) = 'lower case'

0800 THEN

0810 WRITE (1) NOTITLE

0820 'UPPER CASE'

0830 ASSIGN #SET-UPPER = TRUE

0840 ESCAPE TOP

0850 END-IF

0860 IF #SET-UPPER

0870 THEN

0880 EXAMINE SRC-LINE (#I) TRANSLATE INTO UPPER CASE

0890 ELSE

0900 EXAMINE SRC-LINE (#I) TRANSLATE INTO LOWER CASE

0910 END-IF

0920 WRITE (1) NOTITLE

0930 ZZ1057.SRC-LINE (#I)

0940 WRITE

0950 ZZ1057.SRC-LINE (#I)

0960 END-FOR

Page 34: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

34

• NC-SW-02

Uses of the Source Work Area

Simple Code Example

0970 IF #REAL.#MACHINE-CLASS <> #MAINFRAME

0980 THEN

0990 ASSIGN ZZ1057.OPT-ACCESS = 'C' /* Close

1000 CALLNAT #USR1057 ZZ1057 NAD-MSG NAD-FLD

1010 END-IF

1020 /*

1030 ASSIGN ZZ2019.LIBRARY = #PLIB

1040 ASSIGN ZZ2019.OBJECT-NAME = #PMOD

1050 CALLNAT 'USR2019N' ZZ2019 NAD-MSG NAD-FLD /* Save source

1060 END-REPEAT

1070 END

Page 35: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

35

• NC-SW-03 before

Uses of the Source Work Area

Simple Code Example

0010 UPPER CASE

0020 *

0030 RAINING CATS AND DOGS

0040 GIVE HIM THE BOOT

0050 FACE THE MUSIC

0060 DRESSED TO THE NINES

0070 PUT TWO AND TWO TOGETHER

0080 HE LAID AN EGG

0090 WALK ON EGG SHELLS

0100 I SMELL A RAT

0110 CAT GOT YOUR TONGUE?

0120 LET THE CAT OUT OF THE BAG

0130 SPILL THE BEANS

0140 YOU SAY POTATO, I SAY POTATO

Page 36: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

36

• NC-SW-03 after

Uses of the Source Work Area

Simple Code Example

0010 */

0020 lower case

0030 *

0040 raining cats and dogs

0050 give him the boot

0060 face the music

0070 dressed to the nines

0080 put two and two together

0090 he laid an egg

0100 walk on egg shells

0110 i smell a rat

0120 cat got your tongue?

0130 let the cat out of the bag

0140 spill the beans

0150 you say potato, i say potato

Page 37: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

37

Manipulating the Natural Source Area

Questions?

Page 38: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

38

• Build your own editor based on SAG editor API

• Load prototype from text member

• SAG-L archive:

http:\\listserv.uark.edu/archives/sag-l.html

Uses of the Source Work Area

Editing Natural Objects

• Execute editing commands

• Stow and execute

• Dynamic code generation

• Custom edit commands

Page 39: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

39

• Load SWA via WRITE or user exit

• Read line by line

USR2014N

Uses of the Source Work Area

As a Temp File

Page 40: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

40

• NC-SW-04 – USR2014N control block

Uses of the Source Work Area

As a Temp File

0010 * Use SWA as a TEMP file

0020 *

0030 * Data definitions as in USR2014P:

0040 *

0050 DEFINE DATA LOCAL

0060 1 C-SCRMAX (I01) CONST <10> /* Maximum number of lines

0070 1 C-SCRLEN (I01) CONST <72> /* Length of data area

0080 1 C-PRFLEN (I01) CONST <06> /* Length of prefix area

0090 1 SHOW-PREFIX-AREA (L) CONST <FALSE>

0100 LOCAL

0110 1 CONTROL-BLOCK

0120 2 ED-SESNUM (B02) /* Number of session (0-50)

0130 2 ED-LOGFLAG (A01) /* Logical name in use

0140 2 ED-LOGNAME (A08) /* Logical name of the session

0150 2 ED-REQUEST (A04) /* Editor request

0160 2 ED-LIBRARY (A08) /* Unused

0170 2 ED-MEMBER (A08) /* Unused

0180 2 ED-RECLEN (B02) /* Maximum length of each line

0190 2 ED-PRFLEN (B02) /* Length of a prefix line on screen

0200 2 ED-SCRLEN (B02) /* Length of a single line on screen

Page 41: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

41

• NC-SW-04

Uses of the Source Work Area

As a Temp File

0210 2 ED-SCRNUM (B02) /* Number of lines on screen

0220 2 ED-SCRMAX (B02) /* Maximum number of lines on screen

0230 2 ED-RENUM (B01) /* Unused

0240 /*

0250 2 ED-MCMND (A50) /* Main command: command line

0260 2 ED-SCMND (A08) /* Secondary command: PF-key

0270 2 ED-CAREA (B02) /* Cursor area

0280 2 ED-CROW (B02) /* Cursor row

0290 2 ED-CCLM (B02) /* Cursor column

0300 /*

0310 2 ED-RECTOP (B02) /* Unused

0320 2 ED-NEW-RECTOP (B04) /* Line number of new first line on screen

0330 2 ED-RECNUM (B02) /* Unused

0340 2 ED-NEW-RECNUM (B04) /* Number of lines in the source area

0350 2 ED-FILECHG (B01) /* Indicator if source area has been mod.

0360 2 ED-SRAUSED (B04) /* Used source area in bytes

0370 2 ED-SRAFREE (B04) /* Unused source area in bytes

0380 2 ED-FLINE (A80) /* Message test. Explanation for

0390 /* ED-MSGNUM or ED-ERRNUM

0400 2 ED-MSGNUM (B02) /* Message number

Page 42: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

42

• NC-SW-04

Uses of the Source Work Area

As a Temp File

0410 2 ED-ERRNUM (B02) /* Error number

0420 2 ED-DUMMY (A32) /* Used for enhancements

0430 2 REDEFINE ED-DUMMY

0440 3 ED-DSTYPE (A01) /* Type of session

0450 3 ED-RECMAX (B02) /* Target session for CSES request

0460 /*

0470 1 CB-ALIN /* Attributes of prefix area

0480 2 CB-ALIN-V (N01/1:C-SCRMAX)

0490 1 L-PREFIXES /* Prefix area

0500 2 L-PREFIX-MAX (1:C-SCRMAX)

0510 3 L-PREFIX (A06) /* Length must be equal C-PRFLEN

0520 3 REDEFINE L-PREFIX

0530 4 L-PREFIX-A1 (A01/1:C-PRFLEN)

0540 /*

0550 1 CB-ADAT /* Attributes of data lines

0560 2 CB-ADAT-V (N01/1:C-SCRMAX)

0570 1 L-DATA-LINES /* Data lines

0580 2 L-DATA-MAX (1:C-SCRMAX)

0590 3 L-DATA (A72) /* Length must be equal C-SCRLEN

0600 3 REDEFINE L-DATA

Page 43: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

43

• NC-SW-04

Uses of the Source Work Area

As a Temp File

0610 4 L-DATA-A1 (A01/1:C-SCRLEN)

0620 *

0630 LOCAL

0640 1 C-SESNUM (B2)

0650 1 ERROR-NUMBER (N4)

0660 * ---------------------------------------------------------------------

0670 1 #I (I4)

0680 1 #ED-SCRNUM (I4)

0690 1 #RECNUM (I4)

0700 1 #LINES (P7)

0710 1 #WORK (A72) 1 REDEFINE #WORK /* WORK record

0720 2 #W (A2)

0730 2 FILLER 1X

0740 2 #ALPHA (A69)

0750 1 #WORDS (P7)

0760 END-DEFINE

Page 44: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

44

• NC-SW-04 – populate SWA

Uses of the Source Work Area

As a Temp File

0770 * Initialize the SWA

0780 SET CONTROL 'Z' /* Clear SWA

0790 FORMAT (3) LS=72

0800 DEFINE PRINTER (3) OUTPUT 'SOURCE'

0810 WRITE (3) NOTITLE '09 The quick brown fox jumps over the lazy dog.'

0820 WRITE (3) NOTITLE '07 A penny saved is a penny earned.'

0830 WRITE (3) NOTITLE '06 That"s all water under the bridge.'

0840 *

0850 *

0860 ASSIGN ED-SESNUM = 0 /* Open a free session

0870 ASSIGN ED-LOGFLAG = 'N'

0880 ASSIGN ED-DSTYPE = 'N' /* NATURAL SWA

0890 ASSIGN ED-RECLEN = 100

0900 ASSIGN ED-SCRMAX = 10

0910 ASSIGN ED-SCRNUM = 10

0920 ASSIGN ED-SCRLEN = C-SCRLEN

0930 ASSIGN ED-PRFLEN = C-PRFLEN

0940 *

Page 45: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

45

• NC-SW-04 – open

Uses of the Source Work Area

As a Temp File

0950 ASSIGN ED-REQUEST = 'OPEN' /* Open session

0960 CALLNAT 'USR2014N'

0970 CONTROL-BLOCK CB-ALIN L-PREFIX-A1(*,*) CB-ADAT L-DATA-A1(*,*)

0980 IF ED-ERRNUM <> 0

0990 THEN

1000 ERROR-NUMBER := ED-ERRNUM /* Error number in decimal form

1010 WRITE 'Error occurred during OPEN processing:' (I)

1020 / '=' ERROR-NUMBER

1030 / '=' ED-FLINE (AL=65)

1040 STOP

1050 END-IF

1060 ASSIGN C-SESNUM = ED-SESNUM /* Session number returned from OPEN

1070 ASSIGN #RECNUM = ED-NEW-RECNUM /* Number of lines in SWA

1080 *

1090 *

Page 46: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

46

• NC-SW-04 – “READ WORK”

Uses of the Source Work Area

As a Temp File

1100 ASSIGN ED-REQUEST = 'GETL' /* Get lines

1110 FOR #I = 1 #RECNUM /* READ WORK ...

1120 ASSIGN ED-NEW-RECTOP = #I

1130 CALLNAT 'USR2014N'

1140 CONTROL-BLOCK CB-ALIN L-PREFIX-A1(*,*) CB-ADAT L-DATA-A1(*,*)

1150 ASSIGN #WORK = L-DATA (1)

1160 DISPLAY

1170 'SWA/Line' #I (EM=ZZ9)

1180 '/Words' #W

1190 '/Line' #ALPHA (AL=50)

1200 IF #W IS (N2)

1210 THEN

1220 ADD 1 TO #LINES

1230 ADD VAL (#W) TO #WORDS

1240 END-IF

1250 END-FOR

1260 *

1270 *

Page 47: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

47

• NC-SW-04 – “end-of-data” & “CLOSE WORK”

Uses of the Source Work Area

As a Temp File

1280 WRITE

1290 /// #RECNUM (SG=F NL=3) 'source lines'

1300 // #LINES (SG=F NL=3) 'lines processed'

1310 / #WORDS (SG=F NL=3) 'words'

1320 *

1330 ASSIGN ED-REQUEST = 'CLSS' /* Close session

1340 CALLNAT 'USR2014N'

1350 CONTROL-BLOCK CB-ALIN L-PREFIX-A1(*,*) CB-ADAT L-DATA-A1(*,*)

1360 SET CONTROL 'Z' /* Clear SWA

1370 END

Page 48: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

48

• NC-SW-04 – report

Uses of the Source Work Area

As a Temp File

Page 1 05/02/04 14:28:50

SWA

Line Words Line

---- ----- --------------------------------------------------

1 */

2 09 The quick brown fox jumps over the lazy dog.

3 07 A penny saved is a penny earned.

4 06 That’s all water under the bridge.

4 source lines

3 lines processed

22 words

Page 49: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

49

Uses of the Source Work Area

Questions?

Page 50: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

50

• Retrieving Natural source

• Editing the SWA

• Miscellaneous

• Storing Natural source

SAG User Exits

Page 51: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

51

• USR2019N save source into FUSER

• USR0210N save/cat/stow source into FUSER

SAG User Exits

Storing Natural Source

Page 52: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

52

• USR2019N read from FUSER into SWA

• USR1057N read from FUSER into an array

SAG User Exits

Retrieving Natural Source

Page 53: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

53

• USR1036N maintain user profile

• USR1035N edit SWA contents

• USR2014N SAG editor

SAG User Exits

Editing the SWA

Page 54: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

54

• USR0330N FUSER directory

• USR1054N find libraries containing module

name• USR1055N find modules in a library

• USR0008N determine/set content type/name

SAG User Exits

Miscellaneous

• USR2014N read source as a temp file

Page 55: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

55

Manipulating the Natural Source Area

Questions?

Page 56: EMEA Natural Programmers User Group Manipulating the Natural Source Area Ralph Zbrog LEN C ONSULTING LLC RGZbrog@ZZUtils.com June 2004

EMEA Natural Programmers User Group

Manipulating the Natural Source Area

Ralph ZbrogLEN CONSULTING LLC

[email protected]

June 2004