[USflag] The American Programmer [USflag]


Home
Books on Mainframe Programming
Mainframe Manuals and Tutorials
System Abend codes, Sqlcodes, VSAM/QSAM codes
Everything about the IBM AS/400 Midrange Computer
Everything about CICS
Everything about COBOL
Everything about DB2 and SQL
  DB2/SQL Singleton Select embedded in a COBOL program
  DB2/SQL Add Change Delete program
  DB2/SQL program to read table with cursor
  DB2/SQL load table program
  DB2/SQL program to read a table randomly
  DB2/SQL bare bones skeleton program
  DB2/SQL program to insert a row into a table
  DB2/SQL program to update a row
  DB2/SQL program for handling variable length column
  DB2/SQL program for handling column with null indicator
  Embedded SQL. Short tutorial.
  Examples of DCLGEN. Short tutorial.
  Examples of SQL Joins. Short tutorial.
  Examples of DB2 View. Short tutorial.
  Just Enough SQL/QMF/SPUFI To Be Dangerous
  Sample tables STAFF, ORG, EMP and DEPT
  QMF Procedures Written in REXX
  Using REXX Subroutines with the QMF Calc panel
  Using QMF to Execute Your SQL
  QMF Cheat Sheet. Edit codes. QMF Commands, Text Variables, Usage Codes
  Executing SQL in a batch job
  Using Spufi to Execute Your SQL
  Books on DB2 and SQL
  DB2 and SQL, Structured Query Language manuals
  SQLCODES and Their Causes
Everything about IMS
Everything about Java and JavaScript
Everything about JCL and JES
Everything about REXX
Everything about zOS, VSAM, Tivoli, Assembler
Everything about TSO, ISPF, Spufi
Site Map and Site Search

           Home   > DB2   > Just Enough SQL, with QMF

Just Enough SQL, with QMF and SPUFI

to be dangerous

The purpose of this tutorial is to get you started with SQL when there is no other way - you don’t have time to go to a class, don’t want to buy a complete book on it and try to find the things you need to know.




The sample data table used in the examples is Q.STAFF. It is distributed free with the QMF software.
It is possible that your company does not have this table.

SELECT * FROM Q.STAFF;

    ID  NAME         DEPT  JOB     YEARS     SALARY       COMM

    10  SANDERS        20  MGR         7   18357.50  ---------
    20  PERNAL         20  SALES       8   18171.25     612.45
    30  MARENGHI       38  MGR         5   17506.75  ---------
    40  O'BRIEN        38  SALES       6   18006.00     846.55
    50  HANES          15  MGR        10   20659.80  ---------
    60  QUIGLEY        38  SALES  ------   16808.30     650.25
    70  ROTHMAN        15  SALES       7   16502.83    1152.00
    80  JAMES          20  CLERK  ------   13504.60     128.20
    90  KOONITZ        42  SALES       6   18001.75    1386.70
   100  PLOTZ          42  MGR         7   18352.80  ---------
   110  NGAN           15  CLERK       5   12508.20     206.60
   120  NAUGHTON       38  CLERK  ------   12954.75     180.00
   130  YAMAGUCHI      42  CLERK       6   10505.90      75.60
   140  FRAYE          51  MGR         6   21150.00  ---------
   150  WILLIAMS       51  SALES       6   19456.50     637.65
   160  MOLINARE       10  MGR         7   22959.20  ---------
   170  KERMISCH       15  CLERK       4   12258.50     110.10
   180  ABRAHAMS       38  CLERK       3   12009.75     236.50
   190  SNEIDER        20  CLERK       8   14252.75     126.50
   200  SCOUTTEN       42  CLERK  ------   11508.60      84.20
   210  LU             10  MGR        10   20010.00  ---------
   220  SMITH          51  SALES       7   17654.50     992.80
   230  LUNDQUIST      51  CLERK       3   13369.80     189.65
   240  DANIELS        10  MGR         5   19260.25  ---------
   250  WHEELER        51  CLERK       6   14460.00     513.30
   260  JONES          10  MGR        12   21234.00  ---------
   270  LEA            66  MGR         9   18555.50  ---------
   280  WILSON         66  SALES       9   18674.50     811.50
   290  QUILL          84  MGR        10   19818.00  ---------
   300  DAVIS          84  SALES       5   15454.50     806.10
   310  GRAHAM         66  SALES      13   21000.00     200.30
   320  GONZALES       66  SALES       4   16858.20     844.00
   330  BURKE          66  CLERK       1   10988.00      55.50
   340  EDWARDS        84  SALES       7   17844.00    1285.00
   350  GAFNEY         84  CLERK       5   13030.50     188.00


SQL (Structured Query Language)

Example

--Sample SQL Query

	SELECT ID, NAME,
       SALARY, COMM
       FROM Q.STAFF
       WHERE ID = 10
       OR    ID = 15

Results

---------+---------+----- ID NAME SALARY COMM ---------+---------+----- 10 SANDERS 18357.50 ---------

SQL Syntax

no column rules, indent to taste

in embedded SQL, must start in or after column 12

upper or lower case as desired

except in data values for comparisons:

match case specified to that of the data

free format, 1 or more spaces between words

no continuation character, just go to next line

; used only in SPUFI when > 1 SQL statement, as end of statement delimiter

; is not used in QMF

; is not used in embedded SQL

multiple things (tables, columns) separated by commas

SELECT NAME, SALARY ...

--comment to end of line (in embedded SQL, use COBOL * in column 7)

 

Clauses: this order. Suggest one only per line

SELECT required display, show a table; create a result table

FROM required the desired table or tables

WHERE optional select only rows that meet these criteria

GROUP BY optional crunch data into groups

HAVING optional limits which groups are selected

ORDER BY optional sort the result table

Optimize for 10 rows

optional optimize for this number of rows

With UR optional "uncommitted" Read also With CS, With RR


Displaying data: SELECT

Columns are across. Rows are vertical.

You can show all columns and all rows

SELECT * means show all columns in the order in which they were defined

You get all rows, because there is no WHERE clause

--Example

SELECT *

FROM Q.STAFF

---------+---------+---------+-----

ID NAME DEPT JOB YEARS SALARY COMM

---------+---------+---------+-----

10 SANDERS 20 MGR 7 18357.50 -

20 PERNAL 20 SALES 8 18171.25 612.45

30 MARENGHI 38 MGR 5 17506.75 -

40 O'BRIEN 38 SALES 6 18006.00 846.55

50 HANES 15 MGR 10 20659.80 -

60 QUIGLEY 38 SALES - 16808.30 650.25

70 ROTHMAN 15 SALES 7 16502.83 1152.00

80 JAMES 20 CLERK - 13504.60 128.20

90 KOONITZ 42 SALES 6 18001.75 1386.70

100 PLOTZ 42 MGR 7 18352.80 -

110 NGAN 15 CLERK 5 12508.20 206.60

120 NAUGHTON 38 CLERK - 12954.75 180.00

130 YAMAGUCHI 42 CLERK 6 10505.90 75.60

More...

 

The columns are separated by commas

--Example Show some columns, and all rows

SELECT ID, NAME

FROM Q.STAFF

ID NAME

--------

10 SANDERS

20 PERNAL

30 MARENGHI

40 O'BRIEN

50 HANES

60 QUIGLEY

70 ROTHMAN

80 JAMES

90 KOONITZ

100 PLOTZ

110 NGAN

120 NAUGHTON

More...


Limiting What is Selected: WHERE

WHERE allows you to select some rows, instead of all.

You may get back NO rows. This is not considered an error by DB2.

If the condition is true, the row is selected

WHERE column operator value

Example SELECT *

FROM Q.STAFF

WHERE NAME = 'WILSON'

WHERE column operator column e.g.

Example SELECT *

FROM Q.STAFF

WHERE YEARS = ID (not a meaningful clause)

WHERE column operator expression

Example SELECT * FROM Q.STAFF

WHERE SALARY > (COMM * 1000)

The operators:

= equal

> greater than

< less than

<> not equal (on all keyboards) ¬= not equal (on some keyboards, don't use)

<= less than or equal to / not greater than ¬> less than or equal to / not greater than

>= greater than or equal to / not less than ¬< greater than or equal to / not less than

Numeric data: doesn't need apostrophes in queries

WHERE SALARY = 19999

Character data: Apostrophes needed in query

WHERE NAME = 'MARIA'


Additional Conditions on the WHERE

AND - both must be true for the row to be selected

--Example Show managers with more than 5 years

SELECT *

FROM Q.STAFF

WHERE JOB = 'MGR'

AND YEARS > 5

ID NAME DEPT JOB YEARS SALARY COMM

---------+---------+---------+------

10 SANDERS 20 MGR 7 18357.50 ---------

50 HANES 15 MGR 10 20659.80 ---------

100 PLOTZ 42 MGR 7 18352.80 ---------

140 FRAYE 51 MGR 6 21150.00 ---------

160 MOLINARE 10 MGR 7 22959.20 ---------

210 LU 10 MGR 10 20010.00 ---------

260 JONES 10 MGR 12 21234.00 ---------

270 LEA 66 MGR 9 18555.50 ---------

290 QUILL 84 MGR 10 19818.00 ---------

 

OR - only one needs to be true for the row to be selected

--Example Show employees with 5, 6, or 7 years

SELECT *

FROM Q.STAFF

WHERE YEARS = 5

OR YEARS = 6

OR YEARS = 7

---------+---------+---------+-----

ID NAME DEPT JOB YEARS SALARY COMM

---------+---------+---------+-----

10 SANDERS 20 MGR 7 18357.50 ---------

30 MARENGHI 38 MGR 5 17506.75 ---------

40 O'BRIEN 38 SALES 6 18006.00 846.55

70 ROTHMAN 15 SALES 7 16502.83 1152.00

90 KOONITZ 42 SALES 6 18001.75 1386.70

100 PLOTZ 42 MGR 7 18352.80 ---------

110 NGAN 15 CLERK 5 12508.20 206.60

130 YAMAGUCHI 42 CLERK 6 10505.90 75.60

140 FRAYE 51 MGR 6 21150.00 ---------

150 WILLIAMS 51 SALES 6 19456.50 637.65

160 MOLINARE 10 MGR 7 22959.20 ---------

220 SMITH 51 SALES 7 17654.50 992.80

240 DANIELS 10 MGR 5 19260.25 ---------

250 WHEELER 51 CLERK 6 14460.00 513.30

300 DAVIS 84 SALES 5 15454.50 806.10

340 EDWARDS 84 SALES 7 17844.00 1285.00

350 GAFNEY 84 CLERK 5 13030.50 188.00

 


Using Spufi to Execute Your SQL

Create a pds/library to hold your SQL (if not already done)

Go to ISPF option 3.2


----------------------- ISPF/PDF PRIMARY OPTION MENU

OPTION ===> 3.2

USERID

0 ISPF PARMS - Specify terminal and user parameters TIME

1 BROWSE - Display source data or output listings TERMINA

2 EDIT - Create or change source data PREFIX

3 UTILITIES - Perform utility functions DATE

4 FOREGROUND - Invoke foreground language processors JULIAN

5 BATCH - Submit job for language processing

6 COMMAND - Enter TSO command or CLIST

7 DIALOG TEST - Perform dialog testing

C CHANGES - Display summary of changes for this release

T TUTORIAL - Display information about ISPF/PDF

X EXIT - Terminate ISPF using log and list defaults

Enter END command to terminate ISPF.

 

 


---------------------------- DATA SET UTILITY

OPTION ===> M

A - Allocate new data set C - Catalog data set

R - Rename entire data set U - Uncatalog data set

D - Delete entire data set S - Data set information (short)

blank - Data set information M - Enhanced data set allocation

ISPF LIBRARY:

PROJECT ===>

GROUP ===>

TYPE ===>

OTHER PARTITIONED OR SEQUENTIAL DATA SET:

DATA SET NAME ===> ‘userid.DB2.SQL’

VOLUME SERIAL ===> (If not cataloged, required for option "C")

DATA SET PASSWORD ===> (If password protected)

PRESS ENTER

Record length of 80 is needed

Record format of FB

Make it a library or PDS


------------------------ ALLOCATE NEW DATA SET

COMMAND ===>

DATA SET NAME: Userid.DB2.SQL

MANAGEMENT CLASS ===> (Blank for default

STORAGE CLASS ===> (Blank for default

VOLUME SERIAL ===> (Blank for authorized default

DATA CLASS ===> (Blank for default

SPACE UNITS ===> TRKS (BLKS, TRKS, CYLS,

PRIMARY QUANTITY ===> 5 (In above units)

SECONDARY QUANTITY ===> 5 (In above units)

DIRECTORY BLOCKS ===> 10 (Zero for sequential

RECORD FORMAT ===> FB

RECORD LENGTH ===> 80

BLOCK SIZE ===>

DATA SET NAME TYPE ===> PDS (LIBRARY, PDS, or blank)

EXPIRATION DATE ===> (YY/MM/DD, YYYY/MM/DD

YY.DDD, YYYY.DDD in Julian

DDDD for retention period

or blank)

(* Specifying LIBRARY may override zero directory block)

PRESS ENTER

Get into SPUFI

Different companies use different numbers for menu choices. Find out yours.

Set up your screen like this

SPUFI

Enter the input data set name: (Can be sequential

1 DATA SET NAME ... ===> ‘userid.DB2.SQL(TEST1)’ <- new or existing member name

2 VOLUME SERIAL ... ===> (Enter if not cataloged)

3 DATA SET PASSWORD ===> (Enter if password protected)

Enter the output data set name: (Must be a sequential

4 DATA SET NAME ... ===> ‘userid.SPUFI.LIST’

Note that SPUFI.LIST can be any name, and it does not have to be preallocated

Specify processing options:

5 CHANGE DEFAULTS ===> NO (Y/N - Display SPUFI defaults

6 EDIT INPUT ...... ===> YES (Y/N - Enter SQL statements?)

7 EXECUTE ......... ===> YES (Y/N - Execute SQL statements?)

8 AUTOCOMMIT ...... ===> YES (Y/N - Commit after successful

9 BROWSE OUTPUT ... ===> YES (Y/N - Browse output data set?)

For remote SQL processing:

10 CONNECT LOCATION ===>

PRESS: ENTER to process END to exit HELP for more information

PRESS ENTER

This takes you into the editor.

Type these commands on the command line, to set your preferences.

These settings can’t get you into trouble. Others might.


Then type in your SQL in the large completely blank area.

 

EDIT ---- Userid.DB2.SQL(TEST1) - 01.00 --------------------- COLUMNS 001 072

COMMAND ===> recovery on;number off;nulls all;reset SCROLL ===> CSR

****** ***************************** TOP OF DATA

...... SELECT *

...... FROM Q.STAFF

......

......

......

......

......

****** **************************** BOTTOM OF DATA

 

PRESS PF3

 

SPUFI


Enter the input data set name: (Can be sequential

1 DATA SET NAME ... ===> ‘userid.DB2.SQL(TEST1)’ <- new or existing member name

2 VOLUME SERIAL ... ===> (Enter if not cataloged)

3 DATA SET PASSWORD ===> (Enter if password protected)

Enter the output data set name: (Must be a sequential

4 DATA SET NAME ... ===> ‘userid.SPUFI.LIST’

Note that SPUFI.LIST can be any name, and it does not have to be preallocated

Specify processing options:

5 CHANGE DEFAULTS ===> NO (Y/N - Display SPUFI defaults

6 EDIT INPUT ...... ===> * (Y/N - Enter SQL statements?)

the asterisk means that you have already performed this action

7 EXECUTE ......... ===> YES (Y/N - Execute SQL statements?)

8 AUTOCOMMIT ...... ===> YES (Y/N - Commit after successful

9 BROWSE OUTPUT ... ===> YES (Y/N - Browse output data set?)

For remote SQL processing:

10 CONNECT LOCATION ===>

PRESS: ENTER to process END to exit HELP for more information

PRESS ENTER

 


BROWSE -- Userid.SPUFI.LIST ------- LINE 00000000 COL 001 080

COMMAND ===> SCROLL ===> PAGE

SELECT *

FROM Q.STAFF

--------+---------+---------+---------+---------+---------+--

ID NAME DEPT JOB YEARS SALARY COMM

--------+---------+---------+---------+---------+---------+--

10 SANDERS 20 MGR 7 18357.50 ---------

20 PERNAL 20 SALES 8 18171.25 612.45

30 MARENGHI 38 MGR 5 17506.75 ---------

40 O'BRIEN 38 SALES 6 18006.00 846.55

50 HANES 15 MGR 10 20659.80 ---------

60 QUIGLEY 38 SALES ------ 16808.30 650.25

70 ROTHMAN 15 SALES 7 16502.83 1152.00

80 JAMES 20 CLERK ------ 13504.60 128.20

90 KOONITZ 42 SALES 6 18001.75 1386.70

More...

PRESS PF3


Executing SQL with QMF

Get into QMF

______________________________________________________________________________

IBM*

Licensed Materials - Property of IBM

5706-254 5706-255 5248-067

(c) Copyright IBM Corp. 1982, 1995 All Rights Reserved.

* Trademark of International Business Machines

______________________________________________________________________________

QMF HOME PANEL

Version 3 Release 2.0 B ****** ** ** *********

** ** *** *** **

Query ** ** **** **** *******

Management ** ** ** ** ** ** **

Facility ** * ** ** **** ** **

****** ** ** ** **

________________________________________

Type command on command line or use PF keys. For help, press PF1 or type HELP.

______________________________________________________________________________

1=Help 2=List 3=End 4=Show 5=Chart 6=Query

7=Retrieve 8=Edit Table 9=Form 10=Proc 11=Profile 12=Report

Press PF6 to get into the query panel

SQL QUERY LINE 1

*** END ***

1=Help 2=Run 3=End 4=Print 5=Chart 6=Draw

7=Backward 8=Forward 9=Form 10=Insert 11=Delete 12=Report

QUERY is displayed.

COMMAND SCROLL

Tab twice


Type in the SQL query

SQL QUERY LINE 1

select *

from q.staff

*** END ***

1=Help 2=Run 3=End 4=Print 5=Chart 6=Draw

7=Backward 8=Forward 9=Form 10=Insert 11=Delete 12=Report

OK, QUERY is displayed.

COMMAND SCROLL ===> PAGE

 


Press F2 to execute the SQL query

 

REPORT LINE 1 POS 1 79

ID NAME DEPT JOB YEARS SALARY COMM

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

10 SANDERS 20 MGR 7 18357.50 -

20 PERNAL 20 SALES 8 18171.25 612.45

30 MARENGHI 38 MGR 5 17506.75 -

40 O'BRIEN 38 SALES 6 18006.00 846.55

50 HANES 15 MGR 10 20659.80 -

60 QUIGLEY 38 SALES - 16808.30 650.25

70 ROTHMAN 15 SALES 7 16502.83 1152.00

80 JAMES 20 CLERK - 13504.60 128.20

90 KOONITZ 42 SALES 6 18001.75 1386.70

100 PLOTZ 42 MGR 7 18352.80 -

110 NGAN 15 CLERK 5 12508.20 206.60

120 NAUGHTON 38 CLERK - 12954.75 180.00

130 YAMAGUCHI 42 CLERK 6 10505.90 75.60

140 FRAYE 51 MGR 6 21150.00 -

1=Help 2= 3=End 4=Print 5=Chart 6=Query

7=Backward 8=Forward 9=Form 10=Left 11=Right 12=

OK, this is the REPORT from your RUN command.

COMMAND SCROLL ===> PAGE

Press PF6 to get back into the query panel


Useful things you can do with QMF

Seeing how the table was defined

Type HELP or press PF1 to get the HELP panel

Choose SQL for explanations and examples of SQL syntax.

______________________________________________________________________________

IBM*

Licensed Materials - Property of IBM

5706-254 5706-255 5248-067

(c) Copyright IBM Corp. 1982, 1995 All Rights Reserved.

* Trademark of International Business Machines

______________________________________________________________________________

QMF HOME PANEL

Version 3 Release 2.0 B ****** ** ** *********

** ** *** *** **

Query ** ** **** **** *******

Management ** ** ** ** ** ** **

Facility ** * ** ** **** ** **

****** ** ** ** **

________________________________________

Type command on command line or use PF keys. For help, press PF1 or type HELP.

______________________________________________________________________________

1=Help 2=List 3=End 4=Show 5=Chart 6=Query

7=Retrieve 8=Edit Table 9=Form 10=Proc 11=Profile 12=Report

HELP

 

Press PF6 to get into the query panel


Type the following on the COMMAND line

RESET QUERY

DRAW Q.STAFF (TYPE = INSERT)

A ready-made INSERT type query will appear. In it you will find the datatype definitions of all the columns in the table.

SQL QUERY LINE 1

 

INSERT INTO Q.STAFF (ID, NAME, DEPT, JOB, "YEARS", SALARY, COMM)

VALUES (

-- ENTER VALUES BELOW COLUMN NAME DATA TYPE LENGTH NULLS

, -- ID SMALLINT NO

, -- NAME VARCHAR 9 YES

, -- DEPT SMALLINT YES

, -- JOB CHAR 5 YES

, -- YEARS SMALLINT YES

, -- SALARY DECIMAL ( 7, 2) YES

) -- COMM DECIMAL ( 7, 2) YES

1=Help 2=Run 3=End 4=Print 5=Chart 6=Draw

7=Backward 8=Forward 9=Form 10=Insert 11=Delete 12=Report

QUERY is displayed.

COMMAND line SCROLL

 


Giving yourself a copy of a table that you can INSERT/UPDATE/DELETE

(Not all companies will let you do this)

SQL QUERY LINE 1

*** END ***

1=Help 2=Run 3=End 4=Print 5=Chart 6=Draw

7=Backward 8=Forward 9=Form 10=Insert 11=Delete 12=Report

OK, QUERY is displayed.

COMMAND SCROLL ===> PAGE

Type on the command line:

RESET QUERY

DISPLAY table-name for example: Q.STAFF

SAVE DATA AS table-name qualified with your Userid for example: Userid.STAFF

 

 

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

 


JCL to Run QMF in batch

//* you have to find out the DSnames to use here, at your company.
//QMFBATCH EXEC PGM=IKJEFT01,
//STEPLIB  DD  DSN=xxxxxxxxxxxxxx,DISP=SHR
//         DD  DISP=SHR,DSN=xxxxxxxxxxxxxx
//SYSHELP  DD  DISP=SHR,DSN=xxxxxxxxxxxxxx
//SYSPROC  DD  DISP=SHR,DSN=xxxxxxxxxxxxxx
//         DD  DISP=SHR,DSN=xxxxxxxxxxxxxx
//         DD  DISP=SHR,DSN=xxxxxxxxxxxxxx
//ISPLLIB  DD  DISP=SHR,DSN=xxxxxxxxxxxxxx
//         DD  DISP=SHR,DSN=xxxxxxxxxxxxxx
//ISPPLIB  DD  DISP=SHR,DSN=xxxxxxxxxxxxxx
//         DD  DISP=SHR,DSN=xxxxxxxxxxxxxx
//         DD  DISP=SHR,DSN=xxxxxxxxxxxxxx
//         DD  DISP=SHR,DSN=xxxxxxxxxxxxxx
//ISPMLIB  DD  DISP=SHR,DSN=xxxxxxxxxxxxxx
//         DD  DISP=SHR,DSN=xxxxxxxxxxxxxx
//         DD  DISP=SHR,DSN=xxxxxxxxxxxxxx
//ISPSLIB  DD  DISP=SHR,DSN=xxxxxxxxxxxxxx
//         DD  DISP=SHR,DSN=xxxxxxxxxxxxxx
//         DD  DISP=SHR,DSN=xxxxxxxxxxxxxx
//ISPTLIB  DD  DISP=SHR,DSN=xxxxxxxxxxxxxx
//         DD  DISP=SHR,DSN=xxxxxxxxxxxxxx
//         DD  DISP=SHR,DSN=xxxxxxxxxxxxxx
//*
//SYSEDIT  DD  DSN=&EDIT,
//             SPACE=(CYL,(1,5)),UNIT=SYSDA
//SYSEDIT2 DD  DSN=&EDIT2,SPACE=(CYL,(1,5)),UNIT=SYSDA
//SYSUT1   DD  DSN=&SYSUT1,SPACE=(CYL,(1,1)),UNIT=SYSDA
//SYSUT2   DD  DSN=&SYSUT2,SPACE=(CYL,(1,1)),UNIT=SYSDA
//SYSUT3   DD  DSN=&SYSUT3,SPACE=(CYL,(1,1)),UNIT=SYSDA
//SYSUT4   DD  DSN=&SYSUT4,SPACE=(CYL,(1,1)),UNIT=SYSDA
//DSQPRINT DD  SYSOUT=*,
//             DCB=(RECFM=FBA,BLKSIZE=4830,LRECL=161)
//DSQDEBUG DD  SYSOUT=*,DCB=(RECFM=FBA,BLKSIZE=1210,LRECL=121)
//DSQSPILL DD  DISP=(NEW,DELETE),DSN=&SPILL,UNIT=SYSDA,
//             SPACE=(CYL,(55),RLSE),
//             DCB=(RECFM=F,BLKSIZE=4096,LRECL=4096,BUFNO=50)
//SYSEXEC  DD  DSN=xxxxxxxxxxxxxx,DISP=SHR
//ISPPROF  DD  DSN=&ISPPROF,UNIT=SYSDA,
//             DCB=(DSORG=PO,RECFM=FB,LRECL=80,BLKSIZE=3120),
//             SPACE=(CYL,(2,2,45)),DISP=(NEW,DELETE)
//ISPLOG   DD  DUMMY
//SYSTSPRT DD  SYSOUT=*
//DSQUDUMP DD  SYSOUT=*
//SYSTSIN DD *
ISPSTART PGM(DSQQMFE) -
PARM(S=name-of-db2-subsystem,M=B,I=name-of-qmf-proc-to-execute) NEWAPPL(DSQE)
/*




























































































































































[Books Computer]

Home Books for Computer Professionals Privacy Terms |
Site Map and Site Search Programming Manuals and Tutorials The REXX Files Top of Page |