Keyboard Shortcuts
Likes
- H390-MVS
- Messages
Search
Re: Don't use ISAM
Ed Liss
On Sat, Dec 26, 2020 at 12:53 PM, Patrik Schindler wrote:
Allow me to explain a few more details. I want to use TK4-, so the only COBOL compiler legally available is the MVT one. I honor Jay Moseley's work to enable using VSAM through API calls from that old compiler, but I don¡¯t wanna take this extra step in learning.The MVT COBOL and PL/1 compilers both support ISAM without the need for an API.? ISAM can be easy to learn but has little or no utility support.? VSAM has IDCAMS which provides a lot of utility functions, such as PRINT or REPRO. |
Re: Working with ISAM Data Sets
Hi Patrick, I was using ISAM some weeks ago, It may not be my database of choice today, But I wanted to use the same tools that were used in the 60's an ISAM, and Regional are part of the basic package of Tk4-. ISAM is a unike key database, so, one record one key. If you need your own keys, you have to build your ouwn alternate index tables. I used the same techniques my PL/I teacher used to manage student records, Sequential input data in card or tapes, and a disk with the ISAM data. As you well say you create ISAM from an empty? dataset, Sort my inpuf file, and then with a program I sequentially fill the ISAM dataset. This procedure is also recomanded by IBM, to defrag a database with deleted registers or with overflow table almost full. ? This job sorts my data: //OSSORT? JOB (001),'OSSORT BOOK',CLASS=A,MSGCLASS=A, //? ? ? ? ? ? ?MSGLEVEL=(1,1),NOTIFY=HERC03 //STEP01? ?EXEC PGM=IEFBR14 //DELDD? ? DD DSN=HERC03.LIBROS2A.SRT, //? ? ? ? ? ? DISP=(MOD,DELETE,DELETE) //STEP02? ?EXEC PGM=SORT,REGION=512K,PARM='MSG=AP' //SORT.SORTLIB? DD? ?DSNAME=SYS1.SORTLIB,DISP=SHR //SORT.SORTWORK DD UNIT=2314,SPACE=(CYL,(15,5)) //SORT.SORTWK01 DD UNIT=2314,SPACE=(CYL,(15,5)) //SORT.SORTWK02 DD UNIT=2314,SPACE=(CYL,(15,5)) //SORT.SORTWK03 DD UNIT=2314,SPACE=(CYL,(15,5)) //SORT.SORTWK04 DD UNIT=2314,SPACE=(CYL,(15,5)) //SORT.SORTWK05 DD UNIT=2314,SPACE=(CYL,(15,5)) //SORT.SORTWK06 DD UNIT=2314,SPACE=(CYL,(15,5)) //SORT.SYSPRINT DD SYSOUT=* //SORT.SYSOUT? ?DD SYSOUT=* //SORT.SORTIN? ?DD DSN=HERC03.LIBROS2A.DB,DISP=SHR, //? ? ? ? ? ? DCB=(DSORG=PS,RECFM=FB,LRECL=189,BLKSIZE=27972) //SORT.SORTOUT? DD DSN=HERC03.LIBROS2A.SRT,DISP=(NEW,CATLG,DELETE), //? ? ? ? ? ? UNIT=3390,VOL=SER=PUB013,SPACE=(CYL,(10,4,0)), //? ? ? ? ? ? DCB=(DSORG=PS,RECFM=FB,LRECL=189,BLKSIZE=27972) //SORT.SYSIN DD * ?SORT FIELDS=(13,50,A),FORMAT=CH,SIZE=E40000 ?END /* // ?
?
Then I delete the old ISAM, and create a new one and fill it, note I'm creating a special key, to sepparate repeated keys:
?
//BOOKMKIS JOB (001),'CREAT NDXED DTSET',
//? ? ? ? ?MSGLEVEL=(2,0),CLASS=A,MSGCLASS=A,NOTIFY=HERC03
//*
//*
//STEP01 EXEC PGM=IEFBR14
//DELDD? ? DD DSNAME=HERC03.LIBROS2A.IS(INDEX),
//? ? ? ? ? ? UNIT=3390,VOLUME=SER=PUB013,
//? ? ? ? ? ? DISP=(MOD,DELETE,DELETE)
//? ? ? ? ?DD DSNAME=HERC03.LIBROS2A.IS(PRIME),
//? ? ? ? ? ? UNIT=3390,VOLUME=SER=PUB013,
//? ? ? ? ? ? DISP=(MOD,DELETE,DELETE)
//? ? ? ? ?DD DSNAME=HERC03.LIBROS2A.IS(OVFLOW),
//? ? ? ? ? ? UNIT=3390,VOLUME=SER=PUB013,
//? ? ? ? ? ? DISP=(MOD,DELETE,DELETE)
/*
/*
//CREATE EXEC PL1LFCLG,
//? ? ? ? REGION.PL1L=512K,
//? ? ? ? PARM.PL1L='NL,NE,A,X,NM,S,NS2,NT',
//? ? ? ? PARM.LKED='NOXREF,NOLIST'
//PL1L.SYSIN DD *
?/* CREATE INDEX SEQUENTIAL LIBROS2A */
?MAKEIS: PROC OPTIONS(MAIN);
?
?/* DECLARATIONS */
? ? ?DCL DIREC FILE RECORD SEQUENTIAL KEYED
? ? ? ? ? ? ? ?ENV(INDEXED? F(189)),
? ? ? ? ?CARD CHAR (189),
? ? ? ? ?NAME CHAR(40) DEF CARD POS(13),
? ? ? ? ?LAST_NAME CHAR(40),
? ? ? ? ?CLAVE CHAR(44),
? ? ? ? ?SEQ_NR PIC'9999';
?
?/* EOF CONDITION*/
? ? ?ON ENDFILE(SYSIN) GO TO FINISH;
?/* ERROR TRAPPING */
? ? ON KEY(DIREC) BEGIN;
? ? IF ONCODE=51 THEN PUT FILE(SYSPRINT) SKIP EDIT
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ('NOT FOUND: ',NAME) (A(15),A);
? ? ELSE IF ONCODE=52 THEN PUT FILE(SYSPRINT) SKIP EDIT
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ('DUPLICATE: ',NAME) (A(15),A);
? ? ELSE IF ONCODE=53 THEN PUT FILE(SYSPRINT) SKIP EDIT
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ('OUT OF SEQ:',NAME) (A(15),A);
? ? ELSE IF ONCODE=57 THEN PUT FILE(SYSPRINT) SKIP EDIT
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ('FULL DTSET:',NAME) (A(15),A);
? ? ELSE? ? ? ? ? ? ? ? ? ?PUT FILE(SYSPRINT) SKIP EDIT
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ('ONCODE:? ? ',ONCODE,NAME)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (A(15),F(3),A);
? ? END; /*KEY(DIREC) BEGIN*/
?
?/* OPEN OUTPUT FILE*/
? ? ? ?OPEN FILE(DIREC) OUTPUT;
?
?/* PROCESSING LOOP*/
? ? ? ? ?GET FILE(SYSIN) EDIT(CARD)(A(189));
? ? ? ? ?SEQ_NR=0;
? ? ? ? ?LAST_NAME=NAME;
?
?NEXTIN: GET FILE(SYSIN) EDIT(CARD)(A(189));
? ? ? ? ?IF LAST_NAME = NAME THEN SEQ_NR = SEQ_NR+1;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ELSE SEQ_NR= 0;
? ? ? ? ?LAST_NAME=NAME;
? ? ? ? ?CLAVE=NAME || SEQ_NR;
? ? ? ? ?L=LENGTH(CLAVE);
? ? ? ? ?PUT SKIP LIST (CLAVE,L);
? ? ? ? ?WRITE FILE(DIREC) FROM (CARD) KEYFROM(CLAVE);
? ? ?GO TO NEXTIN;
?
?FINISH: CLOSE FILE(DIREC);
?END MAKEIS;
//*
//GO.DIREC DD UNIT=3390,SPACE=(CYL,200),
//? ? ? ? ? ? DCB=(RECFM=F,LRECL=189,BLKSIZE=189,DSORG=IS,
//? ? ? ? ? ? KEYLEN=44,OPTCD=LIY,CYLOFL=8),
//? ? ? ? ? ? DSNAME=HERC03.LIBROS2A.IS(INDEX),
//? ? ? ? ? ? DISP=(NEW,KEEP),VOLUME=SER=PUB013
//*
//? ? ? ? ?DD UNIT=3390,SPACE=(CYL,200),DCB=DSORG=IS,
//? ? ? ? ? ? DSNAME=HERC03.LIBROS2A.IS(PRIME),
//? ? ? ? ? ? DISP=(NEW,KEEP),VOLUME=SER=PUB013
//*
//? ? ? ? ?DD UNIT=3390,SPACE=(CYL,90),DCB=DSORG=IS,
//? ? ? ? ? ? DSNAME=HERC03.LIBROS2A.IS(OVFLOW),
//? ? ? ? ? ? DISP=(NEW,KEEP),VOLUME=SER=PUB013
//*
//GO.SYSIN? ?DD DSN=HERC03.LIBROS2A.DB,DISP=SHR,
//? ? ? ? ? ? DCB=(DSORG=PS,RECFM=FB,LRECL=189,BLKSIZE=27972)
/*
//
?
? ?then you can search and list your data: ? //LIST JOB (001),'LISTA AUTORES',CLASS=A,MSGCLASS=A, //? ? ? ? MSGLEVEL=(1,1),NOTIFY=HERC03,REGION=562K //STEP01? EXEC PL1LFCLG, //? ? ? ? REGION.PL1L=512K, //? ? ? ? PARM.PL1L='NL,NE,A,X,NM,S,NS2,NT', //? ? ? ? PARM.LKED='NOXREF,NOLIST' //PL1L.SYSIN DD * ?CREATE: PROC OPTIONS(MAIN); ? ? ? ? ?DCL SYSPRINT FILE OUTPUT; ? ? ? ? ?DCL INDATA? ?FILE RECORD INPUT SEQUENTIAL; ? ? ? ? ?DCL COUNT BIN FIXED(15) INIT(0); ? ? ? ? ?DCL (MIN,MAX) CHAR(34) VARYING; ? ? ? ? ?/* output data structure */ ? ? ? ? ?DCL 1 RECRD, /*LRECL=189*/ ? ? ? ? ? ? ? ?2 NRO? ? CHAR (5), ? ? ? ? ? ? ? ?2 DVD? ? CHAR (6), ? ? ? ? ? ? ? ?2 LETRA? CHAR (1), ? ? ? ? ? ? ? ?2 AUTOR? CHAR (40), ? ? ? ? ? ? ? ?2 COLECC CHAR (34), ? ? ? ? ? ? ? ?2 ORDEN? CHAR (3), ? ? ? ? ? ? ? ?2 TITULO CHAR (100); ? ? ? ? DCL TO? ?CHAR(27) INIT('ABCDEFGHIJKLMN?OPQRSTUVWXYZ'); ? ? ? ? DCL FROM CHAR(27) INIT('abcdefghijklmn¡§opqrstuvwxyz'); ? ? ? ? ?/*ENDFILE CONDITION */ ? ? ? ? ?ON ENDFILE(SYSIN) GO TO FINISH; ? ? ? ? ?ON ENDFILE(INDATA) GO TO GET_DATA; ?GET_DATA: MIN,MAX=''; ? ? ? ? ?PUT SKIP LIST ('TIME:',TIME); ? ? ? ? ?GET LIST (MIN,MAX); ? ? ? ? ?MIN=TRANSLATE(MIN,TO,FROM); ? ? ? ? ?MAX=TRANSLATE(MAX,TO,FROM); ? ? ? ? ?PUT PAGE LIST('BUSQUEDA DESDE ',MIN,'HASTA ',MAX); ? ? ? ? ?PUT SKIP; ? ? ? ? ?CLOSE FILE(INDATA); ? ? ? ? ?OPEN? FILE(INDATA); ? ? ? ? ?COUNT=0; ?NEXT:? ?READ FILE(INDATA) INTO (RECRD) ; ? ? ? ? ?RECRD.AUTOR=TRANSLATE(RECRD.AUTOR,TO,FROM); ? ? ? ? ?COUNT=COUNT+1; ? ? ? ? ?IF MIN <= RECRD.AUTOR? &? RECRD.AUTOR <= MAX ? ? ? ? ? ? THEN DO; ? ? ? ? ? ? /*PUT SKIP LIST(COUNT,RECRD.NRO,RECRD.AUTOR, ? ? ? ? ? ? ? ? ? ? ? ? ? ? RECRD.TITULO);*/ ?PUT SKIP EDIT(RECRD) (A(5),A(6),A(0),A(30),A(20),A(3),A(50)); ? ? ? ? ? ? ? END; ? ? ? ? ?GO TO NEXT; ?FINISH: CLOSE FILE(INDATA); ? ? ? ? ?PUT SKIP LIST ('TIME:',TIME); ? ? ? ? ?PUT SKIP LIST ('***FIN DE PROGRAMA***'); ? END CREATE; /* //GO.INDATA? ?DD DSN=HERC03.LIBROS2A.DB,DISP=SHR //GO.SYSYN DD * /* 'CORTAZAR' 'CRUZ' 'ABRAHAM' 'ACOSTA' 'ZAM' 'ZUS' // ? |
Re: Difficulties with TCP/IP and data sets
I don¡¯t think that the original poster is running MVS 3.8 but OS/390 or newer since has a TCPIP profile dataset.
toggle quoted message
Show quoted text
-trp What version of MVS or OS/390 or z/OS are you running? Also are you using the ADCD or a copy of a running system? Laddie Hanus Sent from whatever device I am using. On Dec 27, 2020, at 12:50 AM, Mike Schwab <Mike.A.Schwab@...> wrote: |
Re: Difficulties with TCP/IP and data sets
Turnkey includes the MVS 3.7 starter system on a stand alone volume
toggle quoted message
Show quoted text
for this purpose. And the renames may work under the Turnkey system and only need the IPL to pick up the new dataset. On Sat, Dec 26, 2020 at 8:38 PM Pedro Pinheiro <prppedro@...> wrote:
--
Mike A Schwab, Springfield IL USA Where do Forest Rangers go to get away from it all? |
Re: Difficulties with TCP/IP and data sets
On Sat, Dec 26, 2020 at 06:38 PM, Pedro Pinheiro wrote:
I'll probably need to generate another system, though.Can you just copy CENTER.PARMLIB into your own (large enough) SYSPRG1.PARMLIB, edit TCPPROF to your taste, and then use PARMLIB concatenation in SYS1.IPLPARM to have the system use that dataset instead of CENTER.PARMLIB? Rene FERLAND, Montreal |
Re: Difficulties with TCP/IP and data sets
Thanks for the reply, Mike. Well, if it's the only way, that's what I shall do. I'll probably need to generate another system, though. Att., -trp On Sat, Dec 26, 2020 at 3:50 PM Mike Schwab <Mike.A.Schwab@...> wrote: IPL with the starter system. |
Re: Difficulties with TCP/IP and data sets
¿ªÔÆÌåÓýThat is for the tk4- ftp. It¡¯s not used in esa or z/arch. It enables the FTP in tk4-As I recall it¡¯s not 64 bit safe. Laddie Sent from whatever device I am using. On Dec 26, 2020, at 10:36 AM, Rahim Azizarab via groups.io <rahimazizarab@...> wrote:
|
Re: Don't use ISAM
if you want to learn to use ?VSAM with an API, then start with Jay's interface. You will then have a MUCH ?better understanding when ?you go to KICKS. joe On Sat, Dec 26, 2020 at 12:53 PM Patrik Schindler <poc@...> wrote: Hello Joe, |
Re: Don't use ISAM
The last time I used ISAM was 1981 when I was in college and the system was?a 360/67 running MVT 22.8F. ISAM fell out of favor as MVS matured in the late 70¡¯s. ISAM was functionally stabilized at that time and every one went to VSAM. Don¡¯t think there are too many people who can help you if you have an issue.
toggle quoted message
Show quoted text
Laddie Hanus On Saturday, December 26, 2020, 12:53 PM, Patrik Schindler <poc@...> wrote:
|
Re: Don't use ISAM
Hello Joe,
Am 26.12.2020 um 17:32 schrieb Joe Monk <joemonk64@...>: Yeah ... DONT use ISAM. You will regret it if you do so.May I ask you to elaborate in more detail? USE VSAM KSDS instead. Easier and less complicated. If you need some pointers let me know.Allow me to explain a few more details. I want to use TK4-, so the only COBOL compiler legally available is the MVT one. I honor Jay Moseley's work to enable using VSAM through API calls from that old compiler, but I don¡¯t wanna take this extra step in learning. Thus I thought, aside from purely sequenced datasets (DSORG=PS), using IS could be beneficial to randomly pick records from a DS. If DSORG=IS is ISAM, actually. Later, when I feel confident enough, my goal is to indeed use VSAM, through the API provided with KICKS. :wq! PoC |
Re: Difficulties with TCP/IP and data sets
IPL with the starter system.
toggle quoted message
Show quoted text
Create a new name, copy the members over. Rename old dataset. Rename new dataset. IPL with normal system. On Sat, Dec 26, 2020 at 12:36 PM Pedro Pinheiro <prppedro@...> wrote:
--
Mike A Schwab, Springfield IL USA Where do Forest Rangers go to get away from it all? |
Re: Working with ISAM Data Sets
¿ªÔÆÌåÓýStandard practice for production batch files in all the shops I have ever worked was to initialize files (ISAM or VSAM included) with a header record with a binary-zeroes key value and a date and sometimes also a time as the data. ? Random addition of data with any key value after that initial header load is then possible, though not the best practice if large amounts of additional records are needed. ? At my first MVT shop (mid-1970¡¯s), we found that loading large amounts of data to an existing (already loaded with other data) ISAM file was actually most efficiently done in DESCENDING key order, due to the way ISAM works internally. ? HTH ? Peter ? From: [email protected] <[email protected]> On Behalf Of Rupert Reynolds
Sent: Saturday, December 26, 2020 12:39 PM To: [email protected] Subject: Re: [H390-MVS] Working with ISAM Data Sets ? Standard practice when I was involved was to use REPRO to copy dummy data into any new VSAM dataset, to initialise it. ? I can't remember whether it was one record (with a low key, to be ignored or deleted later), or literally no input data at all. ? I'd agree VSAM is usually the way to go, but it still needs initialising. Well, it did when I was using BLDVRP, GENCB, MODCB macros and the like :-) ? Roops ? On Sat., Dec. 26, 2020, 16:32 Joe Monk, <joemonk64@...> wrote:
|
Re: Working with ISAM Data Sets
High values is still required for various system datasets.
On Sat, Dec 26, 2020 at 11:38 AM Rupert Reynolds <rupertreynolds@...> wrote:
-- Mike A Schwab, Springfield IL USA Where do Forest Rangers go to get away from it all? |
Re: Difficulties with TCP/IP and data sets
Thank you, both of you. It works well either way. What's more intriguing is that I didn't find it easily in the manuals and Redbooks. Anyway, there's, now, a second issue. The dataset is accessible, although I can't really write anything to it because it reached its limits (who the heck tights a configuration data set that much during the generation?). Now I know the most feasible way of doing that is just creating another dataset and moving the files over. But how am I supposed to do that with a system dataset, which is currently open by the system? About what
Rahim said: thank you, but it seems not to be the problem, at all... On Sat, Dec 26, 2020 at 2:30 PM Rupert Reynolds <rupertreynolds@...> wrote:
|
Re: Working with ISAM Data Sets
Standard practice when I was involved was to use REPRO to copy dummy data into any new VSAM dataset, to initialise it. I can't remember whether it was one record (with a low key, to be ignored or deleted later), or literally no input data at all. I'd agree VSAM is usually the way to go, but it still needs initialising. Well, it did when I was using BLDVRP, GENCB, MODCB macros and the like :-) Roops On Sat., Dec. 26, 2020, 16:32 Joe Monk, <joemonk64@...> wrote:
|
Re: Difficulties with TCP/IP and data sets
Good point, but I prefer to leavw the prefix, and simply use apostrophes around dataset names that don't start with it. sub d(myjob) is easier to type than sub roopy.d.cntl(myjob) Same with? ex d(myclist) compared with ex roopy.d.clistl(myclist) call d(myprog) and test d(myprpg) likewise :-) Roops On Sat., Dec. 26, 2020, 16:33 Joe Monk, <joemonk64@...> wrote:
|
Re: Difficulties with TCP/IP and data sets
TCPIP is not active by default in Hercules.? The following may give you some clues about how to activate it.? The availability and flavor of the instruction is controlled by three elements: 1.? The compile time FEATURE_TCPIP_EXTENSION definition: To allow enabling of the TCPIP instruction, the featxxx.h header files corresponding to the relevant architectures (feat370.h, feat390.h, feat900.h) must contain the statement: ``` ??????????????? #define? FEATURE_TCPIP_EXTENSION ``` As shipped, SDL Hyperion 4.2 has this feature defined _only_ for the S/370 architecture (feat370.h). 2.? By default, the TCPIP instruction is disabled at run time, regardless of whether the compile time FEATURE_TCPIP_EXTENSION was defined or not.? If FEATURE_TCPIP_EXTENSION was defined for the architecture currently being used, the supervisor state flavor of the TCPIP instruction can only be enabled by issuing the command: ``` ??????????????? facility enable HERC_TCPIP_EXTENSION ``` before IPLing the guest operating system. 3.? If the problem state variation of the TCPIP instruction is desired, then after having enabled the supervisor state flavor as described above, the command: ``` ??????????????? facility enable HERC_TCPIP_PROB_STATE ``` must then _also_ be issued before IPLing the operating system. regards; Rahim ?? ??
On Saturday, December 26, 2020, 10:27:25 AM CST, Pedro Pinheiro <prppedro@...> wrote:
Hi, all I have a rather dumb question, I recognize. But I've been struggling with it for the past day. There's a data set (CENTER.PARMLIB) in which TCPPROF member is contained. TSO MVSCUST opens this file for me. And I can also access it through DSLIST. Though I can't access it anywhere. Any other ISPF utilities just tells me either the ¡°Data set is not cataloged¡± or (if I specify the volume) ¡°Data set is not found¡±. That's quite problematic because, on top of all that, system have been abending on me, crying 'bout lack of space in the dataset. But I can't edit CENTER.PARMLIB allocation because all the tools which seems to deal with that can't find the data set. Also, when using the ¡°ALLOC¡± command, it infers the dataset is prefixed the current login, SYSPROG1. So, is there any way out of this mess? Thanks, Att., -trp |
Re: Difficulties with TCP/IP and data sets
TSO PROFILE NOPREFIX. Then try to access ?your dataset. Joe On Sat, Dec 26, 2020 at 10:27 AM Pedro Pinheiro <prppedro@...> wrote:
|
Re: Working with ISAM Data Sets
Yeah ... DONT use ISAM. You will regret?it if you do so. USE VSAM KSDS instead. Easier and less complicated. If you need some pointers let me know. Joe On Sat, Dec 26, 2020 at 9:59 AM Patrik Schindler <poc@...> wrote: Hello, |