Quantcast
Channel: IBM Mainframe Computers Forums
Viewing all 8500 articles
Browse latest View live

DFSORT/ICETOOL :: RE: Updating the counters after eliminating duplicates

$
0
0
Author: PANDU1
Posted: Tue Nov 22, 2016 3:39 pm (GMT 5.5)

Thank you Arun,

I could able to solve the duplicates but trying to update the counters.


DFSORT/ICETOOL :: RE: Updating the counters after eliminating duplicates

$
0
0
Author: Bill Woodger
Subject: Reply to: Updating the counters after eliminating duplicates
Posted: Tue Nov 22, 2016 3:41 pm (GMT 5.5)

PANDU1,

Arun's code drops duplicates and produces correct counts. Even if you've already dropped the duplicates without telling us (wasting time) the code will still work even if there are no duplicates to drop. Note: I've not tested it either, but it looks good.

JCL & VSAM :: Get a job submitted itself every time when i login

$
0
0
Author: arunsoods
Subject: Get a job submitted itself every time when i login
Posted: Tue Nov 22, 2016 4:05 pm (GMT 5.5)

Hi Team,

I want to get a job submitted itself every time when i login to my mainframe Z/OS.

Regards
_________________
Arun Sood

JCL & VSAM :: RE: Get a job submitted itself every time when i login

$
0
0
Author: enrico-sorichetti
Subject: Reply to: Get a job submitted itself every time when i login
Posted: Tue Nov 22, 2016 4:16 pm (GMT 5.5)

if it was a requirement from Your organisation
Your system support people would have already taken care of that
_________________
cheers
enrico
When I tell somebody to RTFM or STFW I usually have the page open in another tab/window of my browser,
so that I am sure that the information requested can be reached with a very small effort icon_cool.gif

JCL & VSAM :: RE: Get a job submitted itself every time when i login

$
0
0
Author: arunsoods
Posted: Tue Nov 22, 2016 4:21 pm (GMT 5.5)

Thanks Enrico for replying....:-)

Actually I have prepared a job which don't allow a file to migrate. So I want that job to run itself every time I login the mainframe. So is there any option where we can provide that job so it will run.

Regards
_________________
Arun Sood

DFSORT/ICETOOL :: RE: Updating the counters after eliminating duplicates

$
0
0
Author: PANDU1
Posted: Tue Nov 22, 2016 4:42 pm (GMT 5.5)

Hi Bill,

I have no idea in solving this, so posted in the group. After trying with Arun's code I got the relevant output.

Thanks. icon_smile.gif

DFSORT/ICETOOL :: RE: Updating the counters after eliminating duplicates

$
0
0
Author: Bill Woodger
Subject: Reply to: Updating the counters after eliminating duplicates
Posted: Tue Nov 22, 2016 4:49 pm (GMT 5.5)

Great, thanks for letting us know. Make sure you understand it.

JCL & VSAM :: RE: Get a job submitted itself every time when i login

$
0
0
Author: enrico-sorichetti
Subject: Reply to: Get a job submitted itself every time when i login
Posted: Tue Nov 22, 2016 5:00 pm (GMT 5.5)

Quote:
Actually I have prepared a job which don't allow a file to migrate.


playing tricks to bypass Your organisation rules might lead to unpleasant consequences ( up to lawful termination )

topic locked
_________________
cheers
enrico
When I tell somebody to RTFM or STFW I usually have the page open in another tab/window of my browser,
so that I am sure that the information requested can be reached with a very small effort icon_cool.gif


DFSORT/ICETOOL :: RE: Updating the counters after eliminating duplicates

$
0
0
Author: Arun Raj
Posted: Tue Nov 22, 2016 8:15 pm (GMT 5.5)

Quote:
I'd rearrange the order of the IFTHENs, so that the data-one is treated first, it'll avoid a lot of tests for when the header/trailer when most of the records will be data
I thought about this while posting to OVERLAY the 'key' in the INIT for all the records since we have more detail records and then to check for header and trailer in the subsequent IFTHENs, but was too lazy especially when I cant test anything now (and for the next 2 weeks icon_sad.gif).

Or even better as you pointed out, is to make it 3 mutually exclusive IFTHEN conditions in the order of data>>header>>trailer to avoid 'rework' on header and trailer records.
Code:
//SYSIN    DD *                                                       
  INREC IFTHEN=(WHEN=GROUP.......
......
......
  IFTHEN=(WHEN=(1,2,SS,NE,C'01,99'),OVERLAY=(89:14,5)),             
  IFTHEN=(WHEN=(1,2,CH,EQ,C'01'),OVERLAY=(89:5X'00')),             
  IFTHEN=(WHEN=(1,2,CH,EQ,C'99'),OVERLAY=(89:5X'FF'))             
......
......

_________________
Arun
----------------------------------------------------------------------------------------------------
Love is like an hourglass, with the heart filling up as the brain empties. -Jules Renard

IMS DB/DC :: IMS BMP program causes 878 system abend

$
0
0
Author: Artemk
Subject: IMS BMP program causes 878 system abend
Posted: Tue Nov 22, 2016 8:26 pm (GMT 5.5)

Hi, actually I'm a beginner in IMS tuning, and reading docs for me is better, but I already digged through tonns of it, learned numeros new things, but still have no idea what how to locate where does my problem come from.
It would be great if someone hints me where to dig. Some times I even think that it could be an internal IMS defect caused by memory leak...

The problrem is that some times I get 878 abend while batch program processing. The only message displayed is "DFS629I IMS XFP TCB ABEND - SYS 878 IVP1"

Configuration is like this: IMS version 12, z/os 1.13, batch is executed for initial load of DEDB, Fast path 64bit buffer manager is enabled, it's buffer size is maximal 2047M. The number of segments inserted is about 11million, total size of loaded data is 1,9GB.
BMP program is written to make checkpoints either after getting FW or every N inserted segments (N is about 1500).
The only dependency I figured out for now is that if NBA is bigger than 2000 in one BMP, or if there are several BMPs that use total NBA > 2000, and the scope of data inserted is long enough, I'm getting abend after about 200-300 checkpoints.
If NBA is 2000 or less, I do not get abend - at least while loading my 2GB of data, may be if I had 20, I got, who knows...


Thanks,
Artem

IMS DB/DC :: RE: IMS BMP program causes 878 system abend

$
0
0
Author: Artemk
Posted: Tue Nov 22, 2016 8:59 pm (GMT 5.5)

Forgot to tell about another observation.
(Some clarification about what does the program do:
BMP takes the data from prepared GSAM input file. one record consists of 3 fields: DSN=44char, Type=3-char, data=1917char and each record is inserted in IMS database like 3 segment - root, child, child of child.
I described it so detailed to show that each input record has the same structure, and causes the insertion of the same segmnets of same size.)

And back to BMP. I start the BMP program with NBA=2000. The first FW I get after 2000 input records - as expected. Make checkpoint. Next FW appears after 19xx , the next after even smaller number, and so on.
For example, 100th checkpoint happens 1800 records read after 99th. But on my input data, BMP program ends successfully.
If I use NBA=8000, the behaviour is the same. Sooner or later the interval between checkpoints decreases until about 4000, and 878 abend happens.
This abend says that GetMain failed, so I decided to check what happens with CSA and ECSA. Both of them have a plenty of place - IMS have 1GB, uses 100-160MB, some times up to 600MB. ECSA has about 4500MB, and 2GB used. So, seems that no real lack of memory.

IMS DB/DC :: RE: IMS BMP program causes 878 system abend

$
0
0
Author: Robert Sample
Subject: Reply to: IMS BMP program causes 878 system abend
Posted: Tue Nov 22, 2016 10:18 pm (GMT 5.5)

S878 generally has a reason code, which tells much about the reason for the shortage of storage. Look in the job output or the console log to find the reason code.
_________________
TANSTAAFL

The first rule of code reuse is that the code needs to be worth re-using.

"We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil." -- Donald Knuth

IMS DB/DC :: RE: IMS BMP program causes 878 system abend

$
0
0
Author: Artemk
Posted: Tue Nov 22, 2016 11:47 pm (GMT 5.5)

True, usually s878 comes with 2-digit reason code, but not this time.
May be I lost some thing, see only one line that could have RC -
DFS629I IMS XFP TCB ABEND - SYS 878 IVP1

here is a system log -
Code:

20:32:07.43 JOB00265 00000090  +DFS0542I  *EXTENDED CHECKPOINT* DAY=327,TIME=173207146201+0300 IVP1         
20:33:12.28 STC00249 00000090  DFS3257I ONLINE LOG NOW SWITCHED - FROM DFSOLP02 TO DFSOLP03 IVP1           
20:33:12.29 STC00249 00000090  DFS3257I ONLINE LOG NOW SWITCHED - FROM DFSOLS02 TO DFSOLS03 IVP1           
20:33:12.35 JOB00267 00000281  $HASP100 IVPGNJCL ON INTRDR      IBMUSER               FROM STC00251         
                               IMS12RC1                                                                     
20:33:12.38 JOB00267 00000290  IRR010I  USERID START2   IS ASSIGNED TO THIS JOB.                           
20:33:12.40 STC00249 00000090  DFS2484I JOBNAME=IVPGNJCL GENERATED BY LOG AUTOMATIC ARCHIVING IVP1         
20:33:12.59 JOB00267 00000281  ICH70001I START2   LAST ACCESS AT 20:23:00 ON TUESDAY, NOVEMBER 22, 2016     
20:33:12.61 JOB00267 00000090  $HASP373 IVPGNJCL STARTED - INIT 4    - CLASS E - SYS S0W1                   
20:33:12.62 JOB00267 00000281  IEF403I IVPGNJCL - STARTED - TIME=20.33.12                                   
20:33:12.72 JOB00265 00000090  +DFS0540I  *EXTENDED CHECKPOINT* PROGRAM=DOCCARD ,CKPTID=  000025,           
                               REGID=0007,DAY=327,TIME=1733121  IVP1                                       
20:33:12.73 JOB00265 00000090  +DFS0542I  *EXTENDED CHECKPOINT* DAY=327,TIME=173312174829+0300 IVP1         
20:33:38.13 JOB00267 00000290  -                                         --TIMINGS (MINS.)--               
                                ----PAGING COUNTS---                                                       
20:33:38.14 JOB00267 00000290  -JOBNAME  STEPNAME PROCSTEP    RC   EXCP    TCB    SRB  CLOCK   SERV  PG     
                                  PAGE   SWAP    VIO SWAPS                                                 
20:33:38.14 JOB00267 00000290  -IVPGNJCL                      00  45220 ******    .08     .4  23435   0     
                                     0      0      0     0                                                 
20:33:38.15 JOB00267 00000090  IEF404I IVPGNJCL - ENDED - TIME=20.33.38                                     
20:33:38.15 JOB00267 00000290  -IVPGNJCL ENDED.  NAME-IBMUSER              TOTAL TCB CPU TIME=   .17       
                               TOTAL ELAPSED TIME=    .4                                                   
20:33:38.17 JOB00267 00000281  $HASP395 IVPGNJCL ENDED                                                     
20:33:38.20          00000281  $HASP309 INIT 4    INACTIVE ******** C=ABCDE                                 
20:50:43.34 STC00249 00000090  DFS2361I XCF GROUP CLOSED SUCCESSFULLY.  IVP1                               
20:50:43.34 STC00172 00000090  HWSD0282I COMMUNICATION WITH DS=IMSDSNM  CLOSED; M=DREC                     
20:50:43.35 STC00249 00000090  DFS3896I ATTEMPTING TO PURGE OLDS BUFFERS  IVP1                             
20:50:47.36 STC00249 00000090  DFS616I OLDS BUFFERS SUCCESSFULLY PURGED  IVP1                               
20:50:47.37 STC00249 00000281  DFS629I IMS XFP TCB ABEND - SYS 878           IVP1                           
20:50:47.38 STC00249 00000281  DFS629I PSW AT ERROR = *** NO SDWA ***    IVP1                               
20:50:47.45          00000090  IEA045I AN SVC DUMP HAS STARTED AT TIME=20.50.47 DATE=11/22/2016 754         
                 754 00000090  FOR ASIDS(0070,007F,0071,0041)                                               
                 754 00000090  ERROR ID = SEQ00282 CPU8B ASID0070 TIME20.50.41.6                           
                 754 00000090  QUIESCE = YES                                                               
20:51:04.45 STC00032 00000090  DSNL511I  -DBAG DSNLIENO TCP/IP CONVERSATION FAILED 755                     
                 755 00000090             TO LOCATION ::10.0.40.132                                         
                 755 00000090             IPADDR=::10.0.40.132 PORT=49209                                   
                 755 00000090             SOCKET=RECV RETURN CODE=1121 REASON CODE=76650446                 
20:51:04.56 STC00032 00000090  DSNL511I  -DBAG DSNLIENO TCP/IP CONVERSATION FAILED 756                     
                 756 00000090             TO LOCATION ::10.0.40.22                                         
                 756 00000090             IPADDR=::10.0.40.22 PORT=53719                                   
                 756 00000090             SOCKET=RECV RETURN CODE=1121 REASON CODE=76650446                 
20:51:04.64 STC00032 00000090  DSNL511I  -DBAG DSNLIENO TCP/IP CONVERSATION FAILED 757                     
                 757 00000090             TO LOCATION ::10.0.40.22                                         
                 757 00000090             IPADDR=::10.0.40.22 PORT=53893                                   
                 757 00000090             SOCKET=SENDMSG RETURN CODE=140 REASON CODE=76697242               
20:51:36.13 STC00035 00000090  IEA043I SVC DUMP REACHED MAXSPACE LIMIT - MAXSPACE=00000500 MEG             

Actually, what happens in log - IMS makes checkpoint, switches online logs, again checkpoint, IVPGNJCL starts that writes online logs to offline logs - and here is a beginning of a problem - look at the time line at left column.
15 minutes later, abend message and IMS starts to fall down.

Job log has no other information.

IMS DB/DC :: RE: IMS BMP program causes 878 system abend

$
0
0
Author: Artemk
Posted: Thu Nov 24, 2016 12:12 am (GMT 5.5)

Today I got a dump again, and now found the reason code. Thanks for hint to look in the job log, more It was in job log of control region, not bmp. Unfortunately, I'm unable to read dumps. The only thing I see that PSW at entry for ABEND is from 31bit address space.
The RC=10, so I went to an old topic http://ibmmainframes.com/about38154.html unfortunately they do not tell what CSA worked for that case.

I understand that there is something wrong with virtual storage - need to tune CSA/SQA size, or IMS buffer pools. I believe that only buffers that provide space for NBA/OBA should be considered, because changes of NBA change behaviour of the system.
But, in my case we use Fast path 64bit buffer pool manager, and do not need to tune pools manually like needed in older IMS (surely, if I undestand correct how does this new manager works).
The only parameter could be changes in FP64 is pool size(if I haven't missed smth else), we tried different sizes - from 100MB till maximal 2047, no changes.
CSA/SQA were different too - now they are
CSA = 1MB(tried 4) ECSA = 1GB SQA = 1MB(tried 4) ESQA = 50MB
We decreased sizes from 4 to 1 because thought that areas take 8mb below the line giving only other 8mb to other programs, and usually 640KB are enough.
Actually, we could give more space to IMS in CSA or other areas - from 16MB CSA system takes may be 1 MB, user programs hopefully fit in 2, so 10-12MB is real.
But I'd better become sure that exactly this is a cause for abend.

So, folks, are there any minds what I could try locate the problem?
Big thanks from me for any hints.

Artem

IMS DB/DC :: RE: IMS BMP program causes 878 system abend


IMS DB/DC :: RE: IMS BMP program causes 878 system abend

$
0
0
Author: Robert Sample
Posted: Thu Nov 24, 2016 1:27 am (GMT 5.5)

From the MVS System Codes manual:
Quote:
10
There is not enough virtual private area storage available to satisfy the request. This is due to one of the
following:
v
A program is requesting virtual storage, but not subsequently freeing the storage.
v
The region size specified is too small.
v
An installation exit is requesting virtual storage from a V=R region before initialization of the region has
completed.
The third one is not likely to be the problem since initialization appears to be complete. Therefore, either you're not giving it enough region or a program is not releasing storage. Note that the private area extends from the top of the prefixed storage area (PSA) to the beginning (or bottom end) of the common service area (CSA) -- and hence making changes to your CSA size may be making things worse instead of better.

If the problem is in 24-bit storage, you may have a real problem because there's only so much room below the line and if you're using it all, there's not a lot of places to get more from.

If the problem is in 31-bit storage, then you probably can adjust things (as long as you have enough storage assigned to the LPAR; if not, you may have to change the LPAR storage allocation - stealing from other LPARs if necessary).

The problem will NOT be in 64-bit storage; 64-bit storage allocation works in a completely different way (see memory objects on the IBM web site if you want to find out more) such that many concepts that apply to 24-bit and 31-bit memory have no meaning for 64-bit memory.
_________________
TANSTAAFL

The first rule of code reuse is that the code needs to be worth re-using.

"We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil." -- Donald Knuth

IBM Tools :: File Aid to File Manager conversion

$
0
0
Author: murali3955
Subject: File Aid to File Manager conversion
Posted: Thu Nov 24, 2016 3:41 pm (GMT 5.5)

Hi,

At our site File Aid has been retired and we are using File Manager now. Team had already converted the Batch jobs from File Aid to File Manager. They missed out some of the Online components.

From Online CICS screen when the user enters the details and hits Enter, a batch job is submitted through Internal Reader. This batch job uses File Aid for processing. Fortunately there are no users using the screen, so we have some time to convert to File Manager.

Below is the existing File Aid card:
Code:
$$DD01   COPYALL IF=(1,NE,C'XXXX'),
    IF=(150,EQ,C'B,D,S,P'),
      RA=(1,100,C"   ",C"  "),
    IF=(150,EQ,C'B,D,S,M,M1,M2,2Z,P,V,F'),
     RA=(1,100,C"    ", C"  "),
    IF=(150,EQ,C'B,D,S'),
     RA=(1,100,C"    ", C"  ")



Below is the File Manager card we are trying:
Code:
$$FILEM DSC  INPUT=DD01,                                 
$$FILEM      OUTPUT=DD01O,                               
$$FILEM      PROC=*   
IF FLDO(1,'\==',"XXXX"),                                     
& FLDO(150,'==',"B,D,S,P")                                  
 THEN DO                                                      
  CHG_OUT("  ", " ",0,1,100)  
 END                                                          
 IF FLDO(150,'==',"B,D,S,M,M1,M2,2Z,P,V,F")                   
 THEN DO                                                      
  CHG_OUT("  "," ",0,1,100)  
 END                                                          
 IF FLDO(150,'==',"B,D,S")                                    
 THEN DO                                                      
  CHG_OUT("  "," ",0,1,100)  
 END                                                          
/+
                                                            


1) File Aid is retired, so we are unable to test how the above File Aid card will work. But read manuals to know how the card will work.

2) We scanned all our components to identify similar kind of File Aid card, but couldn't find any

3) We tried to identify corresponding File Manager syntax and use it in a batch job. Not sure if we have used corresponding File Manager syntax. We are getting error when submitting the job.

Code:
  9 +++ IF FLDO(1,'\==',"XXXX"),& FLDO(150,'==',"B,D,S,P")
  13I Error running FMNINTEX, line 9: Invalid character in program
  382 REXX exec terminated with RC 20013



Please help in converting the File Aid card to File manager.
Thank in Advance for your help and suggestion.

Thanks,
Murali.

Coded

CICS :: RE: DFHWS2LS return value

$
0
0
Author: divated
Subject: Reply to: DFHWS2LS return value
Posted: Thu Nov 24, 2016 5:18 pm (GMT 5.5)

Posting with detailed clarification.

source system (wsdl) layout

salary decimal 14
rate decimal 14
fees decimal 14

data returned output 1 in application

salary 1234567.123
rate 1234.123456
fees 1234567.123

data returned output 2 in application

salary 1234567.123
rate 1234.123
fees 1234567.123

Cobol layout generated from DFHWS2LS JCL.

ws-salary pic 9(15)v999.
ws-rate pic 9(15)v999.
ws-fees pic 9(15)v999.

Result: My invoke webservice is failing in test case 1 as ws-rate field is expected to be defined as pic 9(12)v9(6).

Note: Cobol Layout is generated from DFHWS2LS JCL.I tried with DEFAULT-FRACTION-DIGITS=6 but then the ws-salary and ws-fees is also generated with pic 9(12)v9(6) (I don't want to change the ws-salary and ws-fees).

Any help to change the para parameters so that my jcl will generate the copybook with correct ws-rate field.

Error: DFHPI1009 XML to data transformation failed. A conversion error (FRACTION_TOO_LONG) occurred
when converting field ws-rate for WEBSERVICE feeLookup.

JCL:

Code:
/*JOBPARM SYSAFF=*                                                 
// JCLLIB ORDER=TRCICSX.R520.R1.SDFHINST                           
//WS2LS     EXEC DFHWS2LS,USSDIR='cicsts52',                       
// JAVADIR='java/J7.1_64',                                         
// PATHPREF=''                                                     
//INPUT.SYSUT1 DD *                                                 
LOGFILE=/u/cyd4/fxmgoxml.log                                       
MAPPING-LEVEL=4.0                                                   
MINIMUM-RUNTIME-LEVEL=4.0                                           
PDSLIB=//TRISDXX.SHARED.LIBRARY                                     
REQMEM=FXMGI                                                       
RESPMEM=FXMGO                                                       
LANG=COBOL                                                         
OPERATIONS=feeLookup                                               
DATA-TRUNCATION=ENABLED                                             
WSBIND=/cics/cicsts52/ws_bind/dev1/forxsreq/fxmgoxml.wsbind   
WSDL=/cics/cicsts52/ws_bind/dev1/forxsreq/*                   
agent.wsdl                       
DEFAULT-FRACTION-DIGITS=3           
*/

Coded
_________________
Thanks,
Dilip Divate

CICS :: RE: CICS Roll back partially - Need to retain log file

$
0
0
Author: dwijadas
Posted: Thu Nov 24, 2016 5:18 pm (GMT 5.5)

Well .. Thanks but I need idea.


The CICS program is initiated by a MQ trigger. Multiple file is needed to update. As part of the process once a result is sent out to requesting system. If the requesting system did not acknowledge the update. CICS should roll back all update.

Here roll back is fine. but the message log file should be kept as proof that request came to CICS.

Any idea ? is there any concept of SYNCPOINT/COMMIT nesting ?

CICS :: Invoke Webservice Fails with DFHPI1009 error

$
0
0
Author: divated
Subject: Invoke Webservice Fails with DFHPI1009 error
Posted: Thu Nov 24, 2016 5:57 pm (GMT 5.5)

I am posting this message again as previously i have posted in jcl forum.

Question: How to define field which returns different values from the source system ?

source system (wsdl) layout

salary decimal 14
rate decimal 14
fees decimal 14

data returned output 1 in application

salary 1234567.123
rate 1234.123456
fees 1234567.123

data returned output 2 in application

salary 1234567.123
rate 1234.123
fees 1234567.123

Cobol layout generated from DFHWS2LS JCL.

ws-salary pic 9(15)v999.
ws-rate pic 9(15)v999.
ws-fees pic 9(15)v999.

Result: My invoke webservice is failing in test case 1 as ws-rate field is expected to be defined as pic 9(12)v9(6).

Note: Cobol Layout is generated from DFHWS2LS JCL.I tried with DEFAULT-FRACTION-DIGITS=6 but then the ws-salary and ws-fees is also generated with pic 9(12)v9(6) (I don't want to change the ws-salary and ws-fees).

Any help to change the para parameters so that my jcl will generate the copybook with correct ws-rate field.

Error: DFHPI1009 XML to data transformation failed. A conversion error (FRACTION_TOO_LONG) occurred
when converting field ws-rate for WEBSERVICE feeLookup.

JCL:

/*JOBPARM SYSAFF=*
// JCLLIB ORDER=TRCICSX.R520.R1.SDFHINST
//WS2LS EXEC DFHWS2LS,USSDIR='cicsts52',
// JAVADIR='java/J7.1_64',
// PATHPREF=''
//INPUT.SYSUT1 DD *
LOGFILE=/u/cyd4/fxmgoxml.log
MAPPING-LEVEL=4.0
MINIMUM-RUNTIME-LEVEL=4.0
PDSLIB=//TRISDXX.SHARED.LIBRARY
REQMEM=FXMGI
RESPMEM=FXMGO
LANG=COBOL
OPERATIONS=feeLookup
DATA-TRUNCATION=ENABLED
WSBIND=/cics/cicsts52/ws_bind/dev1/forxsreq/fxmgoxml.wsbind
WSDL=/cics/cicsts52/ws_bind/dev1/forxsreq/*
agent.wsdl
DEFAULT-FRACTION-DIGITS=3
*/
_________________
Thanks,
Dilip Divate

Viewing all 8500 articles
Browse latest View live