Natural Conference 2005

Download Report

Transcript Natural Conference 2005

Batch Topics
Ralph Zbrog
[email protected]
Natural Conference 2005
Training Track
1
Excerpts from a 1-day seminar: Batch Processing with Natural and Adabas.
See www.ZZUtils.com/train.html for more information.
2
Batch Topics
© 2005 LEN CONSULTING LLC
Overview
•
•
•
•
•
WORK files
Printers
Sorting
JCL
Restart & recovery
3
Batch Topics
© 2005 LEN CONSULTING LLC
WORK Files
READ WORK Syntax
• Default SELECT clause
1 #REC
2 #FIELD1 (A25)
2 #FIELD2 (P7.2)
READ WORK 1 #REC
READ WORK 1 #FIELD1
#FIELD2
• Each field interrogated to verify numeric format
• Returns NAT1505 Invalid data for numeric
input field
4
Batch Topics
© 2005 LEN CONSULTING LLC
WORK Files
READ WORK Syntax
• What if you are the creator of the input dataset?
• eg in a previous job step
• ie you can guarantee the validity of the data
• Why incur the cost of the field verifications?
5
Batch Topics
© 2005 LEN CONSULTING LLC
WORK Files
READ WORK Syntax
• Specify RECORD clause to avoid format verification
1 #REC
2 #FIELD1 (A25)
2 #FIELD2 (P7.2)
READ WORK 1 RECORD #REC
READ WORK 1 RECORD #FIELD1
#FIELD2
• Huge performance improvement
• Possible NAT0954 for bad packed data
• Does not trap alpha translation (“ABC”  123)
6
Batch Topics
© 2005 LEN CONSULTING LLC
WORK Files
READ WORK SELECT
• Read blocks of alpha for similar cpu gains
1 #REC
2 #BLOCK1
2 #BLOCK2
2 #BLOCK3
2 #BLOCK4
(A250)
(A250)
(A250)
(A75)
READ WORK 1 #REC
/* No RECORD clause
7
Batch Topics
© 2005 LEN CONSULTING LLC
WORK Files
READ WORK RECORD
• Clears field contents prior to each read
• May result in logic errors
• Field values unavailable at EOF
• May result in NAT0954
• RESET alpha block corrupts packed data
8
Batch Topics
© 2005 LEN CONSULTING LLC
WORK Files
Control
• Temporary files
WRITE WORK 1 #BLOCK
READ WORK 1 #BLOCK
• Continuing a READ WORK
READ WORK 1 ONCE #CONTROL
READ WORK 1 #DATA
• Restarting a READ WORK
CLOSE WORK 1
READ WORK 1 #DATA
9
Batch Topics
© 2005 LEN CONSULTING LLC
WORK Files
Creation
• Defining the output record
1 CMST VIEW CUST-MAST
2 ACCOUNT-NBR
2 BILL-EFF-DATE
2 ...
*
1 #REC
2 #ISN (N10)
2 #ACCOUNT-NBR (N8)
2 #BILL-EFF-DATE (A8)
2 ...
/* 1
/* 11
/* 19
10
Batch Topics
© 2005 LEN CONSULTING LLC
WORK Files
Creation
• Populating the output record
ASSIGN #ISN
= *ISN (C.)
ASSIGN #ACCOUNT-NBR
= CMST.ACCOUNT-NBR
ASSIGN #BILL-EFF-DATE = CMST.BILL-EFF-DATE
...
WRITE WORK 1 #REC
ASSIGN #ISN = *ISN (C.)
WRITE WORK 1 #ISN
CMST.ACOUNT-NBR
CMST.BILL-EFF-DATE
...
11
/*
/*
/*
/*
/*
P10 to N10
1
11
19
27
Batch Topics
© 2005 LEN CONSULTING LLC
WORK Files
Creation
• Defining the input record
ZZLIST
LEN Consulting LLC
Natural Utilities
Natural Source Module Listing
Library: ACU7569
Data Area: RGZCMS
Saved by ACU7569
on 10/10/00 10:10:10
L R Field Name
1
2
2
2
2
2
2
2
2
2
2
2
#REC
#ISN
ACCOUNT-NBR
BILL-EFF-DATE
DT-RESTOR
DT-ARCHV
LEC-OVRD-CD
CANCEL-DATE
CANCEL-REASON
CANCEL-AUTHZD-BY
PUB-FON-PLAN-ID
TAX-ID-NBR
F
04/01/2004 10:10
ZZUtils v2.1
Page: 1
Natural: 2.2 0008
Termid: ACU7569
Len Occ/Comment
N
N
A
N
N
A
N
A
A
A
N
*** End of
10
8.0
8
6.0
6.0
1
6.0
2
8
3
9.0
list ***
Begin
End
1
11
19
27
33
39
40
46
48
56
59
10
18
26
32
38
39
45
47
55
58
67
Press ENTER for a new selection or PF3/PF15 to exit
12
Batch Topics
© 2005 LEN CONSULTING LLC
WORK Files
Length
• Variable vs fixed
• Comma-delimited
13
Batch Topics
© 2005 LEN CONSULTING LLC
WORK Files & Printers
Common Processing
• Treated similarly by Natural
• DEFINE
• OPEN
• CLOSE
14
Batch Topics
© 2005 LEN CONSULTING LLC
WORK Files & Printers
Null Output
DECIDE FOR FIRST #CODE
VALUE ‘A’
WRITE WORK 1 #FIELD1
VALUE ‘B’
CALLNAT ‘CODEB’ #DATA
VALUE ‘C’
CALLNAT ‘CODEC’ #DATA #PLUS
...
WRITE WORK 2 #DATA
/* CODEB
WRITE (3) ‘CODE B FOUND’
...
WRITE WORK 3 #PLUS
#DATA
...
/* CODEC
What happens if CODEB is not called?
15
Batch Topics
© 2005 LEN CONSULTING LLC
WORK Files & Printers
Null Output
• Explicit LRECL in JCL
IF FALSE
THEN
WRITE WORK 1 #LRECL-1
WRITE (3) ‘ ‘
END-IF
16
/* Never
/* Must match CODEB
Batch Topics
© 2005 LEN CONSULTING LLC
Printers
Report Distribution
• Entire report for Director
• Contiguous portions for Managers
FORMAT (00) PS=60 LS=80
FORMAT (01) PS=60 LS=132
FORMAT (02) PS=60 LS=132
/* Audit/Control
/* Director
/* Manager
READ ...
AT START OF DATA
PERFORM PRINTER-DEF
END-START
AT BREAK OF #AREA
PERFORM PRINTER-DEF
RESET *PAGE-NUMBER (02)
END-BREAK
/*
DISPLAY (01) field list
DISPLAY (02) field list
17
Batch Topics
© 2005 LEN CONSULTING LLC
Printers
Report Distribution
WRITE (01) TITLE LEFT
‘Area Details’
125T ‘Page’
*PAGE-NUMBER (01)
/
‘Area’ #AREA
/
WRITE (02) TITLE LEFT
‘Area Details’
125T ‘Page’
*PAGE-NUMBER (02)
/
‘Area’ #AREA
/
18
Batch Topics
© 2005 LEN CONSULTING LLC
Printers
Report Distribution
DEFINE SUBROUTINE PRINTER-DEF
DECIDE ON FIRST #AREA
VALUE 'A'
DEFINE PRINTER (02) OUTPUT
VALUE 'B'
DEFINE PRINTER (02) OUTPUT
VALUE 'C'
DEFINE PRINTER (02) OUTPUT
VALUE 'D'
DEFINE PRINTER (02) OUTPUT
VALUE 'E'
DEFINE PRINTER (02) OUTPUT
NONE
DEFINE PRINTER (02) OUTPUT
END-DECIDE
END-SUBROUTINE
19
'CMPRT02'
'CMPRT03'
'CMPRT04'
'CMPRT05'
'CMPRT06'
'CMPRT07'
Batch Topics
© 2005 LEN CONSULTING LLC
Printers
Carriage Control: CCONTROL
• Default
>
All
0010
0020
0030
0040
0050
0060
0070
0080
0090
> + Program
NC-BT-01 Lib ZZUTIL
....+....1....+....2....+....3....+....4....+....5....+.Mode Structured.
DEFINE DATA LOCAL
1 #I (I4)
1 #A (A10)
INIT <'ABCDEFGHIJ'>
END-DEFINE
WRITE ' '
WRITE ' '
WRITE
#A
END
....+..Current Source Size: 139 Char. Free: 223670 ...+... S 9
L 1
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+---->
1Page
1
ABCDEFGHIJ
20
Batch Topics
© 2005 LEN CONSULTING LLC
Printers
Carriage Control: CCONTROL
• User-controlled
>
All
0010
0020
0030
0040
0050
0060
0070
0080
0090
0100
0110
0120
0130
> + Program
NC-BT-02 Lib ZZUTIL
....+....1....+....2....+....3....+....4....+....5....+.Mode Structured.
DEFINE DATA LOCAL
1 #I (I4)
1 #A (A10)
INIT <'ABCDEFGHIJ'>
END-DEFINE
DEFINE PRINTER (2) OUTPUT 'CMPRT02'
DEFINE PRINTER (3) OUTPUT 'CCONTROL'
WRITE (3)
' '
#A
WRITE (3) NOTITLE
'+'
'_ _ _ _ _ '
END
....+..Current Source Size: 281 Char. Free: 223192 ...+... S 13
L 1
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+---->
ABCDEFGHIJ
+ _ _ _ _ _
21
Batch Topics
© 2005 LEN CONSULTING LLC
Printers
Carriage Control: CCONTROL
• No carriage control
>
All
0010
0020
0030
0040
0050
0060
0070
0080
0090
0100
0110
> + Program
NC-BT-03 Lib ZZUTIL
....+....1....+....2....+....3....+....4....+....5....+.Mode Structured.
DEFINE DATA LOCAL
1 #I (I4)
1 #A (A10)
INIT <'ABCDEFGHIJ'>
END-DEFINE
DEFINE PRINTER (2) OUTPUT 'CMPRT02'
DEFINE PRINTER (3) OUTPUT 'CCONTROL'
WRITE (3) NOTITLE ' '
WRITE (3) ' '
WRITE (3)
#A
END
....+..Current Source Size: 242 Char. Free: 223215 ...+... S 11
L 1
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+---->
ABCDEFGHIJ
22
Batch Topics
© 2005 LEN CONSULTING LLC
WORK Files & Printers
Testing
• Testing
• More convenient on-line than batch
• TSO, Com-plete, CMS allow on-line
access to WORK files
• For CICS
• Replace READ WORK with
REPEAT/INPUT
• DEFINE WORK as TDQ
• DEFINE PRINTER ‘SOURCE’
23
Batch Topics
© 2005 LEN CONSULTING LLC
WORK Files & Printers
Testing
• Write to (0) to test on-line
• MAINPR in batch to separate output from
Natural audit trail
24
Batch Topics
© 2005 LEN CONSULTING LLC
WORK Files & Printers
Questions?
25
Batch Topics
© 2005 LEN CONSULTING LLC
Sorting
Sorting
• Internal vs external sort
• SORT verb vs JCL step
• Both invoke the sort utility
26
Batch Topics
© 2005 LEN CONSULTING LLC
Sorting
Sorting
• Internal
• Simplifies JCL
• Sequence is specified with field names
• Efficient: eliminates writes to target
• Complex: combines extract and report
• Inefficient I/O
27
Batch Topics
© 2005 LEN CONSULTING LLC
Sorting
Sorting
• External
• Simple extract and report vs single
complex module
• Full-track I/O
• Efficient restart
• Sequence specified with cryptic
parameters
• Additional I/O
28
Batch Topics
© 2005 LEN CONSULTING LLC
Sorting
Sorting
• Comparison 1
5,000 records:
CPU sec
EXCPs
Elapsed
External Sort
Extract
Sort
Report
Total
1.08
.12
1.12
2.32
415
2
416
833
00:00:36
00:00:02
00:00:07
00:00:45
Internal Sort
2.56
380
00:01:33
Test machine
29
Batch Topics
© 2005 LEN CONSULTING LLC
Sorting
Sorting
• Comparison 2
50,000 records:
CPU sec
EXCPs
Elapsed
External Sort
Extract
Sort
Report
Total
1.99
.33
5.48
7.80
631
7
632
1270
00:00:29
00:00:08
00:00:17
00:00:54
Internal Sort
8.26
230
00:00:35
Production machine
30
Batch Topics
© 2005 LEN CONSULTING LLC
Sorting
Sorting
• Recommendation
• Internal sort will save I/O
• Use external sorts for better design at
reasonable increased cost
31
Batch Topics
© 2005 LEN CONSULTING LLC
Sorting
Sorting
• Sort parameters
SORT FIELDS=(1,6,CH,A,7,8,CH,A,15,2,CH,A,60,3,CH,A)
SUM FIELDS=(63,10,ZD,73,8,ZD,81,5,ZD,86,5,ZD,91,9,ZD)
*
SORT FIELDS=(01,06,CH,A,
07,08,CH,A,
15,02,CH,A,
60,03,CH,A)
SUM FIELDS=(63,10,ZD,
73,08,ZD,
81,05,ZD,
86,05,ZD,
91,09,ZD)
32
TRD010S1
ROUTE
SCHD DATE
LEG
SVC LEVEL
TOT WGT
CUBIC FEET
TOT PCS
SHIPMENT COUNT
TOTAL CHGS
Batch Topics
© 2005 LEN CONSULTING LLC
Sorting
Sort vs Natural
• Sort vs AT BREAK
READ CUSTMAST
AT BREAK OF
WRITE
/ 10T
20T
BY ACCOUNT
ACCOUNT
OLD (ACCOUNT)
#TOTAL (EM=ZZ,ZZ9.99)
*
INCLUDE COND=(01,08,NE,C’
‘,
&,01,08,NE,C’00000000’)
SORT FIELDS=(01,08,ZD,A),
EQUALS
SUM FIELDS=(50,04,PD)
CSTMST01
ACCOUNT
ACCOUNT
FIRST RECORD
TOTAL
READ WORK 1 #ACCOUNT
#TOTAL
WRITE 10T #ACCOUNT
20T #TOTAL (EM=ZZ,ZZ9.99)
33
Batch Topics
© 2005 LEN CONSULTING LLC
Sorting
Sort vs Natural
• Records per US state
READ WORK 1 #DATA
EXAMINE #ST (*) FOR #STATE GIVING INDEX #I
ADD 1 TO #COUNT (#I)
• Records per US city
READ WORK 1 #DATA
ADD 1 TO #COUNT
AT BREAK OF #CITY
WRITE OLD (#CITY)
#COUNT
34
Batch Topics
© 2005 LEN CONSULTING LLC
Sorting
Sort vs Natural
• Let SORT do the counting
INREC FIELDS=(07,03,
01,07,
C’0000001')
SUM FIELDS=(11,7,ZD)
COUNTY
CITY
COUNT
COUNT
READ WORK 1 #CNTY
#CITY
#COUNT
WRITE #CNTY (IS=T)
#CITY
#COUNT
INREC FIELDS=(01,98,
C’0000001')
SUM FIELDS=(99,7,ZD)
35
BASE RECORD
COUNT
COUNT
Batch Topics
© 2005 LEN CONSULTING LLC
JCL
Example
• Invocation parameters
//NAT
//
EXEC NATDEV,
PARM=(‘MT=0,MAINPR=1,DBUPD=OFF’)
• CMPRMIN
//CMPRMIN
DD *
SYS=DEVL,AUTO=ON,MAXCL=0,MADIO=0,
MT=0,IM=D,SL=74,MAINPR=1
/*
36
Batch Topics
© 2005 LEN CONSULTING LLC
JCL
Example
• NOSPIE
>
All
0010
0020
0030
0040
0050
0060
0070
0080
0090
0100
0110
0120
0130
0140
0150
0160
0170
0180
> + Program
Source has been stowed
....+....1....+....>>>
DEFINE DATA LOCAL
1 #I (I4)
INIT <1>
1 REDEFINE #I
2 #P (P7)
END-DEFINE
*
ADD 1 TO #P
END
NC-BT-05 Lib ZZUTIL
<<<..+.Mode Structured.
....+..Current Source Size: 134 Char. Free: 223675 ...+... S 8
37
Batch Topics
© 2005 LEN CONSULTING LLC
L 1
JCL
Example
• NOSPIE
000004
000005
000006
000007
000008
000009
000010
000011
000012
000013
000014
000015
000016
000017
000018
000019
000020
000021
000022
//RGZ
EXEC NATBT,DB=DEVL,SYSOUT=*,TIME=50,
//
PARM=' '
//CMPRINT
DD SYSOUT=*
//CMPRT01
DD SYSOUT=*
//CMWKF01
DD DSN=RGZ.DUMMY,
//
DISP=(NEW,CATLG,DELETE),
//
UNIT=SYSDA,RECFM=FB,LRECL=40,
//
SPACE=(TRK,(1,5),RLSE)
//CMSYNIN
DD *
LOGON ZZUTIL
NC-BT-05
FIN
/*
//CMPRMIN
DD *
NOSPIE,
PARM=STDEVL,SYS=STDEVL,AUTO=ON,MAXCL=0,MADIO=0,
MT=0,IM=D,SL=74,MAINPR=1
/*
//
38
Batch Topics
© 2005 LEN CONSULTING LLC
JCL
Example
• NOSPIE
IAT6108 JOB RGZ05
IAT6108 JOB RGZ05
***
(JOB48908) ENDED,COMP CD=S0C7|U0000 CN(INTERNAL)
STEP=RGZ
,PROC=N
CN(INTERNAL)
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+--->
IEF472I RGZ05
N OCU - COMPLETION CODE - SYSTEM=0C7 USER=0000 REASON=00000000
IGD105I RGZ.DUMMY
DELETED,
39
DDNAME=CMWKF01
Batch Topics
© 2005 LEN CONSULTING LLC
JCL
In-stream Data
• *DATA
//CMSYNIN DD *
LOGON PRODLIB
PROGRAM1
PARM1
PROGRAM2 PARM2
FIN
/*
40
Batch Topics
© 2005 LEN CONSULTING LLC
JCL
In-stream Data
• CMSYNIN vs CMOBJIN
>
All
0010
0020
0030
0040
0050
0060
0070
0080
0090
0100
0110
0120
0130
0140
0150
0160
0170
0180
0190
0200
> + Program
NC-BT-04 Lib ZZUTIL
....+....1....+....2....+....3....+....4....+....5....+.Mode Structured.
DEFINE DATA LOCAL
1 #IN (A10)
1 #A (A30)
INIT <'ABCDEFGHIJ'>
END-DEFINE
*
WRITE (1) *PROGRAM '=' *DATA
*
REPEAT
INPUT #IN (AD=A)
IF #IN = '.'
THEN
STOP
END-IF
DISPLAY (1) #IN
WRITE WORK 1 #IN
#A
END-REPEAT
END
....+..Current Source Size: 303 Char. Free: 223194 ...+... S 18
41
Batch Topics
© 2005 LEN CONSULTING LLC
L 1
JCL
In-stream Data
• CMSYNIN vs CMOBJIN
//CMSYNIN
DD *
LOGON ZZUTIL
%Q
NC-BT-04
FIN
/*
//CMOBJIN
DD *
INPUT1
INPUT2
.
/*
42
Batch Topics
© 2005 LEN CONSULTING LLC
JCL
In-stream Data
• CMSYNIN vs CMOBJIN
1NEXT LOGON ZZUTIL
NEXT NC-BT-04
1#IN
DATA INPUT1
1#IN
DATA INPUT2
1#IN
DATA .
1NEXT FIN
1NAT9995 NATURAL SESSION TERMINATED NORMALLY
******************************** Bottom of Data ********************************
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+---->
1Page
1
05/20/04 13:18:17
0
#IN
---------0NC-BT-04 DATA:
0
INPUT1
INPUT2
******************************** Bottom of Data ********************************
43
Batch Topics
© 2005 LEN CONSULTING LLC
JCL
In-stream Data
• CMSYNIN vs CMOBJIN
1NEXT LOGON ZZUTIL
*CF* %Q
1NEXT NC-BT-04
DATA INPUT1
DATA INPUT2
DATA .
1NEXT FIN
1NAT9995 NATURAL SESSION TERMINATED NORMALLY
******************************** Bottom of Data ********************************
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+---->
1Page
1
05/20/04 13:18:17
0
#IN
---------0NC-BT-04 DATA:
0
INPUT1
INPUT2
******************************** Bottom of Data ********************************
44
Batch Topics
© 2005 LEN CONSULTING LLC
JCL
Space Allocations
//
SPACE=(CYL,(10,5),RLSE)
//
SPACE=(TRK,(100,50),RLSE)
//
//
SPACE=(133,(200000,10000),RLSE),
AVGREC=U
• If AVGREC=U, assigns LRECL=133
• If BLKSIZE=0, allocates 32 cylinders
45
Batch Topics
© 2005 LEN CONSULTING LLC
JCL
Space Allocations
//
SPACE=(133,(200000,10000),RLSE)
• AVGREC not specified
• Allocates 200,000 blocks of 133
• Primary allocation of 185 cylinders
• If printer/WORK not closed, RLSE ignored
• Explicitly closed only if explicitly opened, as
in CODEB example
46
Batch Topics
© 2005 LEN CONSULTING LLC
JCL
Space Allocations
• Smaller primary allocation
//
//
SPACE=(133,(1,200000),RLSE),
UNIT=(SYSDA,5)
47
Batch Topics
© 2005 LEN CONSULTING LLC
Sorting & JCL
Questions?
48
Batch Topics
© 2005 LEN CONSULTING LLC
Restart
Overview
• On-line vs batch
• Methods
• Concerns
• JCL considerations
• Mechanism
• WORK and print records
• Sample source
49
Batch Topics
© 2005 LEN CONSULTING LLC
Restart
On-line vs Batch
• On-line abend
• User verifies preceding transaction
• User re-tries transaction
• ET logic eliminates partial updates
• Batch abend
• How many records processed/remaining?
• Values of counts/totals?
• Disposition of output files
50
Batch Topics
© 2005 LEN CONSULTING LLC
Restart
Methods
• Re-run until successful completion
• Restore files/database
• Set update flag
• Build-in restartability
51
Batch Topics
© 2005 LEN CONSULTING LLC
Restart
Examples
• Read Personnel file for a 10% raise
• Restore file and re-run
• Set INCREASE-APPLIED flag
• Subsequent step to reset flag
• Build-in restartability
• Read CUST-MAST for 10% fee reduction
• Without built-in restartability, consider
cost of re-run if abend of ‘Zbrog’ record
52
Batch Topics
© 2005 LEN CONSULTING LLC
Restart
Concerns
• System availability
• Concurrent processing
• “Threshold” records backed-out
53
Batch Topics
© 2005 LEN CONSULTING LLC
Restart
JCL Considerations
• Step restartability
• Single program per job step
54
Batch Topics
© 2005 LEN CONSULTING LLC
Restart
Mechanism
• ET data
• Control file
55
Batch Topics
© 2005 LEN CONSULTING LLC
Restart
WORK and Print Records
• DSN ABEND disposition
• MOD
• Duplicates
• Single contiguous report
56
Batch Topics
© 2005 LEN CONSULTING LLC
Restart
Sample Source
ZZLIST
LEN Consulting LLC
Natural Utilities
Natural Source Module Listing
Library: ZBROG
Program: ZZRESTRT
Saved by ZBROGRG
on 01/02/06 10:10:10
04/01/2002 10:10
ZZUtils v2.0
Page: 1
Natural: 2.2 0008
Termid: 5274
* Module:
ZZRESTRT
* Function: Skeleton Program - Demonstrates restartability
* Author:
Ralph G. Zbrog
* Date:
01/01/90
*
*
Date
*
Name
* Summary of Changes
************************************************************************
*
*
*
************************************************************************
*
57
Batch Topics
© 2005 LEN CONSULTING LLC
Restart
Sample Source
DEFINE DATA
LOCAL
1 #C
2 BLANK (A1)
*
LOCAL
1 #ET (A28)
2 PROGRAM (A8)
2 CONTROL (N7)
2 ISN (P8)
2 FIELD (N7)
2 FLAG (L)
1 #RESTART
2 CONTROL (N7)
2 ISN (P8)
1 #TRACE (L)
END-DEFINE
*/
/* Constants
CONST <' '>
/* ET data
1 REDEFINE #ET
INIT <FALSE>
58
Batch Topics
© 2005 LEN CONSULTING LLC
Restart
Sample Source
*
*
*
IF
Restartability Code
*DATA > 0
THEN
INPUT (AD=O IP=OFF)
*PROGRAM
'REFRESHED'
60T *DATU
*TIME(AL=8)
END TRANSACTION #C.BLANK
CALLNAT 'ZZNABEND'
END-IF
*
GET TRANSACTION DATA #ET
*
/* Trigger to revoke RESTART
/* Clear the ET data
/* Abend the job
59
Batch Topics
© 2005 LEN CONSULTING LLC
Restart
Sample Source
DECIDE FOR FIRST CONDITION
WHEN #ET.PROGRAM = #C.BLANK
/* First pass through the program
INPUT (AD=O IP=OFF)
*PROGRAM
'EXECUTED'
60T *DATU
*TIME (AL=8)
ASSIGN #ET.PROGRAM = *PROGRAM
RESET #ET.CONTROL
ASSIGN #ET.FIELD
= VALUE
WHEN #ET.PROGRAM = *PROGRAM
/* This is a RESTART
INPUT (AD=O IP=OFF)
*PROGRAM
'RESTARTED'
60T *DATU
*TIME (AL=8)
//
'CONTROL:' #ET.CONTROL
//
' FIELD:' #ET.FIELD
ASSIGN #RESTART.CONTROL = #ET.CONTROL
ASSIGN #RESTART.ISN
= #ET.ISN
60
Batch Topics
© 2005 LEN CONSULTING LLC
Restart
Sample Source
WHEN NONE
/* This is a problem
INPUT (AD=O IP=OFF)
*PROGRAM
'TERMINATED'
60T *DATU
*TIME(AL=8)
//
'INCONSISTENT RESTART DATA'
/
'ET DATA:' #ET (EM=X(8)¬X(7)¬X(5)¬X(7)¬X)
*
END TRANSACTION #C.BLANK
/* Clear ET data (dangerous)
CALLNAT 'ZZNABEND'
/* Terminate the job
END-DECIDE
*/
61
Batch Topics
© 2005 LEN CONSULTING LLC
Restart
Sample Source
* ...
*
RBAT.
READ BATCH BY
* AT START OF
*
REJECT IF
* END-START
REJECT IF
AND
*
* ...
*
/* Normal initialization
XXX FROM #RESTART.CONTROL
DATA
/* Ignore last processed record
BATCH.CONTROL = #RESTART.CONTROL /* Assumes unique
/*
key values
BATCH.CONTROL = #RESTART.CONTROL /* Ignore processed
*ISN (RBAT.) <= #RESTART.ISN
/*
duplicate keys
/* Normal processing
62
Batch Topics
© 2005 LEN CONSULTING LLC
Restart
Sample Source
IF
*COUNTER (RBAT.) = 50
/* ET threshold
THEN
RESET *COUNTER (RBAT.)
ASSIGN #ET.CONTROL = BATCH.CONTROL
ASSIGN #ET.ISN
= *ISN (RBAT.)
ASSIGN #ET.FIELD
= BATCH.FIELD
ASSIGN #ET.FLAG
= BATCH.FLAG
IF #TRACE
THEN
INPUT (AD=O IP=OFF)
*PROGRAM
'EXECUTING ET'
60T *DATU
*TIME (AL=8)
//
'CONTROL:' #ET.CONTROL
/
'
ISN:' #ET.ISN
/
' FIELD:' #ET.FIELD
/
'
FLAG:' #ET.FLAG (EM=TRUE)
END-IF
END TRANSACTION #ET
END-IF
END-READ
63
Batch Topics
© 2005 LEN CONSULTING LLC
Restart
Sample Source
*
*
/* End-of-job processing
WRITE WORK 1 #CTL
/* Control record
INPUT (AD=O IP=OFF)
*PROGRAM
'ENDED'
60T *DATU
*TIME (AL=8)
//
'CONTROL:' #ET.CONTROL
/
' FIELD:' #ET.FIELD
/
'
FLAG:' #ET.FLAG (EM=TRUE)
END TRANSACTION #C.BLANK
END
64
Batch Topics
© 2005 LEN CONSULTING LLC
Restart
Questions?
65
Batch Topics
© 2005 LEN CONSULTING LLC
Batch Topics
Ralph Zbrog
[email protected]
Natural Conference 2005
Training Track
66