+ All Categories
Home > Documents > March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application...

March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application...

Date post: 04-Jul-2020
Category:
Upload: others
View: 4 times
Download: 0 times
Share this document with a friend
64
© Xephon plc 1999 March 1999 33 3 DFSORT/VSE Version 3.4 21 Setting the CREATESESSION status for a CICS printer 23 Reading the IESCNTL file and creating a DFHSNT (continued) 44 Assembler – the series (part one) 51 VSE-L mailing/discussion list Web site 60 Date adjust subroutine and convert date subroutine – revisited 64 VSE news
Transcript
Page 1: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

© Xephon plc 1999

March 1999

33

3 DFSORT/VSE Version 3.421 Setting the CREATESESSION

status for a CICS printer23 Reading the IESCNTL file and

creating a DFHSNT (continued)44 Assembler – the series (part one)51 VSE-L mailing/discussion list Web

site60 Date adjust subroutine and convert

date subroutine – revisited64 VSE news

Page 2: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

2

VSE Update

© Xephon plc 1999. All rights reserved. None of the text in this publication may bereproduced, stored in a retrieval system, or transmitted in any form or by any means, withoutthe prior permission of the copyright owner. Subscribers are free to copy any code reproducedin this publication for use in their own installations, but may not sell such code or incorporateit in any commercial product. No part of this publication may be used for any form ofadvertising, sales promotion, or publicity without the written permission of the publisher.Copying permits are available from Xephon in the form of pressure-sensitive labels, forapplication to individual copies. A pack of 240 labels costs $36 (£24), giving a cost per copyof 15 cents (10 pence). To order, contact Xephon at any of the addresses above.

Printed in England.

EditorFiona Hewitt

DisclaimerReaders are cautioned that, although theinformation in this journal is presented ingood faith, neither Xephon nor theorganizations or individuals that suppliedinformation in this journal give any warrantyor make any representations as to theaccuracy of the material it contains. NeitherXephon nor the contributing organizations orindividuals accept any liability of any kindhowsoever arising out of the use of suchmaterial. Readers should satisfy themselvesas to the correctness and relevance to theircircumstances of all advice, information,code, JCL, EXECs, and other contents of thisjournal before making any use of it.

ContributionsArticles published in VSE Update are paid forat the rate of £170 ($250) per 1000 words fororiginal material. To find out more aboutcontributing an article, without anyobligation, please contact us at any of theaddresses above and we will send you a copyof our Notes for Contributors.

VSE Update on-lineCode from VSE Update can be downloadedfrom our Web site at http://www.xephon.com; you will need the user-id shown on youraddress label.

Published byXephon27-35 London RoadNewburyBerkshire RG14 1JLEnglandTelephone: 01635 38342From USA: 01144 1635 38342E-mail: [email protected]

North American officeXephon/QNA1301 West Highway 407, Suite 201-405Lewisville, TX 75077-2150USATelephone: 940 455 7050

Subscriptions and back-issuesA year’s subscription to VSE Update,comprising four quarterly issues, costs£100.00 in the UK, $150.00 in the USA andCanada, £106.00 in Europe, £112.00 inAustralasia and Japan, and £110.50elsewhere. In all cases the price includespostage. Individual issues starting with theMarch 1991 issue, are available separately tosubscribers for £25.00 ($37.50) eachincluding postage.

Editorial panelArticles published in VSE Update arereviewed by our panel of experts. Membersof the panel include Stanley Stewart (USA),Robert Botsis (USA), and Jesse Joyner(USA).

Page 3: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

3© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

DFSORT/VSE Version 3.4

SERIES INTRODUCTION

This article is the first in a series which will focus on systems softwarethat runs in both VSE and OS/390. Although initially focused on IBMproducts, it will also include non-IBM products as the series progresses.

Each article aims to give an overview of how the product discussedcan be used to resolve particular problems. Hopefully, once this is inthe back of your mind, you will then think of that particular productwhen you are confronted with that type of problem, rather than havingto write a program yourself.

This first article details the many new features introduced in Version3.4 of DFSORT/VSE. As such, it assumes some familiarity withVersion 3.3. For those without this knowledge, the next issue beginsa multi-part article on DFSORT/VSE itself, with no assumption ofexperience with the product or any other sort package. You maytherefore want to come back to this article again later.

NO MVS HAND-ME-DOWN

There are certainly a lot of new features in DFSORT/VSE 3.4, andanyone claiming that IBM is merely porting the OS/390 (MVS)version of products like DFSORT to VSE can be easily proved wrong.Two powerful new functions are implemented much more sensibly inDFSORT/VSE 3.4, using the OUTREC statement rather than theOUTREC parameter of the OUTFIL statement as they are in DFSORTfor OS/390.

To check them both out for yourself,

http://www.ibm.com/storage/dfsortvse/

is the IBM DFSORT/VSE Internet home, and

http://www.ibm.com/storage/dfsort/

Page 4: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

4 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

is the OS/390 DFSORT main Web page. Both provide links to a lot ofDFSORT information, including on-line versions of the manuals.

If you have trouble finding the manuals, try

http://www.ibm.com/s390/os390/bkserv/

Despite its address, it does include a link to VSE and VM manuals, aswell as every mainframe manual that IBM provides on the Internet.

Although the DFSORT/VSE statements have the same names and dothe same general things as those in the OS/390 version, the twoproducts do not feel exactly the same. Each has features the other doesnot, and each is missing constructs and capabilities of the other.

OUTREC

As mentioned above, OUTREC is where the effort that went intoVersion 3.4 is most readily apparent. Even the documentation hasimproved.

Both INREC and OUTREC, which allow incoming and outgoingrecords to be reformatted, are now clearly defined for specifying thevariable portion of a variable length record. The syntax diagrams anddescriptions in the Application Programming Guide (SC26-7040-3)show

INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7)

as being valid, where the final ‘7’ indicates that the rest of the recordbegins at column 7 (column 3 of the data, since the RDW occupiescolumns 1-4). No length specification is required.

Previously, the possibility of using this construct was buried inverbiage in one of the points in the Control Statement Notes justbefore the examples.

A new feature in OUTREC is the ability to specify a column numberwhere the field next specified will begin in the output record. Assumingthe input is 80 byte records,

OUTREC FIELDS=(5:1,8Ø)

Page 5: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

5© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

shifts the entire record right by four columns, inserting blanks in thefirst four columns of the output record.

HEX formats the input into hexadecimal characters for display orprinting, so

OUTREC FIELDS=(1,8Ø,HEX)

will output a 160-byte record, since each byte requires two hexadecimal(0-9, A-F) characters to represent it. It can also be used with variablelength records:

OUTREC FIELDS=(1,4,5,HEX)

EDITING AND MAPPING

But by far the most comprehensive new features in Version 3.4 are theoutput editing and mapping capabilities.

Editing in this context refers to the formatting of numeric data forprinting. Mapping allows the creation of a look-up table right withinthe OUTREC statement, to look up the value of a field in the table andreturn the corresponding result.

Editing

To edit a field, the starting column, length, and format of the input fieldare specified:

OUTREC FIELDS=(1Ø,5,PD)

This is the first time that the input data format is specified in theOUTREC statement, and its presence in the statement indicates thatediting is to take place.

Normally, however, an edit mask is specified. It follows the formatspecification and can be in one of two forms. The first,

OUTREC FIELDS=(1Ø,5,PD,MØ)

selects pre-defined mask M0, while the second,

OUTREC FIELDS=(1Ø,5,PD,EDIT=(IIIIIIIITS),...(incomplete)

Page 6: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

6 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

defines the mask in terms of insignificant digits (‘I’), significant digits(‘T’) and sign (‘S’).

Since the default is Mask zero (M0), and M0 defines a trailing sign,these three statements are equivalent. They would output values suchas:

Ø 123- 49685

Note that these values would be right justified in a field of 10characters with leading blanks.

If a sign (‘S’) is specified in EDIT=, the characters used to denote thesign must be specified with the SIGNS parameter:

SIGNS=(+,-,+,-)

The first two values indicate the signs used when a leading sign isspecified in the edit mask. The third and fourth values are used fortrailing signs. The equivalent statement of the preceding three wouldbe:

OUTREC FIELDS=(1Ø,5,PD,EDIT=(IIIIIIIITS),SIGNS=(,,' ',-))

As in all DFSORT statements, single quotes (apostrophes) must beused to surround blanks and any other characters that would violatethe statement syntax rules. Commas and unbalanced parentheses aretypical examples; a single apostrophe would be specified as fourconsecutive apostrophes.

Any sign not specified is set to blank.

OUTREC FIELDS=(1Ø,5,PD,EDIT=(IIIIIIIITS),SIGNS=(,,,-))

would produce the same result as the previous statement. Since thefour signs are positional, the commas are required to indicate whichcharacter is being specified for each of the four signs.

It can be useful to have both leading and trailing signs, with each adifferent character. Pre-defined edit masks M5, M14, and M20 aregood examples.

OUTREC FIELDS=(1Ø,5,PD,M5)

is equivalent to coding

Page 7: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

7© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

OUTREC FIELDS=(1Ø,5,PD,EDIT=(SI,III,IIT.TTS),SIGNS=(,'(',,')'))

Note that negative values are not indicated with a minus sign, but areinstead surrounded by parentheses, as is typical in most accountingsystems.

To repeat, there are no default values for signs. An OUTREC with anEDIT= mask that includes a sign character, normally an ‘S’, must alsoinclude a SIGN= parameter, or else the ‘S’ itself will become part ofthe output value.

By the way, this last statement could also be coded

OUTREC FIELDS=(1Ø,5,PD,EDIT=(SI,III,IIT.TTS),SIGNS=(,(,,)))

since the parentheses are balanced and, therefore, do not requiresurrounding quotes. My personal feeling is that the quotes improvereadability, but it could be argued that, in this particular case, theSIGNS parameter is pretty confusing whichever way it is coded.

Edit – length

The length defaults to the minimum amount of space required to printthe field as specified by the edit mask. With the simple mask (M0)shown in the examples up to this point, where the number of(insignificant and significant) digits specified is the same – nine – asthe number of digits in the packed decimal field, and one column is leftfor the sign, the output field length will be the number of digits plusone, ie 10.

The length can be specified if the default is not satisfactory.

OUTREC FIELDS=(1Ø,5,PD,EDIT=(IIIIIIIITS),SIGNS=(,,,-),LENGTH=1Ø)

is equivalent to the default. A larger value for LENGTH will pad theoutput field to the left with blanks. A smaller value will truncate theoutput value, also from the left.

Truncation can also occur when the EDIT= edit mask contains too fewdigits. As examples in the Application Programming Guidedemonstrate, unexpected results can occur with truncation. Considerthe following:

Page 8: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

8 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

OUTREC FIELDS=(1,6,ZD,EDIT=($IIT.T))

will output C' $34.5' for an input value of C'100345', but

OUTREC FIELDS=(1,5,ZD,EDIT=($IIT.TT),LENGTH=5)

will output C'23.45' after truncating C'$123.45' from an input value ofC'12345'. Which parameter (EDIT= or LENGTH=) forces thetruncation determines how (or rather when) the truncation occurs.

Unlike masks specified with EDIT=, most of the predefined masks(M0-M25) result in output fields with a length that is calculated basedon the number of digits in the input field. Formulae for calculatingoutput length are provided for each mask in Figure 36 (‘Edit MaskOutput Field Lengths within the description of the OUTREC ControlStatement’) in Chapter 3 of the Version 3.4 Application ProgrammingGuide (SC26-7040-3). This can be found on page 112 of the hardcopymanual and in section 3.15 of the on-line manual. The BookManagerfile name for the manual is ILU3A104.

LENGTH= can also be used with the pre-defined masks, but it doesnot change the number of digits in the mask, so you can get the samekind of truncation problems that can occur with EDIT=.

Masks

As indicated earlier, specifying an edit mask with EDIT=, rather thanusing one of the 26 pre-defined masks (M0-M25), involves specifyingthe position of insignificant digits (‘I’), significant digits (‘T’), andsign characters (‘S’).

A significant digit indicates one that is displayed no matter what itsvalue. Likewise, insignificant digits are always displayed if they arenon-zero. But an insignificant digit with a value of zero is displayedonly if it is preceded (on the left) by a non-zero digit. This is the zerosuppression concept common to most programming languages andreporting tools – leading zeros are replaced by blanks. In addition, anyleading characters in the edit mask, such as currency symbols,parentheses, sign characters, and even multiple asterisks are floated tothe right so that they are next to the first displayed (non-blank) digit.

When floating takes place, blanks are inserted to the left – there is no

Page 9: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

9© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

way to specify another character, such as the leading asterisks that areoften printed on cheques. Even though it may look promising,

EDIT=(**I/ITTT)

produces C'bb**1230' for a value of +1230, where ‘b’ is a blank.

A sign character (‘S’) reserves a position for a sign or other indicationof whether a value is negative or positive. As well as the plus (‘+’) andminus (‘-’) arithmetic signs, blanks, and surrounding parentheses arecommonly used. ‘S’ is valid only as the first and/or last character ofa pattern. If it appears anywhere else in a string, an ‘S’ will actually beplaced in the output field.

A special case is the ‘CR’ (Credit) indication following negativevalues in some accounting reports. Although it would be tempting tocode

OUTREC FIELDS=(1Ø,5,PD,EDIT=(I,III,IIT.TTS),SIGNS=(,,,CR))

this would result in a syntax error, since the signs specified withSIGNS= can only be single characters. Instead, coding

OUTREC FIELDS=(1Ø,5,PD,EDIT=(I,III,IIT.TTCR))

will produce the desired results.

Field types and lengths

Although very flexible, output editing has some limitations. It supportsinput of numeric data in only five fixed-point formats, namely:

• BI – unsigned binary

• FI – signed binary

• PD – signed packed decimal

• PD0 – packed decimal with sign and first digit ignored

• ZD – signed zoned decimal

In addition, zero suppression can occur only for leading zeroes, andnot for trailing ones after the decimal point. What’s more, the decimalpoint comes from the edit mask itself, not from anything within the

Page 10: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

10 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

input field or the defined data format; the data formats really justdefine integers (whole numbers).

The input fields also have length limitations, which differ dependingon the data format specified:

• BI – 1-4 bytes

• FI – 1-4 bytes

• PD – 1-8 bytes

• PD0 – 2-8 bytes

• ZD – 1-15 bytes

There are also length limitations for EDIT= masks. There can be nomore than 15 digits specified, no matter what combination of significant(‘T’) and insignificant (‘I’) digits is specified. The mask cannotexceed 22 characters. This 22-character length refers to the actualvalue of the mask and does not include any surrounding parenthesesor quotes, or additional apostrophes.

The actual rules for specifying a mask in an EDIT= parameter are asfollows:

• Parentheses must surround the mask; they do not become part ofthe value of the mask.

• If the mask includes a blank, apostrophe, or unbalancedparentheses, it must be enclosed in single quotes (apostrophes)within the required parentheses mentioned above.

• Each apostrophe within the mask must be replicated.

• The hexadecimal values X'20', X'21', and X'22' cannot be specifiedin a mask.

This means that a mask specifying an output value always surroundedby parentheses could be specified in either of the following ways:

EDIT=(($IIT.TT))

or

EDIT=('($IIT.TT)')

Page 11: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

11© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

Both would print the integer 4800 as

b($48.ØØ)

where ‘b’0 is a blank.

Mask characters

It is even possible to change the ‘I’, ‘T’, and ‘S’ characters used tospecify digits and sign(s) in an EDIT= mask. The last letters in theEDIT= and SIGNS= parameters actually specify the letters used. The‘I’ and ‘T’ in EDIT= indicate the letters used for digits, and the final‘S’ in SIGNS= indicates the letter used for signs.

The permissible values for digit and sign characters are the usualcharacters allowed in names in Assembler, JCL, and the original IBMutilities: A-Z, #, $, @, and 0-9. Obviously, the characters must beunique – the same character cannot be used for more than one purpose(the two types of digit or sign). For example, to give it a little more ofa COBOL feel, EDZ9= might be used:

OUTREC FIELDS=(1Ø,5,PD,EDZ9=(SZ,ZZZ,ZZ9.99S),SIGNS=(,'(',,')'))

Mapping

The IBM documentation refers to OUTREC’s mapping feature as alook-up table. The concept is the translation of a field using a table. Foreach record, the value of the input field is looked up in the table andthe result field from the table replaces the input field in the reformattedrecord created by OUTREC. The result need not be the same length,nor even the same type of data, as the input. It could, for example, beused to translate bit flags or values into meaningful words or phrases.

Mapping is indicated by the CHANGE= parameter in OUTREC.

OUTREC FIELDS=(1,8,1X,25,1,CHANGE=(5,C'Ø',C'FALSE',C'1',C'TRUE'))

would print out the eight-character key of each record, followed by ablank, followed by the word TRUE or FALSE, depending on whetherthe value of the one-character field in column 25 is the printablecharacter zero or one.

If the look-up and result values are at all similar, you may want to

Page 12: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

12 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

consider a standard continuation strategy, where each look-up/resultpair is on a line by itself:

OUTREC FIELDS=(1,8,1X,25,1,CHANGE=(5, C'Ø',C'FALSE', C'1',C'TRUE'))

NOMATCH

DFSORT will terminate if a value is found that does not match any ofthe look-up values in the table. If you would prefer to output an errorvalue (or something else) and continue processing, specifyNOMATCH=:

OUTREC FIELDS=(1,8,1X,25,1,CHANGE=(5, C'Ø',C'FALSE', C'1',C'TRUE'), NOMATCH=(C'ERROR'))

This will output a value of ERROR for input values other than one andzero. If the NOMATCH= value exceeds the length of standard resultsvalues, the CHANGE= output length value (‘5’ in the above example)will have to be increased. For example:

OUTREC FIELDS=(1,8,1X,25,1,CHANGE=(3, C'Ø',C'NO', C'1',C'YES'))

would have to become

OUTREC FIELDS=(1,8,1X,25,1,CHANGE=(5, C'Ø',C'NO', C'1',C'YES'), NOMATCH=(C'ERROR'))

with the ‘CHANGE=(3,’ increased to ‘CHANGE=(5,’ to accommodatethe length of the word ‘ERROR’.

NOMATCH= can also specify a field in the input record, typically thefield for which a match was not found:

OUTREC FIELDS=(1,8,1X,25,1,CHANGE=(5, C'Ø',C'FALSE', C'1',C'TRUE'), NOMATCH=(25,1))

This could also conceivably be the record key if it was not includedin the output record:

Page 13: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

13© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

OUTREC FIELDS=(25,1,CHANGE=(8, C'Ø',C'FALSE', C'1',C'TRUE'), NOMATCH=(1,8))

Again, note that the CHANGE= length had to be increased to handlethe length of the NOMATCH= field. The maximum CHANGE=length is 64 (bytes).

Hex, bits, and padding

As indicated earlier, the look-up values are not restricted to characterstrings; hexadecimal strings and bit constants are also allowed. Whenbit constants are used, they must be one byte in length, and all look-up values specified must be bit constants. As used elsewhere inDFSORT, character constants are surrounded by single quotes(apostrophes) and preceded by a C, hex by an X, and bit by a B.

One extra feature of bit constants is their ability to ignore bits notrequiring a match. As in INCLUDE and OMIT, this is indicated by aperiod in the bit constant:

B'1......Ø'

ignores all but the first and last bit of the byte, and only matches whenthe first bit is on (one) and the last bit is off (zero).

Ignored bits introduce the possibility of multiple matches within atable of values. The first match applies.

For both look-up and result table entries, the value is padded to theright (trailing) if it is too short. Blanks (X'40') are used for paddingcharacter constants, and nulls (X'00') for hexadecimal constants.

YEAR 2000 FEATURES

Previous versions of DFSORT/VSE have included Year 2000 features,mostly in the form of data formats for fields that would correctlyinterpret two-digit years as four-digit years and an overrideableinstallation option for setting the century windowing value. Version3.4 includes two new data formats that can be specified in OUTREC,SORT, and MERGE statements.

Page 14: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

14 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

There are the five obvious formats for two-digit years. They are, withexamples showing the most common representation of 1987:

• Y2C – 2-byte character, C'87' = X'F8F7'

• Y2Z – 2-byte zoned decimal, C'8G' = X'F8C7'

• Y2P – 2-byte packed decimal, X'087C'

• Y2D – 1-byte unsigned packed decimal, X'87'

• Y2B – 1-byte unsigned binary, X'57' = (5 x 16) + 7

There is also Y2S. Like Y2C and Y2Z, Y2S ignores the top half of eachbyte and obtains the two digits from the lower half. But, with Y2S,there are exceptions. If the first byte is X'00', X'40', or X'FF' – knownas special indicators, hence the S in Y2S – the first byte is repeated toform three identical bytes and the second byte is left as it is. Thatmeans that any two-byte quantity beginning X'00', X'40', or X'FF' willbecome a four-byte quantity beginning X'000000', X'404040', orX'FFFFFF' in the first three bytes, with the second byte becoming thefourth byte. If

INPFIL DATA=A

is coded to indicate ASCII input, X'20' becomes the special indicator,rather than X'40'. They are, respectively, the ASCII and EBCDICblank character.

OUTREC reformats two-digit years in any of these six formats tofour-character years. All of the above examples would result inC'1987' = X'F1F9F8F7'. For additional details and examples, checkout the Year 2000 features link on the IBM DFSORT/VSE Internethome page.

The most obvious need for these formats is in sorting, to ensure thatmixed century dates are sorted correctly even if they include two-digityears. They should cover every situation in which the year is in a fieldby itself. Date fields can also be handled if a byte boundary separatesthe year from the remainder of the date, since INREC and OUTRECcan split a record on byte boundaries.

There may also be solutions if the two-digit year begins the date field,

Page 15: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

15© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

such as the commonly-used yymmdd. For example, Frank Yaeger ofIBM’s DFSORT team suggested the following:

OUTREC FIELDS=(1,2,Y2P,2,3,PZ)

for packed decimal dates in the format X'0yymmddC'. These (Y2Pand PZ) and other combinations of DFSORT’s many field types mayalso address some of the more common mmddyy and ddmmyy datefield representations, where the year is last.

Otherwise, another tool will be needed to reformat the date fields. Butthe key point is that if you look hard within DFSORT/VSE, you canfind a way to reformat and/or sort most dates in a Year 2000-compliantmanner. For existing non-Y2K date sorts, concentrate on deriving thecorrect century (first two digits of four-digit year) and inserting it asa new sort field immediately before the date.

Y2PAST

The Y2PAST keyword remains the way to determine how two digityears will be interpreted. It is an installation option that implementscentury windowing, and can be overridden by the Y2PAST= parameterof the OPTION statement.

A value between 1000 and 3000 indicates a fixed century windowbeginning with the Y2PAST value. For example,

OPTION Y2PAST=1952

would map all two-digit years in the 100 year span of 1952 to 2051.

Values of 0 to 100 indicate a sliding century window, which works asfollows. The value of Y2PAST is subtracted from the current year.That year is considered to start a 100-year period where all two-digityears will fall. For example, assuming that the current year is 1999, aY2PAST value of zero would mean that 99 would be 1999 and allother values (0-98) would be 20nn: 2000-2098.

The default installation value for Y2PAST, ‘out of the box’, asdelivered by IBM, is 80. That means a sliding century window is usedand, in 1999, values from 19 to 99 would be 1919-1999 and values 0-18 would be 2000-2018.

Page 16: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

16 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

RETURN CODES

Many of the changes in Version 3.4 are a result (ripple effect) of onerather innocuous addition: OPTION NRECOUT. This indicates whatthe DFSORT return code should be when no records are output.

There has long been a recognition that an empty output file meanstrouble in many production applications. Historically, not recognizingthis has been a sore point within the IBM DFSORT development team,given that, when initially delivered a decade ago, one release ofDFSORT abended whenever there were no records to be output.

There are three possible settings for NRECOUT:

OPTION NRECOUT=RC0 OPTION NRECOUT=RC4 OPTION NRECOUT=RC16

Out of the box, IBM delivers DFSORT with NRECOUT=RC0,essential for upward compatibility.

However, all three choices are viable installation defaults.NRECOUT=RC16 is the obvious choice for sites where all productionjobs check return codes and all empty output files signal productionproblems.

For upward compatibility, where empty files are either not an issue orare already satisfactorily addressed by other means in productionjobs, NRECOUT=RC0 retains the status quo – DFSORT does nottreat a lack of output as a problem.

NRECOUT=RC4 provides the compromise. Empty files can bedetected by specifically looking for a DFSORT return code of four,but, assuming a return code of four does not normally signal aproduction failure, no action would normally be taken.

However, there are some important ramifications to this setting thatshould not be overlooked. When calling DFSORT from a program,return codes of zero and four may now both indicate success, dependingon whether zero records output is a potential problem that theapplication program should be aware of.

Since ICETOOL calls DFSORT, it too receives a return code of four

Page 17: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

17© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

for empty files, and reflects it by setting its own return code to four.To accommodate this change, ICETOOL’s MODE STOP andCONTINUE now consider only return codes of 12 and 16 as errors,rather than all non-zero return codes as in previous releases.

This change does make calling ICETOOL from a program much moreconfusing. As in the past, ICETOOL returns not only an overall ReturnCode but also a table of Operation Status Indicators – one for eachstatement that the program requested ICETOOL to perform. Thepossible values remain at zero and four, but zero now indicates aReturn Code of zero or four for that particular statement. An OperationStatus Indicator of four indicates any Return Code value other thanzero or four.

DIAGINF

Unlike most installation defaults, which can be overridden by aDFSORT OPTION statement, DIAGINF can override certain OPTIONspecifications. No matter what OPTIONs are specified in a DFSORTrun, DIAGINF will force:

OPTION DUMP,DIAG,PRINT=ALL,ROUTE=LST

This will produce a lot of useful output:

• A dump if DFSORT abends.

• Additional diagnostic, error, and informational messages routedto SYSLST.

• Critical messages will also be routed to the system console.

For upward compatibility, the IBM-delivered default is

DIAGINF=NONE

which does not override any OPTION parameters.

DIAGINF=ALL

will force these OPTION parameters for all jobs. A single job namecan also be specified for DIAGINF. For example,

Page 18: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

18 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

DIAGINF=PAYØØ5

will provide these extra diagnostic aids solely for job PAY005.

STXIT

The STXIT options are now three, instead of the two options offeredin previous DFSORT/VSE releases:

OPTION STXIT OPTION NOSTXIT OPTION MINSTXIT

The IBM-supplied default has been changed to MINSTXIT fromSTXIT, but can be changed back by specifying

STXIT=YES

in the ILUINST macro used to set installation defaults.

The Application Programming Guide now has a much more completedescription of the three STXIT options (on page 90 of the papermanual and section 3.13 of the on-line manual). To summarize:

• OPTION STXIT indicates that DFSORT will use its STXITroutine for abend recovery processing and restore its STXITevery time control is returned from a user exit routine.

• OPTION MINSTXIT also uses DFSORT’s STXIT routine, butdoes not restore it when control is returned from a user exitroutine.

• OPTION NOSTXIT prevents DFSORT from doing its ownabend recovery processing with its STXIT routine.

ZDPRINT

ZDPRINT is a new installation default and OPTION statementparameter. When in effect, it converts Zoned Decimal (ZD) valuesinto printable numbers after summation by the SUM statement. Thereis nothing more irritating than trying to read printed output where thelast digit of each number is transformed into a letter. For example, 35is F3F5 in hexadecimal when printable, but the zoned decimal value

Page 19: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

19© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

is F3C5 hexadecimal or 3E when printed. Note that the summedresults must still be positive to print properly.

The IBM-supplied installation default is

ZDPRINT=NO

which can be changed by specifying

ZDPRINT=YES

on the ILUINST macro. To override the installation default, code:

OPTION ZDPRINT

or

OPTION NZDPRINT

Note the use of N instead of NO to make it fit in eight characters.

PERFORMANCE AND VSAMBSP

A new performance installation default is VSAMBSP. This givesDFSORT guidelines on its use of buffers for all VSAM input andoutput files, including SAM ESDS.

VSAMBSP=MAX

allows DFSORT to use the maximum number of VSAM buffers, butit can cause excessive paging if there is not enough real memoryavailable when the job runs.

VSAMBSP=MIN

uses the minimum number of buffers.

The IBM-supplied default

VSAMBSP=OPTIMAL

instructs DFSORT to use as many buffers as it can without significantlyimpacting paging activity. Given enough real memory,

VSAMBSP=MAX

will provide the best DFSORT performance.

As well as VSAM buffers, DFSORT/VSE 3.4 has a number of other

Page 20: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

20 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

performance improvements. For the big picture,

http://www.ibm.com/storage/software/sort/srtvaupf.htm

gives a detailed discussion of performance improvements whencompared with Sort/Merge 2.5. As well as providing benchmarknumbers, this page and its associated links look specifically atGETVIS sorting, dataspace sorting, copy, merge, and the effect of 31-bit addressing.

OTHER CHANGES

There are a number of other changes, which are discussed here.

SD work files can now have more than one extent. As for SAM ESDSwork files, the WRKSEC installation default and OPTION WRKSECstatement now control the secondary allocation for SD work files.

The INCLUDE and OMIT statements have added ALL and NONEspecifications. As you might guess,

INCLUDE COND=ALL INCLUDE COND=(ALL) OMIT COND=NONE OMIT COND=(NONE)

effectively do nothing. No input records are eliminated.

At the other extreme:

INCLUDE COND=NONE INCLUDE COND=(NONE) OMIT COND=ALL OMIT COND=(ALL)

delete all input records.

The wording within the Application Programming Guide has alsobeen changed, and all references to main storage now refer to virtualstorage.

Finally, On-line Message Explanations (OMEs) are now available forDFSORT/VSE, bringing message descriptions to your terminal.

Jon E Pearkins(Canada) © Xephon 1999

Page 21: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

21© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

Setting the CREATESESSION status for a CICSprinter

When you run CICS with terminal printers, it sometimes happens thatthe printer will not be triggered by programs that try to start atransaction using the printer. This is generally because CICS has resetthe CREATESESSION parameter, perhaps because of a VTAM error.

Since CREATESESSION is needed to start a transaction using theprinter, I wrote a little Assembler program that searches the TCTentries for printers where CREATESESSION is not set, and changesthe status to CREATESESSION.

The program is started automatically by an entry in the start-up PLT,and then restarts itself every five minutes. Although the transactionshould not normally be started from a terminal, you can do so for testpurposes by calling transaction SCRE with option $$$$ – ie by typing‘SCRE $$$$’ on an empty CICS screen.

INSTALLATION

You need to assemble the program as a CICS command level Assemblerprogram, and link it to an execution library. You also need to code theSYSPSCRE program in the start-up PLT CICS table.

The program was tested under VSE/ESA.

SYSPCRE ASSEMBLE

********************************************************************** ** Program searches all terminal entries in the TCT and sets ** the status to 'CREATESESSION' for printers if it is not already ** set ** ** Program starts transaction 'SCRE' at intervals of 5 minutes. ** ** Don't forget the PLT entry for this program. ** **-------------------------------------------------------------------** *

Page 22: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

22 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

* REGISTER: ** ** R11: EIB ** R12: BASE ** R13: DFHEISTG ** ********************************************************************** PUNCH ' PHASE SYSPCRE,*' PUNCH ' INCLUDE DFHEAI' REQUATESYSPCRE DFHEIENT CODEREG=(R12),DATAREG=(13),EIBREG=(R11)* EXEC CICS ASSIGN STARTCODE(STARTCD). INQUIRE STARTCODE CLC STARTCD,=CL2'TD' CALLED BY TERMINAL? BE CREMSG YES -> MESSAGE AND STOPCREINQ EXEC CICS HANDLE CONDITION END(CREEND). EXEC CICS INQUIRE TERMINAL START.CRENEXT EXEC CICS INQUIRE TERMINAL(TERMID) NEXT, X CREATESESS(CREATE) DEVICE(DEVTYPE).* TYPE = PRINTER ? CLC DEVTYPE,DFHVALUE(T3284R) BE CREAT CLC DEVTYPE,DFHVALUE(T3286R) BE CREAT CLC DEVTYPE,DFHVALUE(T3284L) BE CREAT CLC DEVTYPE,DFHVALUE(T3286L) BE CREAT CLC DEVTYPE,DFHVALUE(T379ØSCSP) BNE CRENEXTCREAT CLC CREATE,DFHVALUE(NOCREATE) NOCREATE ? BNE CRENEXT EXEC CICS SET TERMINAL(TERMID), SET CREATE X CREATESESS(DFHVALUE(CREATE)). B CRENEXT*CREMSG MVC INLEN(2),=H'8Ø' EXEC CICS RECEIVE INTO(TERMINP) LENGTH(INLEN) CLC FUNCTION,=CL4'$$$$' TEST ? BE CREINQ EXEC CICS SEND FROM(MSG) LENGTH(HW8Ø) ERASE. B CRERETCREEND EQU ** NEXT START IN 5 MINUTES EXEC CICS START TRANSID(TRNID) INTERVAL(ØØØ5ØØ). CLC STARTCD,=CL2'TD' CALLED BY TERMINAL? BNE CRERET NO --> NO MESSAGE EXEC CICS SEND FROM(MSGOK) LENGTH(HW8Ø) ERASE.*CRERET EXEC CICS RETURN*

Page 23: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

23© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

TRNID DC CL4'SCRE'HW8Ø DC H'8Ø'MSG DC CL8Ø'TRANSACTION CAN ONLY BE CALLED VIA PLT'MSGOK DS ØCL8Ø DC CL48'CREATE SET FOR PRINTERS. TRANSACTION STARTS PERI' DC CL32'ODICALLY EVERY 5 MINS. ' LTORG DFHEISTGDEVTYPE DS FCREATE DS FTERMID DS CL4STARTCD DS CL2 STARTCODE FOR TRANSACTIONINLEN DS H LENGTH OF TERMINAL INPUTTERMINP DS ØCL8Ø TERMINAL INPUTTRANS DS CL4 TRANSACTION CODE DS CL1FUNCTION DS CL4 FUNCTION DS CL74 END

Reinhard Meyer(Germany) © Xephon 1999

Reading the IESCNTL file and creating a DFHSNT(continued)

Here, we continue the article begun in the last issue, which reads theIESCNTL file and creates a DFHSNT including all the JCL necessaryto assemble, LNKEDT, and ‘new’ it.

Ø1 HEADING-1. Ø3 FILLER PIC X(5) VALUE 'PAGE'. Ø3 HD-1-PAGE PIC ZZZ9. Ø3 FILLER PIC X(31) VALUE SPACE. Ø3 HD-1-TITLE PIC X(56) VALUE 'IESCNTL FILE USER SECURITY CODES BY USERID REPORT'. Ø3 FILLER PIC X(2Ø) VALUE SPACE. Ø3 FILLER PIC X(8) VALUE 'PROGRAM-'. Ø3 HD-1-PGM PIC X(8) VALUE 'DPCSNT'. Ø1 HEADING-2. Ø3 FILLER PIC X(18) VALUE 'PWR/VSE JOB NAMES-'. Ø3 HD-2-PWR-VSE-NAMES. Ø5 HD-2-PWR-NAME PIC X(8) VALUE SPACE. Ø5 PIC X VALUE ' '. Ø5 HD-2-VSE-NAME PIC X(8) VALUE SPACE.

Page 24: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

24 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

Ø3 FILLER PIC XX VALUE SPACE. Ø3 FILLER PIC X(21) VALUE SPACE. Ø3 FILLER PIC X(5) VALUE 'DATE'. Ø3 HD-2-DATE. Ø5 HD-2-DATE-MM PIC XX. Ø5 HD-2-DATE-S1 PIC X VALUE '/'. Ø5 HD-2-DATE-DD PIC XX. Ø5 HD-2-DATE-S1 PIC X VALUE '/'. Ø5 HD-2-DATE-CC PIC XX. Ø5 HD-2-DATE-YY PIC XX. Ø3 PIC X(42) VALUE SPACE. Ø3 PIC X(6) VALUE 'CPUID-'. Ø3 HD-CPU-ID PIC X(11) VALUE SPACE. Ø1 HEADING-2A. Ø3 FILLER PIC X(11) VALUE 'PARAMETERS-'. Ø3 FILLER PIC X(5) VALUE 'ASNT-'. Ø3 HD-2A-ASNT PIC X VALUE SPACE. Ø3 FILLER PIC X(6) VALUE ' DUPS-'. Ø3 HD-2A-DUPS PIC X VALUE SPACE. Ø3 FILLER PIC X(6) VALUE ' FULL-'. Ø3 HD-2A-FULL PIC X VALUE SPACE. Ø3 FILLER PIC X(6) VALUE ' NTAB-'. Ø3 HD-2A-NTAB PIC X VALUE SPACE. Ø3 FILLER PIC X(6) VALUE ' OPNM-'. Ø3 HD-2A-OPNM PIC X VALUE SPACE. Ø3 FILLER PIC X(6) VALUE ' POWP-'. Ø3 HD-2A-POWP PIC X VALUE SPACE. Ø3 FILLER PIC X(6) VALUE ' REMT-'. Ø3 HD-2A-REMT PIC X VALUE SPACE. Ø3 FILLER PIC X(6) VALUE ' RPTS-'. Ø3 HD-2A-RPTS PIC X VALUE SPACE. Ø3 FILLER PIC X(6) VALUE ' TRAN-'. Ø3 HD-2A-TRAN PIC X VALUE SPACE. Ø3 FILLER PIC X(6) VALUE ' USID-'. Ø3 HD-2A-USID PIC X VALUE SPACE. Ø3 FILLER PIC X(52) VALUE SPACE. Ø1 HEADING-2B. Ø3 FILLER PIC X(9) VALUE 'GRP LIST-'. Ø3 HD-2B-GRPL-ENTRIES. Ø5 HD-2B-GRPL-ENTRY PIC X(9) OCCURS 7. Ø3 FILLER PIC X(6Ø) VALUE SPACE. Ø1 HEADING-2C. Ø3 HD-2C-GRUP-EXIN PIC X(1Ø) VALUE SPACE. Ø3 HD-2C-GRUP-ENTRIES. Ø5 HD-2C-GRUP-ENTRY PIC X(9) OCCURS 13. Ø3 FILLER PIC X(5) VALUE SPACE. Ø1 HEADING-3. Ø3 HD-3-TITLE PIC X(58) VALUE 'UID S E C U R I T Y C O D E S'.

Page 25: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

25© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

Ø3 FILLER PIC X(74) VALUE SPACE. Ø1 HEADING-4. Ø3 HD-4-A-TITLE PIC X(52) VALUE 'OPP O P R C L A S S C O D E S'. Ø3 FILLER PIC XX VALUE SPACE. Ø3 HD-4-B-TITLE PIC X(17) VALUE 'R S L C O D E S'. Ø3 FILLER PIC X(61) VALUE SPACE. Ø1 HEADING-5. Ø3 HD-5-A-TITLE PIC X(4) VALUE 'OID '. Ø3 HD-5-B-TITLE PIC X(9) VALUE 'PASSWORD'. Ø3 HD-5-C-TITLE PIC X(48) VALUE ' DEPT/LOCATION FIRST/LAST NAME'. Ø3 HD-5-D-TITLE PIC X(13) VALUE 'USER TYPE'. Ø3 FILLER PIC XX VALUE SPACE. Ø3 HD-5-E-TITLE PIC X(1Ø) VALUE 'PANEL NAME'. Ø3 FILLER PIC XX VALUE SPACE. Ø3 HD-5-F-TITLE PIC X(7) VALUE 'USRCAT '. Ø3 FILLER PIC X(37) VALUE SPACE. Ø1 DETAIL-LINE8. Ø3 DL-USERID8 PIC X(8). Ø1 DETAIL-LINE. Ø3 DL-USERID4 PIC X(4). Ø3 DL-SECURITY-CODES. Ø5 DL-SEC-CODES PIC XX OCCURS 64. Ø1 FILLER REDEFINES DETAIL-LINE. Ø3 DL-DATE-PWD-EXP-CONST PIC X(25). Ø3 DL-DATE-PWD-EXP. Ø5 DL-DATE-PWD-EXP-MM PIC XX. Ø5 DL-DATE-PWD-EXP-S1 PIC X. Ø5 DL-DATE-PWD-EXP-DD PIC XX. Ø5 DL-DATE-PWD-EXP-S2 PIC X. Ø5 DL-DATE-PWD-EXP-CC PIC XX. Ø3 DL-DATE-PWD-EXP-YY PIC XX. Ø3 DL-DATE-PWD-EXP-DAYS-CONST PIC X(17). Ø3 DL-DATE-PWD-EXP-DAYS PIC 999. Ø3 PIC X(77). Ø1 FILLER REDEFINES DETAIL-LINE. Ø3 DL-OLD-PASSWORDS-CONST PIC X(35). Ø3 DL-OLD-PASSWORDS. Ø5 DL-OLD-PASSWORDS-ENTRY PIC X(7) OCCURS 84. Ø3 FILLER PIC X(13). Ø1 FILLER REDEFINES DETAIL-LINE. Ø3 DL-OPERPRI PIC 999. Ø3 FILLER PIC X. Ø3 DL-OPCLASS-SECURITY-CODES. Ø5 DL-OP-CLASS-CODES PIC XX OCCURS 24. Ø3 FILLER PIC XX. Ø3 DL-RSL-SECURITY-CODES.

Page 26: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

26 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

Ø5 DL-RSL-CODES PIC XX OCCURS 24. Ø3 FILLER PIC X(3Ø). Ø1 FILLER REDEFINES DETAIL-LINE. Ø3 DL-OPERID PIC XXX. Ø3 FILLER PIC X. Ø3 DL-PASSWORD PIC X(9). Ø3 FILLER PIC X. Ø3 DL-NAME PIC X(46). Ø3 FILLER REDEFINES DL-NAME. Ø5 DL-DEPT-LOC PIC X(15). Ø5 FILLER PIC X. Ø5 DL-FST-LST-NAME PIC X(3Ø). Ø3 FILLER REDEFINES DL-NAME. Ø5 FILLER PIC X(44). Ø5 DL-STATUS PIC XX. Ø3 FILLER PIC X. Ø3 DL-USER-TYPE PIC X(13). Ø3 FILLER PIC XX. Ø3 DL-PANEL-NAME PIC X(1Ø). Ø3 FILLER PIC XX. Ø3 DL-USER-CATALOG PIC X(7). Ø3 FILLER PIC X(37). Ø1 FILLER REDEFINES DETAIL-LINE. Ø3 DL-USERS-TRANS. Ø5 FILLER PIC XX. Ø5 DL-SECURITY-CODE PIC XX. Ø3 FILLER PIC X. Ø3 DL-USERID PIC X(125). Ø3 DL-USERID-CODES REDEFINES DL-USERID. Ø5 DL-USERID-CODE4 PIC X(5) OCCURS 25. Ø3 DL-USERID-CODE REDEFINES DL-USERID PIC X OCCURS 125. Ø3 FILLER REDEFINES DL-USERID. Ø5 DL-USERID-CODE8 PIC X(9) OCCURS 13. Ø5 FILLER PIC X(8). Ø3 FILLER PIC XX. Ø1 TOTAL-1. Ø3 FILLER PIC X(3). Ø3 TO-1-SEC-CODE-AND-COUNT-A OCCURS 14. Ø5 TO-1-SEC-CODE-A PIC 99. Ø5 TO-1-SEC-CODE-COUNT-A PIC ZZ,ZZ9. Ø5 FILLER PIC X. Ø3 FILLER PIC XXX. Ø1 FILLER REDEFINES TOTAL-1. Ø3 FILLER PIC X(15). Ø3 TO-1-SEC-CODE-AND-COUNT-B OCCURS 3. Ø5 TO-1-SEC-CODE-B PIC 99. Ø5 TO-1-SEC-CODE-COUNT-B PIC ZZ,ZZ9. Ø5 FILLER PIC X. Ø5 TO-1-SEC-CODE-DESC-B PIC X(25).

Page 27: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

27© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

Ø3 FILLER PIC X(15). Ø1 TOTAL-2. Ø3 FILLER PIC X(32) VALUE SPACE. Ø3 TO-2-TITLE PIC X(62) VALUE 'TOTAL IESCNTL USER RECORDS READ '. Ø3 TO-2-CNTL-COUNT PIC ZZ,ZZ9. Ø1 END-OF-REPORT. Ø3 FILLER PIC X(57) VALUE SPACE. Ø3 FILLER PIC X(49) VALUE '***END OF REPORT***'. Ø1 POWP-PARM-TABLE. Ø3 POWP-PARM-TABLE-ENTRIES PIC X(81) OCCURS 4. Ø1 POWP-PARM-SNT-TYPE. Ø3 FILLER PIC X VALUE '3'. Ø3 FILLER PIC X(27) VALUE ' DFHSNT TYPE=ENTRY,'. Ø3 POWP-PARM-SNT-TYPE-TIMEOUT PIC X(44) VALUE SPACE. Ø3 FILLER PIC X VALUE 'X'. Ø3 FILLER PIC X(8) VALUE SPACE. Ø1 POWP-PARM-SNT-USERID. Ø3 FILLER PIC X VALUE '3'. Ø3 FILLER PIC X(22) VALUE ' USERID='. Ø3 POWP-PARM-SNT-USERID-USERID. Ø5 POWP-PARM-SNT-USERID-USERID-1 PIC X. Ø5 POWP-PARM-SNT-USERID-USERID-2 PIC X. Ø5 POWP-PARM-SNT-USERID-USERID-3 PIC X. Ø5 POWP-PARM-SNT-USERID-USERID-4 PIC X. Ø5 POWP-PARM-SNT-USERID-USERID-5 PIC X. Ø5 POWP-PARM-SNT-USERID-USERID-6 PIC X. Ø5 POWP-PARM-SNT-USERID-USERID-7 PIC X. Ø5 POWP-PARM-SNT-USERID-USERID-8 PIC X. Ø5 POWP-PARM-SNT-USERID-COMMA PIC X VALUE SPACE. Ø3 FILLER PIC X(4Ø) VALUE SPACE. Ø3 FILLER PIC X VALUE 'X'. Ø3 FILLER PIC X(8) VALUE SPACE. Ø1 POWP-PARM-SNT-OPNAME. Ø3 FILLER PIC X VALUE '3'. Ø3 FILLER PIC X(22) VALUE ' OPNAME='. Ø3 FILLER PIC X VALUE QUOTE. Ø3 POWP-PARM-SNT-OPNAME-OPNAME PIC X(2Ø). Ø3 FILLER PIC X VALUE QUOTE. Ø3 FILLER PIC X VALUE ','. Ø3 FILLER PIC X(26) VALUE SPACE. Ø3 FILLER PIC X VALUE 'X'. Ø3 FILLER PIC X(8) VALUE SPACE. Ø1 POWP-PARM-SNT-OPERID. Ø3 FILLER PIC X VALUE '3'.

Page 28: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

28 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

Ø3 FILLER PIC X(23) VALUE ' OPIDENT='. Ø3 POWP-PARM-SNT-OPERID-OPERID. Ø5 POWP-PARM-SNT-OPERID-OPERID-1 PIC X. Ø5 POWP-PARM-SNT-OPERID-OPERID-2 PIC X. Ø5 POWP-PARM-SNT-OPERID-OPERID-3 PIC X. Ø5 POWP-PARM-SNT-OPERID-COMMA PIC X VALUE SPACE. Ø3 FILLER PIC X(44) VALUE SPACE. Ø3 FILLER PIC X VALUE 'X'. Ø3 FILLER PIC X(8) VALUE SPACE. Ø1 POWP-PARM-SNT-SCTY-ØØ. Ø3 FILLER PIC X VALUE '3'. Ø3 FILLER PIC X(15) VALUE SPACE. Ø3 POWP-PARM-SNT-SCTY-ØØ-SCTY PIC X(12) VALUE SPACE. Ø3 FILLER PIC X(44) VALUE SPACE. Ø3 FILLER PIC X VALUE 'X'. Ø3 FILLER PIC X(8) VALUE SPACE. Ø1 POWP-PARM-SNT-SCTY-Ø1-64. Ø3 FILLER PIC X VALUE '3'. Ø3 FILLER PIC X(15) VALUE SPACE. Ø3 POWP-PARM-SNT-SCTY-ENTRIES. Ø5 POWP-PARM-SNT-SCTY-ENTRY PIC XXX OCCURS 18. Ø3 FILLER PIC XXX VALUE ' X'. Ø3 FILLER PIC X(8) VALUE SPACE. Ø1 POWP-PARM-SNT-OPCLASS-Ø1-24. Ø3 FILLER PIC X VALUE '3'. Ø3 FILLER PIC X(15) VALUE SPACE. Ø3 POWP-PARM-SNT-OPCLASS-ENTRIES. Ø5 POWP-PARM-SNT-OPCLASS-ENTRY PIC XXX OCCURS 18. Ø3 FILLER PIC XXX VALUE ' X'. Ø3 FILLER PIC X(8) VALUE SPACE. Ø1 POWP-PARM-SNT-RSL-Ø1-24. Ø3 FILLER PIC X VALUE '3'. Ø3 FILLER PIC X(15) VALUE SPACE. Ø3 POWP-PARM-SNT-RSL-ENTRIES. Ø5 POWP-PARM-SNT-RSL-ENTRY PIC XXX OCCURS 18. Ø3 FILLER PIC XXX VALUE ' X'. Ø3 FILLER PIC X(8) VALUE SPACE. Ø1 POWP-PARM-SNT-OPPRI-PWD. Ø3 FILLER PIC X VALUE '3'. Ø3 FILLER PIC X(15) VALUE SPACE. Ø3 FILLER PIC X(7) VALUE 'OPPRTY='. Ø3 POWP-PARM-SNT-OPPRI-PWD-OPPRI PIC 999. Ø3 FILLER PIC X(9) VALUE ',PASSWRD='. Ø3 POWP-PARM-SNT-OPPRI-PWD-PWD PIC X(6) VALUE SPACE. Ø3 FILLER PIC X(31) VALUE SPACE. Ø3 FILLER PIC X VALUE ' '. Ø3 FILLER PIC X(8) VALUE SPACE. Ø1 POWP-PARM-1 PIC X(81) VALUE SPACE.

Page 29: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

29© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

Ø1 POWP-PARM-2. Ø3 POWP-PARM-RTRN PIC X(5). Ø3 POWP-PARM-REPL. Ø5 FILLER PIC XXXX. Ø5 POWP-PARM-REPL-JB PIC X(8). Ø5 POWP-PARM-REPL-JN PIC S999 COMP. Ø5 FILLER PIC X(486). Ø1 FILLER REDEFINES POWP-PARM-2. Ø3 PWRP-PARM. Ø5 PWRP-PARM-RTRN PIC XX. Ø5 FILLER PIC X(79). Ø3 FILLER PIC X(424). Ø1 CPU-ID-PACKED PIC X(6). Ø1 CPU-ID-PACKED-R REDEFINES CPU-ID-PACKED PIC S9(11) COMP-3. Ø1 CPU-ID-UNPACKED PIC 9(11). LINKAGE SECTION. Ø1 PARM-PARM. Ø3 PARM-PARM-LENG PIC 99 BINARY. Ø3 PARM-PARM-DATA. Ø5 PARM-PARM-DATA-ENTRY PIC X OCCURS 3ØØ. Ø1 LOW-CORE. Ø3 PIC X(128). Ø3 POINT-SC USAGE POINTER. Ø1 SYSCOM. Ø3 PIC X(112). Ø3 POINT-RAS USAGE POINTER. Ø1 RAS-LINKAGE. Ø3 CPU-ID PIC X(8). PROCEDURE DIVISION USING PARM-PARM. DECLARATIVES. DEBUG SECTION. USE FOR DEBUGGING ON ALL PROCEDURES. DEBUG-PARAGRAPH.* IF TRACE-ON = 1 DISPLAY DEBUG-NAME.* END-IF. END DECLARATIVES. ØØØ-INIT SECTION. MOVE 'IGZSORT' TO SORT-CONTROL. MOVE 8 TO RETURN-CODE. SET ADDRESS OF SYSCOM TO POINT-SC. SET ADDRESS OF RAS-LINKAGE TO POINT-RAS. MOVE CPU-ID(2:5) TO CPU-ID-PACKED(1:5). MOVE X'ØC' TO CPU-ID-PACKED(6:1). DIVIDE CPU-ID-PACKED-R BY 1Ø GIVING CPU-ID-PACKED-R. MOVE CPU-ID-PACKED-R TO CPU-ID-UNPACKED. MOVE CPU-ID-UNPACKED(2:6) TO HD-CPU-ID(1:6). MOVE '-' TO HD-CPU-ID(7:1). MOVE CPU-ID-UNPACKED(8:4) TO HD-CPU-ID(8:4).

Page 30: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

30 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

MOVE SAVE-ASNT-Y-OR-N TO HD-2A-ASNT. MOVE SAVE-DUPS-Y-OR-N TO HD-2A-DUPS. MOVE SAVE-FULL-Y-OR-N TO HD-2A-FULL. MOVE SAVE-NTAB-Y-OR-N TO HD-2A-NTAB. MOVE SAVE-OPNM-Y-OR-N TO HD-2A-OPNM. MOVE SAVE-POWP-Y-OR-N TO HD-2A-POWP. MOVE SAVE-REMT-Y-OR-N TO HD-2A-REMT. MOVE SAVE-RPTS-1-OR-2-OR-B-OR-N TO HD-2A-RPTS. MOVE SAVE-TRAN-4-OR-8 TO HD-2A-TRAN. MOVE SAVE-USID-F-OR-4-OR-8 TO HD-2A-USID. MOVE Ø TO SUB-2. MOVE SPACE TO SECURITY-TABLE GRPLIST-TABLE GRPLIST-NAME GROUP-NAME-TABLE GROUP-NAME SAVE-DF-NAME TOTAL-1 HD-2B-GRPL-ENTRIES HD-2C-GRUP-ENTRIES POWP-PARM-1 PARM-IN POWP-PARM-TABLE. MOVE LOW-VALUE TO DF-KEY. MOVE FUNCTION CURRENT-DATE(5:2) TO HD-2-DATE-MM. MOVE FUNCTION CURRENT-DATE(7:2) TO HD-2-DATE-DD. MOVE FUNCTION CURRENT-DATE(1:2) TO HD-2-DATE-CC. MOVE FUNCTION CURRENT-DATE(3:2) TO HD-2-DATE-YY. STRING PWR-NAME '/' VSE-NAME DELIMITED BY ' ' INTO HD-2-PWR-VSE-NAMES. OPEN INPUT IESCNTL. IF IE-STATUS NOT = 'ØØ' DISPLAY 'JOB ' VSE-NAME '-IESCNTL OPEN ERROR, FILE STATUS- '=' IE-STATUS UPON CONSOLE MOVE IE-VSAM-STATUS-R15 TO VSAM-R15 MOVE IE-VSAM-STATUS-FUN TO VSAM-FUN MOVE IE-VSAM-STATUS-FBK TO VSAM-FBK DISPLAY ' -VSAM STATUS=' VSAM-STATUS UPON CONSOLE GO A999-CALL-BOMBER. MOVE LOW-VALUE TO IE-KEY. MOVE 'US' TO IE-TYPE. START IESCNTL KEY > IE-KEY. IF IE-STATUS NOT = 'ØØ' DISPLAY 'JOB ' VSE-NAME '-IESCNTL START ERROR, FILE STATU- 'S=' IE-STATUS UPON CONSOLE GO A999-CALL-BOMBER. IF PARM-PARM-LENG = 6 AND PARM-PARM-DATA(1:6) = 'COPY=Y' OPEN OUTPUT CPYFILE IF CP-STATUS NOT = 'ØØ' DISPLAY 'JOB ' VSE-NAME '-CPYFILE OPEN ERROR, FILE STØ- 'ATUS=' CP-STATUS UPON CONSOLE GO A999-CALL-BOMBER ELSE PERFORM AØØ7-COPY-IESCNTL THRU AØØ7-COPY-IESCNTL-EXIT UNTIL IE-EOF = '1' CLOSE CPYFILE IESCNTL

Page 31: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

31© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

MOVE Ø TO RETURN-CODE GOBACK. IF PARM-PARM-LENG > 77 DISPLAY 'JOB ' VSE-NAME '-PARM= OPERAND, OF // EXEC STATE- 'MENT, > 77 BYTES' UPON CONSOLE GO A999-CALL-BOMBER ELSE IF PARM-PARM-LENG > Ø MOVE Ø TO TALLY INDX-COUNT ADD 1 TO PARM-PARM-LENG PERFORM VARYING TALLY FROM 1 BY 1 UNTIL TALLY > PARM-PARM-LENG IF PARM-PARM-DATA-ENTRY(TALLY) = ',' OR ' ' OR X'ØØ' OR '/' MOVE SPACE TO PARM-IN(7:1) ADD 1 TO PARM-COUNT PERFORM AØØ6-PROCESS-PARM THRU AØØ6-PROCESS-PARM-EXIT MOVE SPACE TO PARM-IN MOVE Ø TO INDX-COUNT IF PARM-PARM-DATA-ENTRY(TALLY) NOT = ',' MOVE Ø TO PARM-PARM-LENG END-IF ELSE ADD 1 TO INDX-COUNT MOVE PARM-PARM-DATA-ENTRY(TALLY) TO PARM-IN(INDX-COUNT:1) END-IF END-PERFORM END-IF. MOVE '1' TO PARM-DONE-SW. MOVE Ø TO TALLY INDX-COUNT. OPEN OUTPUT OUTFILE. IF OT-STATUS NOT = 'ØØ' DISPLAY 'JOB ' VSE-NAME '-OUTFILE OPEN ERROR, FILE STATUS- '=' OT-STATUS UPON CONSOLE GO A999-CALL-BOMBER. OPEN INPUT DFHCSD. IF DF-STATUS NOT = 'ØØ' DISPLAY 'JOB ' VSE-NAME '-DFHCSD OPEN ERROR, FILE STATUS=- '' DF-STATUS UPON CONSOLE MOVE DF-VSAM-STATUS-R15 TO VSAM-R15 MOVE DF-VSAM-STATUS-FUN TO VSAM-FUN MOVE DF-VSAM-STATUS-FBK TO VSAM-FBK DISPLAY ' -VSAM STATUS=' VSAM-STATUS UPON CONSOLE GO A999-CALL-BOMBER. OPEN INPUT CARDIN. AØØ5-READ-PARM.

Page 32: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

32 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

READ CARDIN INTO PARM-IN AT END MOVE '1' TO PARM-EOF-SW. IF PARM-EOF-SW = '1' CLOSE CARDIN GO AØ2Ø-READ-DONE. ADD 1 TO PARM-COUNT. IF PARM-IN-1-1 = '*' GO AØØ5-READ-PARM. MOVE SPACE TO PARM-REC-73-8Ø. PERFORM AØØ6-PROCESS-PARM THRU AØØ6-PROCESS-PARM-EXIT. GO AØØ5-READ-PARM. AØØ6-PROCESS-PARM. IF PARM-IN-1-5 = 'ASNT=' MOVE '1' TO PARM-SW IF PARM-REC-SEC-NUM-1-A = 'Y ' OR 'N ' MOVE PARM-REC-SEC-NUM-1-A TO SAVE-ASNT-Y-OR-N HD-2A-ASNT ELSE MOVE 'N' TO SAVE-ASNT-Y-OR-N HD-2A-ASNT DISPLAY 'JOB ' VSE-NAME '-ASNT= PARAMETER NOT Y OR N-- 'FORCED TO N' UPON CONSOLE ELSE IF PARM-IN-1-5 = 'EXGP=' MOVE '1' TO PARM-SW IF PARM-DONE-SW = 'Ø' DISPLAY 'JOB ' VSE-NAME '-EXGP= PARAMETER SPECIFIED I- 'N PARM OPERAND OF // EXEC' UPON CONSOLE GO A999-CALL-BOMBER ELSE IF IN-SW = '1' DISPLAY 'JOB ' VSE-NAME '-EXGP= MUTUALLY EXCLUSIVE WI- 'TH INGP=-ENTRY IGNORED' UPON CONSOLE ELSE ADD 1 TO GRUP-COUNT IF PARM-REC-SEC-1 NOT = SPACE MOVE 1 TO INDXY-COUNT PERFORM AØ1Ø-LOAD-GRUP-TAB THRU AØ1Ø-LOAD-GRUP-TAB-EXIT ELSE DISPLAY 'JOB ' VSE-NAME '-GRUP= PARAMETER MISSING- 'ENTRY/IES' UPON CONSOLE GO A999-CALL-BOMBER ELSE IF PARM-IN-1-5 = 'DUPS=' MOVE '1' TO PARM-SW IF PARM-REC-SEC-NUM-1-A = 'Y ' OR 'N ' MOVE PARM-REC-SEC-NUM-1-A TO SAVE-DUPS-Y-OR-N HD-2A-DUPS ELSE

Page 33: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

33© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

MOVE 'N' TO SAVE-FULL-Y-OR-N HD-2A-DUPS DISPLAY 'JOB ' VSE-NAME '-DUPS= PARAMETER NOT Y OR N-- 'FORCED TO N' UPON CONSOLE ELSE IF PARM-IN-1-5 = 'FULL=' MOVE '1' TO PARM-SW IF PARM-REC-SEC-NUM-1-A = 'Y ' OR 'N ' MOVE PARM-REC-SEC-NUM-1-A TO SAVE-FULL-Y-OR-N HD-2A-FULL ELSE MOVE 'N' TO SAVE-FULL-Y-OR-N HD-2A-FULL DISPLAY 'JOB ' VSE-NAME '-FULL= PARAMETER NOT Y OR N-- 'FORCED TO N' UPON CONSOLE ELSE IF PARM-IN-1-5 = 'GRPL=' MOVE '1' TO PARM-SW IF PARM-DONE-SW = 'Ø' DISPLAY 'JOB ' VSE-NAME '-GRPL= PARAMETER SPECIFIED I- 'N PARM OPERAND OF // EXEC' UPON CONSOLE GO A999-CALL-BOMBER ELSE ADD 1 TO GRPL-COUNT IF PARM-REC-SEC-1 NOT = SPACE MOVE 1 TO INDXG-COUNT PERFORM AØØ8-LOAD-GRPL-TAB THRU AØØ8-LOAD-GRPL-TAB-EXITD DISPLAY 'INDXG2-COUNT=' INDXG2-COUNTD DISPLAY 'GRPLIST-TABLE=' GRPLIST-TABLE ELSE DISPLAY 'JOB ' VSE-NAME '-GRPL= PARAMETER MISSING EN- 'TRY/IES' UPON CONSOLE GO A999-CALL-BOMBER ELSE IF PARM-IN-1-5 = 'INGP=' MOVE '1' TO PARM-SW IF PARM-DONE-SW = 'Ø' DISPLAY 'JOB ' VSE-NAME '-INGP= PARAMETER SPECIFIED I- 'N PARM OPERAND OF // EXEC' UPON CONSOLE GO A999-CALL-BOMBER ELSE IF EX-SW = '1' DISPLAY 'JOB ' VSE-NAME '-INGP= MUTUALLY EXCLUSIVE WI- 'TH EXGP=-ENTRY IGNORED' UPON CONSOLE ELSE ADD 1 TO GRUP-COUNT IF PARM-REC-SEC-1 NOT = SPACE MOVE 1 TO INDXY-COUNT PERFORM AØ1Ø-LOAD-GRUP-TAB THRU AØ1Ø-LOAD-GRUP-TAB-EXIT

Page 34: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

34 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

ELSE DISPLAY 'JOB ' VSE-NAME '-GRUP= PARAMETER MISSING- 'ENTRY/IES' UPON CONSOLE GO A999-CALL-BOMBER ELSE IF PARM-IN-1-5 = 'NTAB=' MOVE '1' TO PARM-SW IF PARM-REC-SEC-NUM-1-A = 'Y ' OR 'N ' MOVE PARM-REC-SEC-NUM-1-A TO SAVE-NTAB-Y-OR-N HD-2A-NTAB ELSE MOVE 'N' TO SAVE-NTAB-Y-OR-N HD-2A-NTAB DISPLAY 'JOB ' VSE-NAME '-NTAB= PARAMETER NOT Y OR N-- 'FORCED TO N' UPON CONSOLE ELSE IF PARM-IN-1-5 = 'OPNM=' MOVE '1' TO PARM-SW IF PARM-REC-SEC-NUM-1-A = 'Y ' OR 'N ' MOVE PARM-REC-SEC-NUM-1-A TO SAVE-OPNM-Y-OR-N HD-2A-OPNM ELSE MOVE 'N' TO SAVE-OPNM-Y-OR-N HD-2A-OPNM DISPLAY 'JOB ' VSE-NAME '-OPNM= PARAMETER NOT Y OR N-- 'FORCED TO N' UPON CONSOLE ELSE IF PARM-IN-1-5 = 'PASS=' MOVE '1' TO PARM-SW IF PARM-REC-SEC-NUM-1-A = 'Y ' OR 'N ' MOVE PARM-REC-SEC-NUM-1-A TO SAVE-PASS-Y-OR-N IF SAVE-PASS-Y-OR-N = 'N' MOVE SPACE TO HD-5-B-TITLE ELSE MOVE 'PASSWORD' TO HD-5-B-TITLE ELSE MOVE 'N' TO SAVE-PASS-Y-OR-N MOVE SPACE TO HD-5-B-TITLE DISPLAY 'JOB ' VSE-NAME '-PASS= PARAMETER NOT Y OR N- 'FORCED TO N' UPON CONSOLE ELSE IF PARM-IN-1-5 = 'POWP=' MOVE '1' TO PARM-SW IF PARM-REC-SEC-NUM-1-A = 'Y ' OR 'N ' MOVE PARM-REC-SEC-NUM-1-A TO SAVE-POWP-Y-OR-N HD-2A-POWP ELSE MOVE 'N' TO SAVE-POWP-Y-OR-N HD-2A-POWP DISPLAY 'JOB ' VSE-NAME '-POWP= PARAMETER NOT Y OR N-- 'FORCED TO N' UPON CONSOLE

Page 35: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

35© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

ELSE IF PARM-IN-1-5 = 'REMT=' MOVE '1' TO PARM-SW IF PARM-REC-SEC-NUM-1-A = 'Y ' OR 'N ' MOVE PARM-REC-SEC-NUM-1-A TO SAVE-REMT-Y-OR-N HD-2A-REMT ELSE MOVE 'N' TO SAVE-REMT-Y-OR-N HD-2A-REMT DISPLAY 'JOB ' VSE-NAME '-REMT= PARAMETER NOT Y OR N-- 'FORCED TO N' UPON CONSOLE ELSE IF PARM-IN-1-5 = 'RPTS=' MOVE '1' TO PARM-SW IF PARM-REC-SEC-NUM-1-A = '1 ' OR '2 ' OR 'N ' OR 'B ' MOVE PARM-REC-SEC-NUM-1-A TO SAVE-RPTS-1-OR-2-OR-B-OR-N HD-2A-RPTS ELSE MOVE 'B' TO SAVE-RPTS-1-OR-2-OR-B-OR-N HD-2A-RPTS DISPLAY 'JOB ' VSE-NAME '-RPTS= PARAMETER NOT 1, 2 N- 'OR B-FORCED TO B' UPON CONSOLE ELSE IF PARM-IN-1-5 = 'SECT=' MOVE '1' TO PARM-SW IF PARM-DONE-SW = 'Ø' DISPLAY 'JOB ' VSE-NAME '-SECT= PARAMETER SPECIFIED- 'N PARM OPERAND OF // EXEC' UPON CONSOLE GO A999-CALL-BOMBER ELSE ADD 1 TO SECT-COUNT IF PARM-REC-SEC-1 = SPACE AND PARM-REC-SEC-2 = SPACE DISPLAY 'JOB ' VSE-NAME '-SEC TABLE ' SECT-COUNT ' BL- 'ANK-IGNORED' UPON CONSOLE ELSE IF PARM-REC-SEC-1 > SPACE OR PARM-REC-SEC-2 > SPACE PERFORM AØ15-LOAD-SEC-TAB ELSE NEXT SENTENCE ELSE IF PARM-IN-1-5 = 'TRAN=' MOVE '1' TO PARM-SW IF PARM-REC-SEC-NUM-1-A = '4 ' OR '8 ' MOVE PARM-REC-SEC-NUM-1-A TO SAVE-TRAN-4-OR-8 HD-2A-TRAN ELSE MOVE '4' TO SAVE-TRAN-4-OR-8 HD-2A-TRAN DISPLAY 'JOB ' VSE-NAME '-TRAN= PARAMETER NOT 4 OR 8-- 'FORCED TO 4' UPON CONSOLE ELSE IF PARM-IN-1-5 = 'USID='

Page 36: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

36 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

MOVE '1' TO PARM-SW IF PARM-REC-SEC-NUM-1-A = 'F ' OR '4 ' OR '8 ' MOVE PARM-REC-SEC-NUM-1-A TO SAVE-USID-F-OR-4-OR-8 HD-2A-USID ELSE MOVE 'F' TO SAVE-USID-F-OR-4-OR-8 HD-2A-USID DISPLAY 'JOB ' VSE-NAME '-USID= PARAMETER NOT 4, 8 OR- ' F-FORCED TO F' UPON CONSOLE ELSE IF PARM-IN-1-1 = '9' AND PARM-IN(2:7Ø) NOT > SPACE DISPLAY 'JOB ' VSE-NAME '-9 PARAMETER IS BLANK' UPON CONSOLE GO A999-CALL-BOMBER ELSE IF (PARM-IN-1-1 = '3' OR '5' OR '9') AND PARM-SW = 'Ø' DISPLAY 'JOB ' VSE-NAME '-3, 5 OR 9 PARAMETER/S SPECIFIED- ' BEFORE ANY OTHERS' UPON CONSOLE GO A999-CALL-BOMBER ELSE IF PARM-IN-1-1 = '3' OR '9' IF PARM-DONE-SW = 'Ø' DISPLAY 'JOB ' VSE-NAME '-3 OR 9 PARAMETER SPECIFIED- 'IN PARM OPERAND OF // EXEC' UPON CONSOLE GO A999-CALL-BOMBER ELSE IF PARM-IN-1-1 = '9' AND FIVE-SW = 'Ø' MOVE '1' TO NINE-SW DISPLAY 'JOB ' VSE-NAME '-NO 5 RECORD FOUND BEFORE 9- 'RECORD-SNT NOT SUBMITTED' UPON CONSOLE ELSE IF PARM-IN-1-1 = '9' AND NINE-SW = '1' DISPLAY 'JOB ' VSE-NAME '-MULTIPLE 9 RECORDS READ-IGN- 'ORED' UPON CONSOLE ELSE IF PARM-IN-1-1 = '9' AND NINE-SW = 'Ø' AND SAVE-ASNT-Y-OR-N = 'Y' MOVE '1' TO NINE-SW MOVE PARM-IN TO POWP-PARM-1 PERFORM B12Ø-SUBMIT IF SAVE-POWP-Y-OR-N = 'Y' DISPLAY 'JOB ' VSE-NAME '-' POWP-PARM-REPL-JB ' SUBMITTED' UPON CONSOLE ELSE NEXT SENTENCE ELSE IF SAVE-POWP-Y-OR-N = 'N' AND SAVE-ASNT-Y-OR-N = 'Y' AND THRE-SW = 'Ø'

Page 37: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

37© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

OPEN OUTPUT CARDOT IF CO-STATUS NOT = 'ØØ' DISPLAY 'JOB ' VSE-NAME '-CARDOT OPEN ERROR,- 'FILE STATUS=' CO-STATUS UPON CONSOLE GO A999-CALL-BOMBER ELSE MOVE '1' TO THRE-SW MOVE PARM-IN TO POWP-PARM-1 MOVE PARM-IN(72:1) TO POWP-PARM-1(73:1) MOVE SPACE TO POWP-PARM-1(72:1) PERFORM B12Ø-SUBMIT ELSE MOVE '1' TO THRE-SW MOVE PARM-IN TO POWP-PARM-1 MOVE PARM-IN(72:1) TO POWP-PARM-1(73:1) MOVE SPACE TO POWP-PARM-1(72:1) PERFORM B12Ø-SUBMIT ELSE IF PARM-IN-1-1 = '5' AND PARM-DONE-SW = 'Ø' DISPLAY 'JOB ' VSE-NAME '-5 PARAMETER SPECIFIED IN PARM O- 'PERAND OF // EXEC' UPON CONSOLE GO A999-CALL-BOMBER ELSE IF PARM-IN-1-1 = '5' AND FIVE-SW = '1' DISPLAY 'JOB ' VSE-NAME '-PARAMETER ' PARM-COUNT ' MULTIP- 'LE 5 RECORDS' UPON CONSOLE GO A999-CALL-BOMBER ELSE IF PARM-IN-1-1 = '5' AND THRE-SW = 'Ø' AND SAVE-ASNT-Y-OR-N = 'Y' DISPLAY 'JOB ' VSE-NAME '-NO 3 RECORD/S SUBMITTED BEF- 'ORE 5 RECORD' UPON CONSOLE GO A999-CALL-BOMBER ELSE IF PARM-IN-1-1 = '5' MOVE '1' TO FIVE-SW SORT SORT-FILE ASCENDING SORT-TRANSEC-VALUE SORT-ID SORT-USERID SORT-REMOTE-SYSID INPUT PROCEDURE AØ3Ø-READ-DFHCSD THRU AØ3Ø-READ-IESCNTL-EXIT OUTPUT PROCEDURE C1ØØ-REPORT THRU C199-REPORT-EXIT ELSE DISPLAY 'JOB ' VSE-NAME '-PARAMETER ' PARM-COUNT ' INVALI- 'D' UPON CONSOLE DISPLAY ' -PARAMETER=' PARM-IN UPON CONSOLE GO A999-CALL-BOMBER. IF FIVE-SW = '1' AND SORT-RETURN NOT = ZERO

Page 38: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

38 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

MOVE SORT-RETURN TO SORT-RTRN-CODE DISPLAY 'JOB ' VSE-NAME '-SORT FAILURE, RETURN CODE=' SORT-RTRN-CODE UPON CONSOLE GO A999-CALL-BOMBER. AØØ6-PROCESS-PARM-EXIT. EXIT. AØØ7-COPY-IESCNTL. MOVE LENGTH OF IE-RECORD TO IE-REC-LEN. READ IESCNTL NEXT RECORD AT END MOVE '1' TO IE-EOF GO AØØ7-COPY-IESCNTL-EXIT. IF IE-STATUS NOT = 'ØØ' IF IE-STATUS NOT = '1Ø' DISPLAY 'JOB ' VSE-NAME '-IESCNTL READ ERROR, FILE ST- 'ATUS=' IE-STATUS UPON CONSOLE MOVE IE-VSAM-STATUS-R15 TO VSAM-R15 MOVE IE-VSAM-STATUS-FUN TO VSAM-FUN MOVE IE-VSAM-STATUS-FBK TO VSAM-FBK DISPLAY ' -VSAM STATUS=' VSAM-STATUS UPON CONSOLE GO A999-CALL-BOMBER ELSE MOVE '1' TO IE-EOF GO AØØ7-COPY-IESCNTL-EXIT. IF IE-TYPE > 'US' MOVE '1' TO IE-EOF GO AØØ7-COPY-IESCNTL-EXIT. IF IE-REC-LEN NOT = LENGTH OF IE-RECORD DISPLAY 'JOB ' VSE-NAME '-IESCNTL "US" RECORD NOT 298 BYT- 'ES' UPON CONSOLE DISPLAY ' -' IE-RECORD UPON CONSOLE GO A999-CALL-BOMBER. MOVE IE-RECORD TO CPY-REC. WRITE CPY-REC. IF CP-STATUS NOT = 'ØØ' DISPLAY 'JOB ' VSE-NAME '-CPYFILE WRITE ERROR, FILE STATU- 'S=' CP-STATUS UPON CONSOLE GO A999-CALL-BOMBER. AØØ7-COPY-IESCNTL-EXIT. EXIT. AØØ8-LOAD-GRPL-TAB. MOVE 1 TO INDXG1-COUNT. PERFORM AØØ9-MOVE-GRPL-TAB THRU AØØ9-MOVE-GRPL-TAB-EXIT VARYING INDXG-COUNT FROM 1 BY 1 UNTIL PARM-REC-GRP(INDXG-COUNT) = ' ' OR INDXG-COUNT > 62. IF (INDXG-COUNT > 62 AND INDXG-COUNT NOT = 8Ø) OR PARM-REC-GRP(INDXG-COUNT) NOT = ' ' MOVE SPACE TO GRPLIST-NAME DISPLAY 'JOB ' VSE-NAME '-GRPL= PARAMETER '

Page 39: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

39© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

GRPL-COUNT ' BEYOND COL 62-REMAINDER IGNORED' UPON CONSOLE ELSE IF PARM-REC-GRP(INDXG-COUNT) = ' ' MOVE GRPLIST-NAME TO GRPLIST-TABLE-ENTRY(INDXG2-COUNT) HD-2B-GRPL-ENTRY(INDXG2-COUNT) ADD 1 TO INDXG2-COUNT. AØØ8-LOAD-GRPL-TAB-EXIT. EXIT. AØØ9-MOVE-GRPL-TAB. IF INDXG2-COUNT > 7 DISPLAY 'JOB ' VSE-NAME '-TOO MANY GRPL= ENTRIES-REMAINDE- 'R IGNORED' UPON CONSOLE MOVE SPACE TO GRPLIST-NAME MOVE 8Ø TO INDXG-COUNT GO AØØ9-MOVE-GRPL-TAB-EXIT. IF PARM-REC-GRP(INDXG-COUNT) NOT = ',' AND NOT = ' ' MOVE PARM-REC-GRP(INDXG-COUNT) TO GRPLIST-NAME-ENTRY(INDXG1-COUNT) ADD 1 TO INDXG1-COUNT IF INDXG1-COUNT > 9 DISPLAY 'JOB ' VSE-NAME '-GRPL= PARAMETER ' GRPL-COUNT ' INVALID-ALL ENTRIES IGNORED' UPON CONSOLE MOVE SPACE TO GRPLIST-NAME MOVE 1 TO INDXG1-COUNT INDXG2-COUNT MOVE 8Ø TO INDXG-COUNT ELSE NEXT SENTENCE ELSE MOVE GRPLIST-NAME TO GRPLIST-TABLE-ENTRY(INDXG2-COUNT) HD-2B-GRPL-ENTRY(INDXG2-COUNT)D DISPLAY 'GRPLIST-NAME=' GRPLIST-NAME MOVE SPACE TO GRPLIST-NAME MOVE 1 TO INDXG1-COUNT ADD 1 TO INDXG2-COUNT IF PARM-REC-GRP(INDXG-COUNT) = ' ' MOVE 8Ø TO INDXG-COUNT. AØØ9-MOVE-GRPL-TAB-EXIT. EXIT. AØ1Ø-LOAD-GRUP-TAB. MOVE 1 TO INDXY1-COUNT. PERFORM AØ11-MOVE-GRUP-TAB THRU AØ11-MOVE-GRUP-TAB-EXIT VARYING INDXY-COUNT FROM 1 BY 1 UNTIL PARM-REC-GRP(INDXY-COUNT) = ' ' OR INDXY-COUNT > 62. IF (INDXY-COUNT > 62 AND INDXY-COUNT NOT = 8Ø) OR PARM-REC-GRP(INDXY-COUNT) NOT = ' ' MOVE SPACE TO GROUP-NAME DISPLAY 'JOB ' VSE-NAME '-EXGP=/INGP= PARAMETER '

Page 40: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

40 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

GRUP-COUNT ' BEYOND COL 62-REMAINDER IGNORED' UPON CONSOLE ELSE IF PARM-REC-GRP(INDXY-COUNT) = ' ' MOVE GROUP-NAME TO GROUP-NAME-TABLE-ENTRY(INDXY2-COUNT) ADD 1 TO INDXY2-COUNT.D DISPLAY 'GROUP-NAME=' GROUP-NAME.D DISPLAY 'GROUP-NAME-TABLE=' GROUP-NAME-TABLE. AØ1Ø-LOAD-GRUP-TAB-EXIT. EXIT. AØ11-MOVE-GRUP-TAB. IF INDXY2-COUNT > 91 DISPLAY 'JOB ' VSE-NAME '-TOO MANY EXGP=/INGP= ENTRIES-RE- 'MAINDER IGNORED' UPON CONSOLE MOVE SPACE TO GROUP-NAME MOVE 8Ø TO INDXY-COUNT GO AØ11-MOVE-GRUP-TAB-EXIT. IF PARM-REC-GRP(INDXY-COUNT) NOT = ',' AND NOT = ' ' MOVE PARM-REC-GRP(INDXY-COUNT) TO GROUP-NAME-ENTRY(INDXY1-COUNT) ADD 1 TO INDXY1-COUNT IF INDXY1-COUNT > 9 DISPLAY 'JOB ' VSE-NAME '-EXGP=/INGP= PARAMETER ' GRUP-COUNT ' INVALID-ALL ENTRIES IGNORED' UPON CONSOLE MOVE SPACE TO GROUP-NAME MOVE 1 TO INDXY1-COUNT INDXY2-COUNT MOVE 8Ø TO INDXY-COUNT ELSE NEXT SENTENCE ELSE MOVE Ø TO TALLY INSPECT GROUP-NAME TALLYING TALLY FOR LEADING '*' IF TALLY > 1 DISPLAY 'JOB ' VSE-NAME '-EXGP=/INGP= PARAMETER ' GRUP-COUNT ' HAS ENTRY WITH MORE-' UPON CONSOLE DISPLAY ' -THAN 1 LEADING ASTERISK-ALL ENTRIES- ' IGNORED' UPON CONSOLE MOVE SPACE TO GROUP-NAME MOVE 1 TO INDXY1-COUNT INDXY2-COUNT MOVE 8Ø TO INDXY-COUNT ELSE MOVE Ø TO TALLY INSPECT GROUP-NAME TALLYING TALLY FOR ALL '*' MOVE TALLY TO SAVE-TALLY MOVE Ø TO TALLY INSPECT GROUP-NAME TALLYING TALLY FOR ALL '+' IF TALLY > Ø AND SAVE-TALLY > Ø DISPLAY 'JOB ' VSE-NAME '-EXGP=/INGP= PARAMETER ' GRUP-COUNT ' HAS ENTRY OF ' GROUP-NAME

Page 41: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

41© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

' WITH-' UPON CONSOLE DISPLAY ' -MIX OF * AND +-ALL ENTRIES IGNO- 'RED' UPON CONSOLE MOVE SPACE TO GROUP-NAME MOVE 1 TO INDXY1-COUNT INDXY2-COUNT MOVE 8Ø TO INDXY-COUNT ELSE MOVE GROUP-NAME TO GROUP-NAME-TABLE-ENTRY(INDXY2-COUNT)D DISPLAY 'GROUP-NAME=' GROUP-NAME MOVE SPACE TO GROUP-NAME MOVE 1 TO INDXY1-COUNT ADD 1 TO INDXY2-COUNT IF PARM-REC-GRP(INDXY-COUNT) = ' ' MOVE 8Ø TO INDXY-COUNT. IF PARM-IN-1-5 = 'EXGP=' MOVE '1' TO EX-SW ELSE MOVE '1' TO IN-SW. AØ11-MOVE-GRUP-TAB-EXIT. EXIT. AØ15-LOAD-SEC-TAB. IF PARM-REC-SEC-1 > SPACE IF (PARM-REC-SEC-NUM-1-A > 'ØØ' AND < '65') MOVE PARM-REC-SEC-NUM-1 TO SEC-TABLE(PARM-REC-SEC-NUM-1) MOVE PARM-REC-SEC-DESC-1 TO SEC-TABLE-DESC(PARM-REC-SEC-NUM-1) ELSE DISPLAY 'JOB ' VSE-NAME '-SEC TABLE-L ' SECT-COUNT ' INVALID-IGNORED' UPON CONSOLE. IF PARM-REC-SEC-2 > SPACE IF (PARM-REC-SEC-NUM-2-A > 'ØØ' AND < '65') MOVE PARM-REC-SEC-NUM-2 TO SEC-TABLE(PARM-REC-SEC-NUM-2) MOVE PARM-REC-SEC-DESC-2 TO SEC-TABLE-DESC(PARM-REC-SEC-NUM-2) ELSE DISPLAY 'JOB ' VSE-NAME '-SEC TABLE-R ' SECT-COUNT ' INVALID-IGNORED' UPON CONSOLE. AØ2Ø-READ-DONE. IF NINE-SW = 'Ø' AND SAVE-ASNT-Y-OR-N = 'Y' AND SAVE-POWP-Y-OR-N = 'Y' DISPLAY 'JOB ' VSE-NAME '-WARNING-NO 9 RECORD SUBMITT- 'ED-DFHSNT NOT SUBMITTED' UPON CONSOLE. IF FIVE-SW = 'Ø' SORT SORT-FILE ASCENDING SORT-TRANSEC-VALUE SORT-ID SORT-USERID DESCENDING SORT-REMOTE-SYSID INPUT PROCEDURE AØ3Ø-READ-DFHCSD THRU AØ3Ø-READ-IESCNTL-EXIT

Page 42: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

42 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

OUTPUT PROCEDURE C1ØØ-REPORT THRU C199-REPORT-EXIT. IF SAVE-RPTS-1-OR-2-OR-B-OR-N NOT = 'N' AND FIVE-SW NOT = 'Ø' CLOSE REPOUT. CLOSE DFHCSD IESCNTL. IF SAVE-POWP-Y-OR-N = 'N' AND SAVE-ASNT-Y-OR-N = 'Y' CLOSE CARDOT. IF SAVE-NTAB-Y-OR-N = 'Y' CLOSE NAME-TABLE. MOVE Ø TO RETURN-CODE. GOBACK. AØ3Ø-READ-DFHCSD SECTION. IF ONCE-SW = 'Ø' IF SAVE-RPTS-1-OR-2-OR-B-OR-N = 'N' AND SAVE-ASNT-Y-OR-N = 'N' DISPLAY 'JOB ' VSE-NAME '-RPTS=N AND ASNT=N (NOTH- 'ING TO DO)' UPON CONSOLE GO A999-CALL-BOMBER. IF ONCE-SW = 'Ø' IF SAVE-RPTS-1-OR-2-OR-B-OR-N NOT = 'N' OPEN OUTPUT REPOUT IF SAVE-RPTS-1-OR-2-OR-B-OR-N = '1' DISPLAY 'JOB ' VSE-NAME '-FIRST REPORT ONLY SELEC- 'TED' UPON CONSOLE ELSE IF SAVE-RPTS-1-OR-2-OR-B-OR-N = '2' DISPLAY 'JOB ' VSE-NAME '-SECOND REPORT ONLY SELE- 'CTED' UPON CONSOLE ELSE IF SAVE-RPTS-1-OR-2-OR-B-OR-N = 'N' DISPLAY 'JOB ' VSE-NAME '-NO REPORTS SELECTED' UPON CONSOLE. IF ONCE-SW = 'Ø' PERFORM AØ6Ø-HEADINGS THRU AØ6Ø-HEADINGS-EXIT. MOVE '1' TO ONCE-SW. IF SAVE-NTAB-Y-OR-N = 'Y' AND NTAB-OPEN-SW = 'Ø' OPEN I-O NAME-TABLE IF NTAB-STATUS NOT = 'ØØ' DISPLAY 'JOB ' VSE-NAME '-DPNKTAB OPEN ERROR, FILE ST- 'ATUS=' NTAB-STATUS UPON CONSOLE MOVE NTAB-VSAM-STATUS-R15 TO VSAM-R15 MOVE NTAB-VSAM-STATUS-FUN TO VSAM-FUN MOVE NTAB-VSAM-STATUS-FBK TO VSAM-FBK DISPLAY ' -VSAM STATUS=' VSAM-STATUS UPON CONSOLE GO A999-CALL-BOMBER ELSE MOVE '1' TO NTAB-OPEN-SW. MOVE LOW-VALUE TO DF-RECORD.

Page 43: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

43© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

IF DF-EOF = 'Ø' AND GRPLIST-TABLE = SPACE MOVE SPACE TO DF-RECORD READ DFHCSD NEXT RECORD AT END MOVE '1' TO DF-EOF GO AØ3Ø-READ-IESCNTL ELSE IF DF-EOF = 'Ø' AND GRPLIST-TABLE > SPACE AND DF-SW = 'Ø'D DISPLAY 'GRPLIST=' GRPLIST-TABLE-ENTRY(INDXG3-COUNT)D DISPLAY 'GROUP-NAME=' GROUP-NAME-TABLE MOVE LOW-VALUE TO DF-KEY MOVE GRPLIST-TABLE-ENTRY(INDXG3-COUNT) TO DF-NAMED DISPLAY 'DF-KEY=' DF-KEY ', DF-STATUS=' DF-STATUSD DISPLAY 'DF-SW=' DF-SW ', DF-RECORD=' DF-RECORDD DISPLAY 'ENTRY=' GRPLIST-TABLE-ENTRY(INDXG3-COUNT) START DFHCSD KEY > DF-KEY READ DFHCSD NEXT RECORD IF DF-STATUS NOT = 'ØØ' AND NOT = '46' DISPLAY 'JOB ' VSE-NAME '-PREMATURE EOF1 ON DFHCSD-JO- 'B CANCELLED' UPON CONSOLE GO A999-CALL-BOMBER ELSE IF GRPLIST-TABLE-ENTRY(INDXG3-COUNT) NOT = DF-NAME OR DF-STATUS = '46' DISPLAY 'JOB ' VSE-NAME '-GRPL= ENTRY ' GRPLIST-TABLE-ENTRY(INDXG3-COUNT) ' NOT IN DF- 'HCSD-ENTRY IGNORED' UPON CONSOLE ADD 1 TO INDXG3-COUNT INDXG4-COUNT IF INDXG4-COUNT = INDXG2-COUNT DISPLAY 'JOB ' VSE-NAME '-NO SPECIFIED GRPL=- 'TABLE ENTRIES FOUND' UPON CONSOLE GO A999-CALL-BOMBER ELSE IF INDXG3-COUNT = INDXG2-COUNT MOVE '1' TO DF-EOF GO AØ3Ø-READ-IESCNTL ELSE MOVE 'Ø' TO DF-SW GO AØ3Ø-READ-DFHCSD ELSE READ DFHCSD NEXT RECORD IF DF-STATUS NOT = 'ØØ' DISPLAY 'JOB ' VSE-NAME '-PREMATURE EOF2 ON DFHCS- 'D' UPON CONSOLE GO A999-CALL-BOMBER ELSE MOVE '1' TO DF-SW.

Editor’s note: This article will be continued in the next issue.

Robert BotsisSenior Systems Programmer (USA) © Xephon 1999

Page 44: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

44 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

Assembler – the series (part one)

There are several reasons why Assembler scares a lot of programmers.One big one is that it is very easy to write incomprehensible code.Syntax rules that are pickier than JCL certainly don’t help. Andanother problem is that Assembler is also a bit hard to define, becauseit is really several programming languages in one.

Three of these languages are:

• A machine language translator for the System/3x0 (IBMmainframe, System 360/370/390).

• A macro language that allows ‘new’ instructions to be created andexecuted that can conditionally create zero or more machinelanguage instructions, macros, or any other piece of Assemblercode.

• A machine language translator for System/3x0 channels, whichare processors in their own right.

There are arguably others as well, such as the conditional assemblystatements, the many ways in which Assembler symbols can bedefined, as well as the page and spacing control directives for sourcelistings. Even System/3x0 machine language translation itself couldbe broken down into instructions and data areas.

Since Assembler’s primary purpose is to give extremely precisecontrol over the generation of System/3x0 machine instructions, agood way to start any discussion of Assembler is by looking at thosemachine instructions and the computer architecture they control.Although there have been many additions to both machine instructionsand architecture in the last 35 years, the DOS/360 Assembler sourcecode, object deck, and load module (Phase) created in the mid-1960sfor the first System/360s will run today on VSE/ESA.

ARCHITECTURE AND DATA FORMATS

All System/3x0s have 16 General Purpose Registers (GPRs or GRs)numbered zero to 15. Each register has 32 bits or four bytes, whichalso happens to be the size of a word. Now that the requirement for

Page 45: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

45© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

addresses, numbers, and instructions to be aligned on either full-wordor half-word boundaries has been lifted, the concepts of the ‘word’ (or‘full word’) and ‘half word’ are no longer as important as they oncewere. But they are still used to describe the size of binary numbers –for example, a binary number stored in two bytes is referred to as half-word binary.

Memory addresses are always stored as a full word (four bytes), eventhough they were once (and still can be) 24 bits. Today, addresses are31 bits long, with the 32nd bit used to differentiate between 24- and31-bit addresses. The ESA architecture also allows reference to anaccess register, which expands the size of an address space beyond the2GB that 31-bit addresses allow – 231 = 2 billion = 2G.

Characters are stored in one byte or eight bits. This allows 256different characters to be represented. The definition of what each bitpattern means is given by IBM’s Extended Binary-Coded DecimalInterchange Code (EBCDIC). Although the common characters remainthe same, less common characters may be defined differently indifferent languages or regions of the world to address local needs. Forexample, the currency symbol varies from one country to another, asdoes the need to accent certain letters. And, obviously, when thealphabet or the characters used to express numbers differ from the A-Z and 0-9 with which we’re familiar, even these characters mustchange. When 256 is too big a restriction on the number of possiblecharacters, two bytes are used to define each character. This is knownas the Double-Byte Character Set (DBCS), as opposed to the Single-Byte Character Set (SBCS), in which one byte is used for eachcharacter. (Note that our discussion assumes the latter.)

So, what can a register hold? One memory address. One full-wordbinary number. Two half-word binary numbers. Four characters. Oranything else you can fit in four bytes – like 32 bit flags.

LR

One of the simplest machine instructions is the Load Registerinstruction:

LR 2,1

Page 46: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

46 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

This instruction copies the entire contents of register one to registertwo. The contents of register one do not change in the process.

Assembler would translate this instruction into

1821

when expressed in hexadecimal notation. Here, the first byte, X'18',is the operation code for the Load Register instruction. The half-byteX'2' is the first register, and the second half-byte X'1' is the secondregister.

HEX

Hexadecimal notation is essentially a number system based on 16,instead of on the 10 we are used to, or the 2 that binary notation (onlyones and zeros) uses. In mathematics, these systems are known,respectively, as Base 16, Base 10 (decimal), and Base 2.

Just as decimal uses the digits 0-9 to form a number, hexadecimal uses0-15. But, because it needs to express each digit in a single character,hexadecimal uses the letters A-F to represent 10-15.

Although you’ll sometimes need to translate hexadecimal into decimal,or vice versa, it is usually more useful – and certainly a lot easier – totranslate between binary and hexadecimal. Each hexadecimal digittranslates into four binary digits. For example, the zero in hexadecimal10 translates into four zeros in binary, giving 10000. And both 10 inhexadecimal and 10000 in binary are equivalent to 16 in decimal.

A bit is a binary digit (Binary digIT). A byte is eight bits. Since it takesfour binary digits to make a hexadecimal digit, there are twohexadecimal digits per byte.

It is often useful to display memory or files in hexadecimal. Whenmemory or a file is printed normally as characters and in hexadecimalright beside it, this is known as dump format, or may just be called adump. So, if your program – no matter what language it is written in– failed during execution or you stopped it with a break point and saw1821 in the hexadecimal display near the point of execution, youwould know that your program was trying to copy the contents ofregister one into register two.

Page 47: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

47© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

In this series of articles, in Assembler programs, IBM manuals, and ahost of other places, the notation X'1821' is used to specify the two-byte hexadecimal value 1821. This is to differentiate betweenhexadecimal and standard everyday decimal values.

AR

If you would prefer to add the contents of register one to the contentsof register two and put the result in register two, you would code:

AR 2,1

Again, note that the destination (‘to’) is first and the source (‘from’)is second. This is normally, but not always, the case in Assembler.

The calculation register 1 + register 2 => register 2 is performedcleanly, even though register two contains one of the numbers in thecalculation as well as being the place where the result of the calculationis stored. Conceptually, calculations occur elsewhere and their integrityisn’t threatened when the destination is also one of the sources used.

SR

Likewise, you can subtract:

SR 2,1

Here, the contents of register two are subtracted from register one andthe results placed in register two.

In virtually any other programming language, the following would becalled unnecessarily tricky coding, but in Assembler

SR 2,2

is something that everyone is expected to know, so you can’t expectthere to be a helpful comment describing what is happening. Subtractinga register from itself zeroizes the register and is probably the best wayto do this. Back in the days of the System/360, when exact executiontimes were published by IBM for every machine instruction, thefastest way to zeroize multiple registers was to subtract the first onefrom itself and then load that zero value into the other registers. Thiswas because a Load Register (LR) was slightly faster than a Subtract

Page 48: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

48 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

Register (SR). (This is a true story from one of the developers of a non-IBM operating system for the System/360 Model 67.)

The Assembler would translate these instructions into machinelanguage that would appear in a dump in hexadecimal as:

1821 LR 2,1 1A21 AR 2,1 1B21 SR 2,1 1B22 SR 2,2

REGISTER NOTATION

However, you will probably never see an Assembler source programthat contains the instructions coded as you have just seen them. Youare more likely to see:

LR R2,R1 AR R2,R1 SR R2,R1 SR R2,R2

Of and by itself, this is not legitimate notation – the only reason itworks is because R1 and R2 were defined elsewhere in the program,as they are in virtually every Assembler program. Some place,perhaps even where the listing has been turned off so that it will notappear in the Assembler’s printed output, you will find the followingstatements:

R1 EQU 1 R2 EQU 2

These statements are coded in yet another Assembler sub-language,which allows the definition of symbols. In this case, the name R1 willbe replaced by the number 1 whenever it is used, and R2 by 2.

More frequently, the register will actually be named to describe itspurpose in the program:

AR BALANCE,DEPOSIT

As well as the EQU statements above, you will also find:

DEPOSIT EQU R1 BALANCE EQU R2

Note how a symbol can be defined by another symbol.

Page 49: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

49© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

The word ‘symbol’ was chosen to describe R1 and DEPOSIT definedin EQU statements. The word ‘variable’ was not chosen, because itnormally refers to the name you as a programmer give to a memorylocation you define for the storage of data, be it a number, or somecharacters, or bit flags.

This is an important difference: while variables occupy space inmemory in the final program, symbols do not; they exist only in thesource code, and disappear after assembly of the program. There isalso an important difference between EQU and AR. Both are operationsin the (many languages that make up the) Assembler language, butwhereas AR gets translated into a machine instruction and takes upspace in memory in the program, EQU does not. In other words, whileAR can be translated into a machine instruction, EQU cannot.

SYNTAX

Before exploring the remainder of the Register-to-Register (RR)instructions, let’s just pause to consider Assembler instruction formator syntax.

Like JCL and IBM’s original utilities, Assembler is based on punchcards and their restrictions – 80-column card, with columns 73-80used for sequence numbers, and upper-case letters only. In fact, tosave time in the original DOS/360 and OS/360 implementations, thesame language processor was used for Assembler, JCL, and utilities.

The most important rule in Assembler is that blanks are delimiters.One or more blanks end each field in an Assembler statement. The fourfields are:

• Name or label

• Operation

• Operands

• Comments

So far, only the EQU statements have had a name. So, in

R1 EQU 1

R1 is the name, EQU is the operation, and 1 is the operand.

Page 50: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

50 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

In the following RR instructions,

LR R2,R1

LR is the operation, and R2 and R1 are the operands. Since there is noname (label), the operation (LR) must be preceded by one or moreblanks. That means it cannot begin in column 1. Although column 2is acceptable, the standard is column 10, although this is by no meansenforced. With the relatively recent introduction of long names (thereused to be a maximum of eight characters), the operation may have tostart in a later column.

Likewise, there must be at least one blank between the operation (LR)and the operands (R2,R1). The standard starting position for operandsis column 16, but again this is not enforced and is impossible when theoperation starts in column 10 and is longer than five characters, as istypically the case with macro names.

The operands are separated by commas, but the commas cannot haveblanks anywhere around them because a blank ends the operands andbegins the comments. The standard starting position for comments iscolumn 35.

The statement must end by column 71 or be continued on another line.The rules of continuation will be discussed later in this series, whenwe look at situations in which they’re required – for instance, whendefining storage locations, such as those initialized to long characterstrings.

NEXT ISSUE

In part two of this article, in the next issue, we discuss the rest of theRR instructions, condition codes, and decision-making by branchingbased on the condition code. A discussion of defining storage locationsin memory and moving data between those storage locations andregisters will follow.

Jon E Pearkins(Canada) © Xephon 1999

Page 51: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

51© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

VSE-L mailing/discussion list Web site

In this article in our series of VSE Web site reviews, we visit the VSE-L mailing/discussion list, which can be found at <http://listserv.lehigh.edu/lists/vse-l/>

This Web site, formally titled the VSE-L Mailing/Discussion List, infact contains a wealth of VSE-related material in addition to thevaluable mailing list itself. The opening page shows six main links.The upper-right link is accurately titled VSE & VM Vendor & Productbonanza! This inner page begins and ends, as do many other pages,with four rainbow-hued lines which contain the important links fornavigating within this site: vse-l; New, Subscribing, SubscriptionControls, Archives, Vendors/Products, Sponsor; Code, Year 2000,Languages, User Groups, Humour, Jobs, more; and Suggestions,WAVV, IBM, Help!, FAQ, Guestbook.

The first main heading below these navigation lines is VSE-L Vendors& Products (alphabetical), which presents an A-to-Z directory ofvendors large and small, well-known and obscure. No-one has usedthe telephone book trick of being listed first as AAAAAAAAAA AutoRepair, and there’s no Anthony A. Aardvark; the first listing is ACT –Applied Computer Technology PC-based System Network Architecture(SNA) and TCP/IP tests and the last is (coincidentally!) Xephon[Publications]: contains link to FREE – View and download codefrom 3500 articles published in Xephon Update publications beforeDecember ’96.

Between ACT and Xephon are listed many other company names,along with descriptions, product designations, and supplementarylinks. For example, Ascent Solutions (ASI) is designated as USAmarketer of PKZIP for VSE, VM,... with the attribution Developed inUK by Targetfour Ltd. ASI’s page loads crisply, offering savings oftime, space, and money by compressing mainframe data with PKZiptechnology. Use of standard compression is demonstrated by thenearby display of the WinZip product from Nico Mak Computing, awell-regarded and popular PC compression tool. And, closing theloop, Nico Mak is a long-time mainframer. The Target4 page, with

Page 52: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

52 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

dancing and splashing dolphins which transform as the cursor hoversover them, highlights PKZip and other products. Many other companiesactive in the VSE-community are listed, such as Barnard Software(OPTI-CACHE disk cache and other ‘OPTI’ products), CompuwareProductivity (eg ABEND-AID and Year 2000 tools), Data 21 (CICSsolutions, including IpServer for CICS for VSE) and IntelliWare(VSE training, consulting, programming, system management tools,P/390 & R/390 sales, and WIN/VSE product).

Once you reach ‘I’ in the alphabetical listings, the format changes, asthe Webmaster, Wayne Mery, diverts through that famous I-company,IBM. VSE-related IBM Web pages are presented in several boxes,with IBM’s main VSE Web page (described in the December issue ofVSE Update) highlighted. The next IBM page linked is for anADSM/VSE overview, ponderously headed ADSTAR DistributedStorage Manager for VSE/ESA Version 1.2 requirements and support.This page is designed in FAQ fashion, answering questions such as:

• What software and hardware do I need to run this ADSM server?

• What ADSM clients are supported by this ADSM server?

• What databases does ADSM back up?

• What devices does ADSM for VSE/ESA support?

• What related information might I want to read?

Hardware and software requirements are noted as Any System/390large system and VSE/ESA Version 1.3 or later with IBM C/370Library 2 (though since ADSM operates on P/390 and equivalentpocket-sized systems, it seems that the definition of ‘large’ haschanged). Client platforms supported include DOS, IBM AIX, IBMOS/2 Warp, LanServer, Warp Server, Microsoft Windows, and NovellNetWare, each of which links to a client-specific FAQ answering:

• What software and hardware do I need to run this client?

• What different components are available for this client?

• What related information might I want to read?

Page 53: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

53© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

It also lists very comprehensive requirements for hardware, operatingsystem, and communication protocols, ending with a tabular displayof which client components are offered. These can includeadministrative, back-up/archive, and HSM functions, each offeringGraphical User Interface and/or command line interface, and an API.Final ADSM topics and questions include:

• Overview of ADSM databases ADSM backs up

• How to do ‘bare metal restores’ on Windows ADSM

• Frequently Asked Questions.

Back on the VSE-L page, there are similar links to IBM resources onCICS, and assorted links such as IBM Debug Tool for VSE, IBM DWFand Workdesk (DWF is Distributed Workstation Feature), IBMDFSORT/VSE, Programming/Languages for VSE (COBOL, PL/I,C,..), and IBM YEAR 2000 & VSE. A brief interlude of VM-relatedlinks includes IBM’s VM download page (software free for the taking,developed by IBMers and others), IBM’s VM Open Edition (Unix)page, and Bill Bitner’s VM pages. The latter page is worth loading justto watch Bill’s caricature listen to and answer performance questions.Bill’s page begins:

I joined IBM in 1985 and have worked in VM performance my entirecareer, and I love it. If you love performance (or hate it) you mightwant to check out the other VM performance information. Myunderstanding of what VM performance means in the real world grewgreatly when I became a development representative to the VMPerformance and Capacity Planning Project in the SHAREorganization.

Bill’s resources are a mixture of the useful and the fun, surely ofinterest to sites running VSE under VM – or anyone just curious aboutperformance issues related to that ‘other’ operating system.

Following the foray into VM-land comes a gaggle of other strikinglyuseful IBM sites. They’re easily found because they begin with abright-blue link big, Big, BIG Blue at the big, Big, BIG IBM page ina growing font size, which invokes the main IBM Web site. Muchmore useful is the following link, find someone at IBM, which reaches

Page 54: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

54 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

a Web page for looking up e-mail addresses of IBMers. This replacesthe former useful IBMNIC (network information centre) e-mailservice which seems to have vanished. The locator page begins Findus fast – Trying to reach someone at IBM? Enter the name of an IBMemployee to find his or her e-mail address. This page is especiallyvaluable as IBMers convert from former – often VM-based – e-mailaddresses to new Lotus Notes-based addresses, with no e-mailforwarding provided from old to new destinations. Picking a non-random name, I found six Gerstners at IBM. For five, Mailto links areprovided, for Lou, a Web link is given, which does include the abilityto send e-mail.

The next two links allow you to subscribe to IBM announcements andsearch for APARs and PTFs, respectively. The next link, IBMalphaWorks On-line Lab for the Next Generation of the Net is a low-key IBM initiative for distributing Internet tools, software, andcomponents, described as cutting-edge Internet research andtechnology. This page is clearly part of the new IBM, offering moresoftware downloads, source-based material, and experimentalresources. Its Internet/Java orientation is shown by the prominentaward from JavaWorld, alphaWorks has been chosen as the bestcomponent site of the year to get reusable, pre-built code that addsfunctionality to applications. The pop-up navigation bar offers dozensdestinations, from Access Builder for SAP R/3 to Wiring Helpers,passing through intriguing titles such as BeanBag, BeanExtender, andBigDecimal. Other IBM resources include application development(VisualAge), training/education, manuals, P/390, and REXX. TheIBM links list concludes with DB2 (SQL/DS), tape products,teleconferences, and VTAM (Raleigh, NC).

The alphabetical vendor tour continues, offering product descriptions(J & C Migrations – RPG to COBOL translations and Year 2000solutions), industry genealogy (Legent – see Computer Associates)and company assessments (MacKinney Software – tons of systemtools). While there’s no keyword search, the list is short enough anddescriptive enough to be worth occasional perusal, to locate nuggets,products, and services that can simplify your work or improve datacentre operation.

Page 55: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

55© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

The next link from the main VSE-L page is titled Cruise the Internet,and it surely does. The page opens Links to the VSE Universe andBeyond, which is a fair assessment for a page containing manycategories and dozens of links. Each category also includes a Tell uswhat’s missing / submit a suggestion link, ensuring that this resourceevolves, grows, and remains current. The first section, Special Items,includes a few performance-related links, along with Eric Loriaux’sSystem/390 site (accurately described as comprehensive and well-organized) and a new book, Exploring IBM’s New Age Mainframes.And I’d have been well advised to visit the next section, 3270 /Internet / Connectivity during my recent search for a TN3270 client,since it links to several vendors offering related products and services.

Next come links which are worth spending some time reading –starting with A Brief History of the Internet at the definitive location,the Internet Society. That’s followed by American Registry for InternetNumbers, which can demystify much about Internet addressing andnumbering, and which includes a link to a tribute to Jon Postel, anInternet pioneer and volunteer who helped bring order out of chaos.Cathcart’s Corner, the lair of a UK IBMer, begins:

Maximize your technology investments

Where theory meets reality. Here you will find white papers,presentations and other material that has been informally developedand officially delivered at customer briefings, conferences, and tradeshows.

Featured here is material that covers many of the key areas of OS/390Software, including e-business, Network Computing, Object Orientedtechnology including Java, Open Systems, Client/Server, and ServerIntegration.

This page is managed and maintained by Mark Cathcart, ConsultantIT Specialist and Software Strategist for IBM System/390 Division,Europe, Middle East, and Africa.

The next few links are CERT/CC (CERT Coordination Centre) – THEplace for Internet/system security information (advisories, attacks,prevention, reporting, ...), Etiquette on the Internet,

Page 56: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

56 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

Internationalization, and Internet Country Codes, followed at adistance by The RFC Index (RFC citations and descriptions) andsearch engine, a good source for understanding Internet structure andevolution, and tracking proposals for its future. Returning to the VSEuniverse, the next section covers TCP/IP for VSE and related items,linking first (of course) to the TCP/IP for VSE product home page.This home page for Connectivity Systems starts cheerfully withWelcome to the only native implementation for the VSE environment!,and provides product, marketing/sales, and technology information,ranging from where to buy it to downloadable TCP/IP for VSEprogramming examples.

The next section on the links page, Discussion/Mailing Lists, providesaccess to one of the Internet’s greatest resources, general and special-topic mailing lists. After some general lists and list-oriented searchengines, Specific Mainframe Discussion Lists links some P/390,MVS, and VSE lists – after all, the name and a major theme of this Website! Line vse-l – vse-l Newsgroup Archives includes two links, to theVSE-L mailing list and its archives. The VSE-L list is a tremendousVSE community resource, offering answers to questions, early noticeof problems and announcements, interaction with hundreds of otherVSE users and IBM development/support people, and an antidote tofeeling alone in the world of VSE. The VSE-L Subscribe link on themain page is aptly subtitled “Why wouldn’t you?”. The list’s dailydigest usually has dozens of posts from VSEers around the world; thelist can be read either as a digest (a single daily collection of posts) oras individual e-mails. Each mode has its advantages, and selection isa matter of personal preference. In addition, the archives allowsearching and reading back to the list’s origin in 1987.

The page suggests using DejaNews for searching list contents fromJuly 1995 to the present, noting that this is more powerful thananything presently available at Lehigh University (the list’s host),with extensive on-line help and well over 10,000 articles. Searchingthe complete archive for keyword VSE-L, the first item retrieved isfrom Wayne Mery, VSE-L list owner and Webmaster, with the subjectAdministrivia: Holiday operations for vse-l. Searching for ‘VSE’retrieved several thousand posts, including many received in today’smorning digest. The use of additional keywords can refine the search

Page 57: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

57© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

to yield a manageable number of notes, targeted on topics of interest.The list archive page notes that anyone can read the archive but youmust subscribe to the list before being able to post e-mail to it. Adigression through humour includes Darwin Awards, ranging fromurban legends to unconfirmed and confirmed stories of human follyresulting in evolution serving to weed out the less capable membersof a species.

Back on the professional track, the next section is Jobs – providingseveral Web sites, mailing lists, and other resources for discussing,offering, and seeking jobs and information about them. This isfollowed by More Good Goodies & Simply Cool Stuff, clearly areasof Wayne’s interest, spanning Consumer Project on Technology toTyping Injury FAQ – Keyboard Alternatives and more. In between arean on-line dictionary of computing and a help desk FAQ. The lattersite (back one directory level from the FAQ) includes general helpdesk Q&A and related conference information and other resources,hosted by maven Philip Verghis.

The next links page section deals with Year 2000 issues, includingprint publications and on-line resource Web sites, including IBM’s“Year 2000 and VSE” location. That’s followed by resources on IBM’sP/390 technology, offering full System/390 function in a cost-effectiveand elegantly packaged configuration. Programmers of all persuasionswill enjoy the next section, an abundant set of language/applicationlinks, divided into Assembler; C, C++, COBOL; PL/I, REXX; 4GL,Cross-System; Design, Metrics; General Reference; and Unix-derivedGoodies (Awk and Perl). These vary from documentation to productinformation to downloadable tools, including:

Assembler – ESA/390 Principles of Operation, Dave’s HLASM pageC – FAQs posted to comp.lang.c COBOL – COBOL for VSE, COBOLmigration PTFs for VSE REXX – Object REXX, REXX FAQ, TheREXX Language Association, REXX Language Home Page, REXX atYahoo General Reference – Application Development Languages atIBM.

Just as mailing lists and newsgroups offer community-basednetworking and mutual aid, user groups and professional associationsare next on the links page. Listings range from WAVV (World Alliance

Page 58: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

58 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

of VSE and VM, described in my article in VSE Update December1998), highlighted in bold font, to ACM (Association for ComputingMachinery, the oldest computing professional society) andSHARE/GUIDE, two mainstays of mainframe computerdom. TheWAVV page notes that the next meeting will be at the Drawbridge Inn,Fort Mitchell, KY (Cincinnati) on October 22-26, 1999. A quick linkallows registering for the WAVV mailing list, and another offers pastconference results (handouts, FFA, requirements, etc).

The links page then offers dozens of nuggets under User Software forVSE and VM, including such items as A TON of Software from LeoLangevin and Freeware for VSE items for MQ-Series, batch,performance.... The former link downloads a zip file; the latter is aninteresting page within a bilingual personal/professional Webcollection. The last two links sections are WWW ... Beyond VSE andSPAM and Junk Mail. The remaining unexplored link on the mainVSE-L page provides information about VSE-L’s home (sweet home)and sponsors, and other mailing and discussion lists. Housekeepinglinks at the main page bottom include Wayne’s personal andprofessional pages, which include a pointer to a site encouragingorgan and tissue donation: a gift of life. The last stop on the tour mightbe the Guestbook, with the newest entries at bottom. As of this writing,the last four entries are as follows:

• Roland Chung, MAXC Consultants Inc, Toronto, Ontario, Canadawrote: Got this URL from Canadian VSE User Group today.Being in the UPs and DOWNs of the VSE world since 1974,finding this site is the best thing in my career. You know, VSE isnot very popular in Canada. From now on, I will visit this sitemore often. Wayne, at today’s Canadian VSE User Group Meeting,I heard a lot of good comments on you from IBM Reps. Keep upwith the good work!

• John M Sloan, B.C.I.Inc, NY, NY wrote: With TCP/IP on VSEthere is new life.

• Shivaji Sengupta, Vitage Systems PVT Ltd, Bangalore, Indiawrote: Good to go through the IBM Web site!!! I work for an IBMbusiness partner myself and didn’t know so many products wereavailable from IBM.

Page 59: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

59© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

• Dermot Doran, EMC Corporation, The Netherlands wrote: Afterall those years of IBM trying to kill VSE it’s nice (very nice) to seeit alive and well on the Internet.

Serving as both feedback venue and fan mail repository, the guestbookalso demonstrates the world-wide reach of both VSE and Wayne’s listand Web site!

Recently, help information has been added in French, German, andSpanish. Wayne says: “I hope this will help foreign visitors and alsoincrease participation from non-English speaking countries. Iconstantly work at ways to increase international participation as ameans to improve the breadth and quality of content and also to helpVSE friends outside the US”.

Finally, Wayne notes that this Web site continually evolves to reflectnew information and visitor feedback, and so may differ from what’sdescribed here (written in early January 1999). Visitors can trackchanges through the What’s New link, and subscribe to notification ofchanges. Wayne solicits suggestions regarding the site’s structure andcontent, along with software contributions. Material from the site isquoted here by permission.

Gabe GoldbergComputers and Publishing (USA) © Xephon 1999

Leaving?You don’t have to give up VSE Update

You don’t have to lose your subscription when you move toanother location – let us know your new address, and thename of your successor at your current address, and we willsend VSE Update to both of you, for the duration of yoursubscription. There is no charge for the additional copies.

Page 60: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

60 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

Date adjust subroutine and convert datesubroutine – revisited

The DPADJ2 date adjust subroutine (VSE Update 30, June 1998) andthe convert date subroutine (VSE Update 29, March 1998) have nowbeen updated and improved by their author, Robert Botsis. Thechanges are described below; the full revised code is available fromour Web site.

DATE ADJUST SUBROUTINE

• The subroutine now has one parameter consisting of eleven fieldsinstead of five, and no second optional parameter.

• In the third field, all options except for options ‘0’ and now ‘9’return the result of incrementing or decrementing the passedMMDDCCYY by the number of days specified in the fourth fieldand a day of the week indicator in this field. Option ‘9’ is used toreturn a month descriptor (eg January, May, September, etc) ofthe month number passed in the first two bytes of the first field.If this option is selected, it’s not necessary to pass a valid day,century, or year in the third to eighth bytes of the first field.

• In the fifth field, a value of ‘6’ now means that either the passedoption field doesn’t contain the digits 1 to 9 or else theMMDDCCYY in the first field or the increment value in thesecond field were not numeric.

• The sixth and seventh fields are the same as the first and secondfields of the old optional second parameter.

• The eighth and ninth fields consist of a one-byte length field anda nine-byte month descriptor field (eg January, May, September,etc) relating to the month number (ie 1-12) passed in the firstfield. Month descriptors of less than nine bytes are returned left-justified and padded on the right with blanks.

• The tenth and eleventh fields consist of a one-byte length fieldand a nine-byte month descriptor field (ie January, May, September,

Page 61: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

61© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

etc) relating to the month number (ie 1-12) passed in the fourthfield. Month descriptors of less than nine bytes are returned left-justified and padded on the right with blanks.

• Note the following:

– If an error occurs, the contents of any returned field will beunpredictable. You need to check the return code and takeany necessary action.

– If option ‘9’ is selected, you can request that a second monthdescriptor be returned, in the tenth and eleventh fields, byinserting a valid month number in the first two bytes of thefourth field. If the month number is invalid, no error isindicated and the tenth and eleventh fields will be returnedas blanks.

Calling sequences

The calling sequences are as follows.

COBOL CALL 'DPADJ2' USING PARAM.

ALC LA 13,SAVEAREA (13 CAN ALSO BE R13 OR RD). CALL DPADJ2,(PARAM) . . (MAINLINE PART OF PROGRAM). . SAVEAREA DC 18F'Ø'

RPGII CALL 'DPADJ2' PARM PARAM

Code

The full revised code is available from our Web site.

Page 62: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

62 © 1999. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (940) 455 7050, fax (940) 455 2492.

CONVERT DATE SUBROUTINE

The following section of code replaces that found in the originalsource (bottom page 17 to top page 19 in the printed version). The fullcode, including the revisions, is available from our Web site.

CHKOPTN EQU * CLI OPTION,X'Ø1' IS OPTION 1 REQUESTED. BE ONEPRM YES-BRANCH TO ONEPRM. CLI OPTION,X'Ø9' IS OPTION 9 REQUESTED. BE GREG YES-BRANCH TO GREG. MVC SUCENT(L'UCENT),UCENT SVE CENTURY. MVC SUCENT+2(2),UYEAR SVE YEAR. PACK DOUBWORD,UYEAR PACK YEAR. CVB R2,DOUBWORD CONVERT IT TO BINARY. LTR R2,R2 IS YEAR ZERO. BZ CHKOPTN3 YES-BRANCH TO CHKOPTN3. LA RA,1* PDUMP DPDATES,DPDATEE LR R6,R2 LOAD IT TO REG 6. XR R7,R7 CLEAR REG 7. SRDL R6,2 DIVIDE BY 4. LTR R7,R7 IS THERE A REMAINDER. BNZ CHKOPTN5 NO-BRANCH TO CHKOPTN5. (NOT LEAP YEA MVI MONTHS+12,X'1D' SET FEB TO 29 (LEAP YEAR). LA RA,2* PDUMP DPDATES,DPDATEE B CHKOPTN5 BRANCH TO CHKOPTN5.*CHKOPTN3 EQU * PACK FULLWORD,SUCENT PACK CENTURY/YEAR. DP FULLWORD,=P'4ØØ' DIVIDE CENTURY/YEAR BY 4ØØ. CP FULLWORD+2(2),=P'ØØ' IS THERE A REMAINDER. (NOT LEAP YEA BNE CHKOPTN5 YES-BRANCH TO CHKOPTN5. LA RA,3* PDUMP DPDATES,DPDATEE MVI MONTHS+12,X'1D' SET FEB TO 29 (LEAP YEAR).*CHKOPTN5 EQU * LR R6,R2 RESTORE REG 6. CLC SUCENT,=C'1999' IS CENTURY/YEAR HIGHER THAN 1999. BNH CHKOPTN9 NO-BRANCH TO CHKOPTN9. BCTR R2,Ø LA RA,5* PDUMP DPDATES,DPDATEE*CHKOPTN9 EQU * LA RA,9 LA R6,3(R6) SET UP FOR ROUNDING. SRL R6,2 DIVIDE BY 4.

Page 63: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

63© 1999. Reproduction prohibited. Please inform Xephon of any infringement.

AR R2,R6 ADD TO ACCUMULATOR. LA RA,Ø SRDL RA,2 PACK DOUBWORD,UMONTH PACK MONTH. CVB R6,DOUBWORD USE IT AS AN INDEX. BCTR R6,Ø ... LR RB,R6 MVE MONTH TEXT. M RA,=F'12' MULTIPLY TIMES TABLE WIDTH. LA RA,MONTHS LOAD TABLE ADDRESS TO REG 1Ø. AR RB,RA ADD TABLE ADDRESS TO DISPLACEMENT. MVC MONTHFLD,Ø(RB) MVE MONTH TEXT. LR RB,R6 RESTORE REG 11. LA RC,MONTHS LOAD TABLE ADDRESS TO REG 12. SR R9,R9 CLEAR REG 9. SR R8,R8 CLEAR REG 8. SR R6,R6 CLEAR REG 6. LTR RB,RB IS IT JANUARY. BZ THISMO YES-BRANCH TO THISMO.

© Xephon 1999

Contributing to VSE Update

In addition to VSE Update, the Xephon family of Updatepublications now includes CICS Update, VM Update, MVSUpdate, TCP/SNA Update, VSAM Update, DB2 Update, RACFUpdate, AIX Update, Domino Update, NT Update, OracleUpdate, and SQL Server Update. Although the articles publishedare of a very high standard, the vast majority are not written byprofessional writers, and we rely heavily on our readers takingthe time and trouble to share their experiences with others.

If you have ever experienced any difficulties with VSE, or madean interesting discovery, you could receive a cash payment, afree subscription to any of our Updates, or a credit against anyof Xephon’s wide range of products and services, simply bytelling us all about it. For a copy of our Notes for Contributors,which explains the terms and conditions under which we publisharticles, please write to the editor, Fiona Hewitt, at any of theaddresses shown on page 2, or e-mail her [email protected].

Page 64: March 1999 3 DFSORT/VSE Version 3.4 creating a DFHSNT ... · descriptions in the Application Programming Guide (SC26-7040-3) show INREC FIELDS=(1,4,7) OUTREC FIELDS=(1,4,1X,7) as

IBM has announced Version 6 Release 1 ofits DB2 Server for VM and VSE. The releaseis designed to extend e-business capabilitieswith TCP/IP for VM, provide faster access todistributed data through the use of storedprocedures, simplify information accesswith QMF for Windows, shorten the back-upwindow with its incremental archive feature,and extend distributed database solutionswith DRDA AR for CICS/VSE. It alsocomes with Y2K readiness and euro support.

For further information, contact your localIBM representative.

* * *

IBM has announced that, from 31 December1999, VSE/ESA Version 1 Release 4 will nolonger be marketed. As of 31 December1998, VSE/ESA V1.4 (V1.4.1 and 1.4.2 withYear 2000 PTFs applied or V1.4.3 and later)will be the only supported release ofVSE/ESA Version 1. Support for V1.4 willcontinue until at least 31 January 2001.

For further information, contact your localIBM representative.

* * *

Sterling Software has announced a newversion of VM:Webgateway for Web-enabling mainframe applications, includingfull-screen applications.

New features include facilities for easierWeb publishing, expanded security features,and the creation of an accounting record.

For further information, contactSterling Software, 1800 Alexander BellDrive, Reston, VA 22091, USA.Tel: (703) 264 8000.

Sterling Software Ltd, 75 London Road,Reading, Berks, RG1 5BS, UK.Tel: (1734) 391139.URL: www.sterling.com.

* * *

Software AG has announced that the latestversion of its Natural 4GL developmentenvironment will be out in April 1999.

For further information, contact:Software AG, 11190 Sunrise Valley Drive,Reston VA 22091, USA.Tel: (703) 860 5050.Software AG, Charter Court, 74-78 VictoriaStreet, St Albans, AL1 3XH, UK.Tel: (1727) 844455.URL: www.sagus.com.

* * *

Serena Software has announced theavailability of Release 8.2.2 of its Comparexsoftware. The release offers a new Euroexitoption for conversions from the euro to thelocal currency unit, or from the localcurrency unit to the euro. It also aims toimprove the ease of use and efficiency of theexisting copybook parsing utility, which letsusers define the data for comparison bygenerating keywords and options directlyfrom copybook field definitions.

For further information, contact:Serena International, 500 Airport Blvd,Second Floor, Burlingame, CA 94010-1904,USA.Tel: (650) 696 1800.Serena International, 33 The Metro Centre,Dwight Rd, Watford, Herts, WD1 8SB, UK.Tel: (01923) 224422.URL: www.serena.com.

VSE news

x xephon


Recommended