DSNAMN från DDNAMN

I detta forum kan frågor och tips ställas och ges.
Skriv svar [phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable
Michael Simpson
Newbie
Inlägg:7
Blev medlem:ons 14 jan 2004, 12:00
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Inlägg av Michael Simpson » fre 20 feb 2004, 09:16

Finns det någon där ute som har (och är beredd att dela med sig) en modul (assembler - eller helst COBOL) som kan returnera namnet på ett dsnamn allokerat till ett ddnamn.

OBS - måste också kunna returnera PDS medlemmens namn om så är fallet.

Jag inbillar mig att modulen skulle anropas med 8-bytes area med DD-namnet, och returnera x-bytes med dsn-namnet.

T.ex

//TESTFRED DD DSN=MISI01.GUIF.TESTPARM(MEMBER1),DISP=SHR

anropas via

Kod: Markera allt


move 'TESTFRED'      to dd-namn
call 'RUTIN'  using dd-namn
                           dsn-namn

dsn-namn nu innehåller MISI01.GUIF.TESTPARM(MEMBER1)


Tack

Användarvisningsbild
Manor
Administrator
Inlägg:102
Blev medlem:lör 10 jan 2004, 15:14
Ort:Åkersberga
Kontakt:

Inlägg av Manor » lör 21 feb 2004, 18:37

Hej !

Jag ska se om jag kan hitta någon information runt detta.

mvh Mats N

Användarvisningsbild
Manor
Administrator
Inlägg:102
Blev medlem:lör 10 jan 2004, 15:14
Ort:Åkersberga
Kontakt:

Inlägg av Manor » mån 23 feb 2004, 09:24

Hej igen Michael !

Jag har med god hjälp av vänliga kollegor (läs Erik...) hittat en modul som:

Kod: Markera allt

FUNKTION  : INVOKE REXX FUNCTION FROM COBOL          
                                                     
ANROP     : CALL 'GGEMRXX' USING GGEMRXX             
                                                     
FÅR       : FUNKTIONS-KOD I GGEMRXX                  
             MEMBER-NAME  IN GGEMRXX                  
             ARG-STRING   IN GGEMRXX                  
             ARG-LEN      IN GGEMRXX                  
             ÖNSKAD EXEC MÅ FINNAS PÅ DDNAMN SYSEXEC  
                                                     
GÖR       : LADDAR , FRIAR ELLER UTFÖR EXEC          
             ANROP FÖR LADDA , FRIA KAN UTELÄMNAS ,   
             UTFÖRS IMPLICIT OM UTELÄMNAT.            
                                                     
GER       : ARG-STRING   IN GGEMRXX                  
             ARG-LEN      IN GGEMRXX                  
             RESULTATET FRÅN EXEC ERSÄTTER ARG-STRING 

Det du önskar göra ska vara fullt möjligt från REXX, och som gammal IBM:are är du väl då på "mammas gata" :D.

Du kan väl meddela mig om detta skulle kunna vara av intresse, så ska vi säkert kunna fixa till något ;).

mvh Mats N

Michael Simpson
Newbie
Inlägg:7
Blev medlem:ons 14 jan 2004, 12:00
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Inlägg av Michael Simpson » tor 26 feb 2004, 13:16

Fick svaret från MVSHELP forum. Svaret finns på

http://www.greenhousecafe.com/cgi-bin/u ... 1;t=002960

Sök på Steve Myers nästan längst ner

kjehan
Newbie
Inlägg:3
Blev medlem:fre 27 feb 2004, 10:25
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Inlägg av kjehan » fre 27 feb 2004, 10:50

Hej,

Nu har vi sett ett förslag på hur man kan lösa detta i REXX och ett exempel på hur man kan göra det i Assembler. Eftersom detta är ett COBOL-Forum är det måhända dags för ett COBOL-Exempel B) . Ursprungligen skrev vi detta program för att logga absolutgeneration för backupdataset. Det bifogade exemplet är omskrivet till en modul av generell karaktär. Programmet använder pekare för att hämta informationen från control-blocken (i princip samma lösning som assemblerprogrammet). Control-blocken finns dokumenterade i detalj i Manualerna MVS Data Areas VOL 1- 6.


Modulen anropas enligt följande:

CALL 'YARROW01' USING DD DSN

Där DD är deklarerat som PIC X(8) och DSN som PIC X(54).

Kod: Markera allt



       IDENTIFICATION DIVISION.
       PROGRAM-ID.    YARROW01
      **********************************************************
      *    MODUL       YARROW01                                       
      *                MODUL FÖR ATT RETURNERA ALLOKERAT DSNAMN       
      *                FÖR ETT GIVET DD-NAMN                          
      *                                                               
      *    SKRIVET AV  LILLEMOR BENGTSSON, YARROW CONSULTING AB       
      *                KJELL HANSSON, YARROW CONSULTING AB            
      *    DATUM       2004-02                                        
      *****************************************************************
       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       SOURCE-COMPUTER. IBM-370.
       OBJECT-COMPUTER. IBM-370.
       SPECIAL-NAMES. DECIMAL-POINT IS COMMA.
       INPUT-OUTPUT SECTION.
       DATA DIVISION.
       WORKING-STORAGE  SECTION.
      *************************************************************
      *    ARBETSAREOR                                                    
      **************************************************************
       01  FILLER                      PIC X(16) VALUE '**ARBETS '.
       01  A-ARBETSAREOR.
           05  WS-WORK                 PIC S9(9) COMP.
           05  WS-RIGHT-HEX-DIGIT      PIC S9(4) COMP.
           05  DS-NAME                 PIC X(54).
       01 WS-JSCB-POINT.
          05 WS-JSCB-POINTER           USAGE IS POINTER.
       01 WS-POINT.
          05 WS-POINTER               USAGE IS POINTER.
          05 WS-PTR                   REDEFINES WS-POINTER
                                      PIC S9(9) COMP.
       01 WS-SWA-POINT.
          05 WS-SWA-POINTER           USAGE IS POINTER.
          05 WS-SWA-PTR               REDEFINES WS-SWA-POINTER
                                      PIC S9(9) COMP.
          05 WS-SWA-POINT-RED         REDEFINES WS-SWA-PTR.
             07 FILLER                PIC X.
             07 WS-SWA-LOW-3          PIC X(3).
       01 WS-QMAT-POINT.
          05 WS-QMAT-POINTER          USAGE IS POINTER.
          05 WS-QMAT-PTR              REDEFINES WS-QMAT-POINTER
                                      PIC S9(9) COMP.
       01 WS-TIOT-SEG-POINT.
          05 WS-TIOT-SEG-POINTER      USAGE IS POINTER.
          05 WS-TIOT-SEG-PNT          REDEFINES WS-TIOT-SEG-POINTER
                                      PIC S9(9) COMP.
       LINKAGE SECTION.
       01 CB1.
          05 PTR1               POINTER OCCURS 256.
       01 IOPARM.
          05 DD                 PIC X(8).
          05 DSN                PIC X(54).
       01 TIOT.
          05 JOB-NAME           PIC X(8).
          05 FILLER             PIC X(16).
          05 TIO-LEN            PIC X.
          05 FILLER             PIC X(03).
          05 DD-NAME            PIC X(08).
          05 SWA-V-ADDR         PIC X(03).
       PROCEDURE DIVISION USING IOPARM.
      *****************************************************************
      *                                                               
      *****************************************************************
       A-HUVUD SECTION.
           MOVE SPACE                   TO DSN
      *   PSA
           SET ADDRESS OF CB1          TO NULL
      *   TCB                                        PSA OFFSET 540
           SET ADDRESS OF CB1          TO PTR1(136)
      *   TIOT                                       TCB OFFSET 12
           SET WS-TIOT-SEG-POINTER     TO PTR1(4)
           SET WS-JSCB-POINTER         TO PTR1(46)
           SET ADDRESS OF TIOT         TO PTR1(4)
      *   JSCB                                       TCB OFFSET 180
           SET ADDRESS OF CB1          TO PTR1(46)
      *   SSIB                                       JSCB OFFSET 316
           SET ADDRESS OF CB1          TO PTR1(80)
      *
      * LOOPA TILLS INGA FLER DD-NAMN FINNS
      *
           PERFORM UNTIL TIO-LEN = LOW-VALUE
              MOVE LOW-VALUE           TO WS-POINT
              MOVE LOW-VALUE           TO WS-SWA-POINT
              MOVE SWA-V-ADDR          TO WS-SWA-LOW-3
              PERFORM B-SWAREQ
              SET ADDRESS OF CB1       TO WS-POINTER
              MOVE CB1(1:44)           TO DS-NAME
      *** KOLLA OM DD-NAME = DD-NAME I INPARAMETER
              IF DD-NAME(1:8) = DD
                MOVE DS-NAME           TO DSN
      *** KOLLA OM MEDLEM FINNS
      ***          TAR INTE MED RELATIV GENERATION FÖR GDG
                IF  CB1(45:8) NOT = SPACE
                AND CB1(45:1) NOT NUMERIC
                  STRING  DS-NAME   '('
                          CB1(45:8) ')'
                  DELIMITED BY ' '
                  INTO DSN
                END-IF
              END-IF
      ***
              ADD 20                   TO WS-TIOT-SEG-PNT
              SET ADDRESS OF TIOT      TO WS-TIOT-SEG-POINTER
           END-PERFORM
           GOBACK
           .
       B-SWAREQ          SECTION.
      *****************************************************************
      * OM SWA LIGGER I DET HÖGA ADRESS-UTRYMMET LIGGER DET EN        
      * RELATIV SWA-ADRESS I TIOT SOM HÄR RÄKNAS OM TILL EN ABSOLUT-  
      * ADDRESS SOM FINNS I ADRESS-TABELLEN QMAT                      
      *****************************************************************
           DIVIDE WS-SWA-PTR BY 16
                             GIVING    WS-WORK
                             REMAINDER WS-RIGHT-HEX-DIGIT
           IF WS-RIGHT-HEX-DIGIT NOT = 15
              COMPUTE WS-PTR = WS-SWA-PTR + 16
           ELSE
      * JSCB
              SET ADDRESS OF CB1       TO WS-JSCB-POINTER
      * QMPL                                         JSCB OFFSET 244
              SET ADDRESS OF CB1       TO PTR1(62)
      * QMAT                                         QMPL OFFSET 24
              SET WS-QMAT-POINTER      TO PTR1(7)
              SET ADDRESS OF CB1       TO PTR1(7)
              PERFORM UNTIL WS-SWA-PTR <= 65536
      * QMAT                                         QMAT OFFSET 12
                 SET WS-QMAT-POINTER   TO PTR1(4)
                 SET ADDRESS OF CB1    TO PTR1(4)
                 COMPUTE WS-SWA-PTR = WS-SWA-PTR - 65536
              END-PERFORM
              COMPUTE WS-PTR = WS-SWA-PTR + WS-QMAT-PTR + 1
      * SWA
              SET ADDRESS OF CB1       TO WS-POINTER
      * JFCB                                         SWA  OFFSET 0
              SET WS-POINTER           TO PTR1(1)
              COMPUTE WS-PTR = WS-PTR + 16
           END-IF
           .
       B-SWAREQ-END.
           EXIT.
    

/Kjell Hansson och Lillemor Bengtsson Yarrow Consulting AB

Användarvisningsbild
Manor
Administrator
Inlägg:102
Blev medlem:lör 10 jan 2004, 15:14
Ort:Åkersberga
Kontakt:

Inlägg av Manor » fre 27 feb 2004, 12:12

Kalas !

Stort tack Kjell och Lillemor...och självklart har ni rätt, det är klart att det ska vara ett Cobol-exempel på detta forum :D.

mvh Mats N

powerhawk
Newbie
Inlägg:6
Blev medlem:mån 21 jun 2004, 09:38
Kontakt:

Inlägg av powerhawk » mån 21 jun 2004, 09:48

QUOTE (kjehan @ 2004-02-27 - 10:50:26)Modulen anropas enligt följande:

CALL 'YARROW01' USING DD DSN


[/quote]

Jag var tvungen att göra en liten förändring för att få den att fungera i alla lägen. Vi fick 0C4 vid ett anrop när datasetet var ett generationsdataset. Konstigt för det fungerar i andra program med GDG:er. Ändringen blev att bryta huvudloopen så fort man hittar rätt dataset och inte som förrut när TIO-LEN = LOW-VALUE.

kjehan
Newbie
Inlägg:3
Blev medlem:fre 27 feb 2004, 10:25
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Inlägg av kjehan » ons 23 jun 2004, 18:42

Jag var tvungen att göra en liten förändring för att få den att fungera i alla lägen. Vi fick 0C4 vid ett anrop när datasetet var ett generationsdataset. Konstigt för det fungerar i andra program med GDG:er. Ändringen blev att bryta huvudloopen så fort man hittar rätt dataset och inte som förrut när TIO-LEN = LOW-VALUE.

Vet du i vilket statement din 0C4 uppstår? Ingår det aktuella datasetet i en konkatenering?

/Kjell

powerhawk
Newbie
Inlägg:6
Blev medlem:mån 21 jun 2004, 09:38
Kontakt:

Inlägg av powerhawk » mån 28 jun 2004, 14:59

QUOTE (kjehan @ 2004-06-23 - 18:42:37)
Jag var tvungen att göra en liten förändring för att få den att fungera i alla lägen. Vi fick 0C4 vid ett anrop när datasetet var ett generationsdataset. Konstigt för det fungerar i andra program med GDG:er. Ändringen blev att bryta huvudloopen så fort man hittar rätt dataset och inte som förrut när TIO-LEN = LOW-VALUE.

Vet du i vilket statement din 0C4 uppstår? Ingår det aktuella datasetet i en konkatenering?

/Kjell
[/quote]

Så här ser det ut i debuggern. Ingen konkatenering. Jag skickar med JCL:en också. Det är BB9800I1 jag vill veta namnet på.
/Håkan

------------------------- XPEDITER/TSO - SOURCE ------------------------------
COMMAND ===> SCROLL ===> CSR
S0C4 ABEND ENCOUNTERED, ENTER LOG FOR ADDITIONAL DATA

000054 01 CB1 > FETCH PROTECTED AREA
----+----1----+----2----+----3
MORE-> 05 DS-NAME > BEV.TEST.PERM.BB98IR02.G0097V0
** END **
------ ----------------------------------------------- Abend at DSNAME:95 <>
000094 SET ADDRESS OF CB1 TO WS-POINTER
=====> MOVE CB1(1:44) TO DS-NAME
000096 *** KOLLA OM DD-NAME = DD-NAME I INPARAMETER
000097 IF DD-NAME(1:8) = DD
000098 MOVE DS-NAME TO DSN
000099 *** KOLLA OM MEDLEM FINNS
000100 *** TAR INTE MED RELATIV GENERATION FÖR GDG
000101 IF CB1(45:8) NOT = SPACE
000102 AND CB1(45:1) NOT NUMERIC
000103 STRING DS-NAME '('
000104 CB1(45:8) ')'
000105 DELIMITED BY ' '
000106 INTO DSN
000107 END-IF
000108 END-IF

********************************* Top of Data ***************
//HSD458QB JOB (BEVAK),HAWK,MSGCLASS=Y,REGION=0M,CLASS=A,
// NOTIFY=HSD458,COND=(4,LT)
//JOBLIB DD DSN=IMS.PROD.RESLIB,DISP=SHR
// DD DSN=OEM.SHRINK.PROD.LOAD,DISP=SHR
// DD DSN=SYSTEM.PROD.FDT.LOAD,DISP=SHR
// DD DSN=SYSTEM.UTV.PGM.LOAD,DISP=SHR
// DD DSN=SYSTEM.TEST.PGM.LOAD,DISP=SHR
// DD DSN=SYSTEM.PROD.PGM.LOAD,DISP=SHR
/*JOBPARM PROCLIB=PROC02
//*----------------------------------------------------------
//STEG02 EXEC PGM=BB9800
//*
//BB9800I1 DD DSN=BEV.TEST.PERM.BB98IR02(+0),DISP=SHR
//BB9800I2 DD DSN=BLT943.TEST.PERM.PARAMGEM,DISP=SHR
//BB9800U1 DD SYSOUT=*
//BB9800L1 DD SYSOUT=*

Skriv svar
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable