Thanks to Scott Barry, SBBWorks, Inc, USA.
Change 20.329 -With BUILDPDB=NO, and enabling USERADD=6 26 30, and also
UTILBLDP INCLAFTR=BUILD005, macro names generated for input data
UTILRMFI for BUILD005 now knows to get it from //PDB, which is
Jan 31, 2003 where USERADD= stored them. Also, UTILBLDP defaulted to
execute ASUMxxxx members if it found you were USERADDing
their input, even when you specified BUILDPDB=NO. Now,
those ASUMs are generated only with BUILDPDB=YES, so you
would use INCLAFTR=ASUM70PR, to execute only the ASUMs
you want.
-UTILRMFI now prints a report2 even if there is no data;
the report says there was no data. Previously, only a
message to the log was written when there was none.
Thanks to Alan Sherkow, I/S Management Strategies, USA.
Change 20.328 The period in the //TAPETEMP DD was changed to a comma.
JCLWEEKT
Jan 28, 2003
Thanks to Dave Crowley, Blue Cross Blue Shield of Florida, USA.
Change 20.327 All references to %VMXGFOR and %%VMXGFOR were removed in
VMXGFOR all MXG members (except CHANGES/CHANGESS) and the VMXGFOR
Jan 28, 2003 member remains for historical interest! This %MACRO has
the value "FORCE" in SAS V6 and later, and was blank in
SAS V5. In SAS V6, SAS chose to prevent a SORT which had
the same input and output dataset names when the option
OBS=N (rather than =MAX) was in effect (so that a dumb
user didn't replace a million obs dataset with only N
obs), but then initially provided the FORCE option so you
could override that choice. Because using OBS=N is smart
for testing (so you don't have to read the whole file),
MXG added %VMXGFOR to all PROC SORTs to permit it. And
then SAS made the original behaviour the default with a
6.07 zap, but MXG users didn't have to install the zap,
since %VMXGFOR permited the sorts with OBS=N anyhow.
Now, a new 0C4 error in SAS has occurred in the handling
of the autocall for %VMXGFOR in SAS V8.2, and SAS note
SN-009297 documents the problem that will be corrected,
but by removing the FORCE option from all 282 members,
the autocall is avoided, and you won't have to install
the SAS fix when its available.
Change 20.326 Type 30 records from OS/390 R2.10 with JOB='INIT' have an
VGETJESN undocumented and unexpected value of JCTJOBID='INTnnnnn';
Jan 28, 2003 JCTJOBID='STCnnnnn' is the expected value of SMF30JNM.
This unexpected prefix caused MXG to set TYPETASK='INT '.
The logic to set TYPETASK was changed to recognize these
values and set TYPETASK='STC ', and additional protection
for future undocumented values of JCTJOBID was added.
Thanks to Roger P. Martens, International Truck and Engine Corp, USA.
Change 20.325 TYPE792 was incorrectly deaccumulated, as there are many
VMAC79 repeated entries with same JOB (R792JBN); added ASID to
Jan 24, 2003 separate in the SORT and in the IF FIRST. logic. This
problem was only seen for OMVS jobs. Same change made in
TYPE791 just because it was also sorted by R791JBN.
Thanks to Stan Dylnicki, RBC, USA.
Change 20.324 Almost cosmetic; semi-colons were added after each of the
DOC _Edddddd exit invocations. In general, not required, but
Jan 24, 2003 their existence can be exploited in members that generate
code (BLDNTPDB, READDB2), and it was my intention to have
them always present, even if unneeded.
Change 20.323 Using RUNDAY=YES,RUNWEEK=YES,RUNMNTH=YES,RUNNTINT=NO
BLDNTPDB caused errors, attempting to create NTINTRV, even though
VMACNTSM RUNNTINT=NO. TRNDNTIN was initialized and fixed. The
Jan 23, 2003 KEEPERS= logic was revised.
Jan 28, 2003 -VMACNTSM did not have the normal semicolon after each of
the _Edddddd exit macro invocations, which are required
only if you re-define those exits (as is done in this
case by BLDNTPDB), and a dataset label was respelled.
Thanks to Fiona Benoist, UFI Limited, ENGLAND.
Thanks to Chris Morgan, UFI Limited, ENGLAND.
Thanks to Terry Heim, ECOLAB, USA.
Change 20.322 The PROC FREQ failed if &OUTDETAL was specified; a test
ANALCNCR for &OUTDETAL now uses DATA=&OUTDETAL when that option is
Jan 22, 2003 specified.
Thanks to Kris Ferrier, State of Washington, USA.
Change 20.321 IBM's OPC Log data causes: INVALID ARGUMENT TO FUNCTION
IHDROPC error messages followed by INVALID MTD SUBTYPE. IBM has
VMACOPC changed their data, but no OPC site has yet been able to
VMXGINIT get IBM to provide the DSECTS for the MTD sub-segment,
Jan 17, 2003 which is part of the TRLRCTYP=24 "MCP EVENT" OPC record.
Fortunately, since neither site needed the datasets built
from that OPC record, they just deleted that record and
were able to continue using OPCLOG for their purposes.
This change creates the IHDROPC "OPC LOG Header Exit"
member (and &MACOPCH macro variable) so that you can
delete the TRLRCTYP=24 records in the exit or instream.
In member IMACOPCH, use IF TRLRCTYP=24 THEN DELETE;
Or instream, after your //SYSIN, you would use:
%LET MACOPCH=%QUOTE( IF TRLRCTYP=24 THEN DELETE; );
Thanks to Andrew Phillip Davis, Abbey National, ENGLAND.
Change 20.320 ASMTAPES/MXGTMNT is healed in ML-27. Option XMEM=OFF now
ASMTAPES elimimates the increase CPU time cause by fast VTS mounts
TAPEVENT (that caused 0E0 ABENDs because the job was already gone)
Jan 20, 2003 by elminating the cross memory call. This permits the
MXGTMNT monitor to be run at 0.1 seconds with minimal CPU
ML-19 @2 sec 1.36 sec/hr ML-27 @2 sec 1.8 secs/hr
ML-27 @.5 sec 6 sec/hr ML-27 @.1 sec 28.5 sec/hr
Feb 5: Do not use //EXCLUDE DD statement; causes 0C4,
awaiting dumps to examine. No other problems
have been reported. At 0.5 seconds interval,
the monitor takes less than 1 second per hour
when there are no tape mounts on that system.
Change 20.319 VGETJESN erroneously set TYPETASK='JOB' for OMVS tasks,
BUILD005 instead of TYPETASK='OMVS', causing OMVS TYPE30_1/_4/_5s
BUIL3005 to be sent to SPIN, instead of being written to the PDB
VGETJESN (OMVS type 30s have no 6s nor 26s to match), causing the
Jan 15, 2003 SPIN library to increase in size.
VGETJESN now sets TYPETASK='OMVS' if SUBSYS='OMVS', even
though those OMVS data have JCTJOBID='JOBnnnnn'.
Fortunately, these type 30 step records for OMVS tasks
are rarely important; if you do nothing, these records
will be output into your PDB library in SPINCNT days.
To remove the OMVS records from your SPIN library and to
thus prevent further growth, you can use the IMACSPCK
tailoring member to set OKFLAG=1 for these OMVS jobs.
In the SPIN30_1 and SPIN30_4 datasets, variable SUBSYS
exists and can be tested for 'OMVS', but you will need to
examine variable RACFGRUP in your SPIN30_5 dataset, as it
is the only variable you can use for SPIN30_5 (other than
a large table of JOB names). Then you can put this code:
IF SUBSYS='OMVS' OR RACFGRUP='OMVSGRUP' THEN OKFLAG=1;
in your IMACSPCK tailoring library.
The MXG change-in-error was to support the new JCTJOBID
values in JES "Z2" mode; to further protect OMVS records
from being spun due to any future Merrill error, the two
members BUILD005 and BUIL3005 that hand the OMVS 30s was
redesigned to look for either TYPETASK='OMVS' or for the
SUBSYS='OMVS' value, for added protection.
Thanks to Roger P. Martens, Navistar International, USA.
Thanks to Roger Rush, Navistar International, USA.
Change 20.318 Support for Cybermation's ESP Product's JOBHIST file.
EXESPJHR Dataset ESPJBHIS is created from the INFILE ESPHIST.
IMACESPH
VMACESPH
TYPEESPH
TYPSESPH
VMXGINIT
Jan 14, 2003
Thanks to Jesse Gonzales, The Gap, USA.
Change 20.317 Correction for the Security Resource Manager for IBM MVS
VMACSRMH V2.3, Thales e-security, Host Security Module SMF record.
Jan 14, 2003 Datasets SRMHSMDV and SRMHSMAP did not output repeated
segments, but repeatedly output only the first segment.
Thanks to Russell Dewar, National Australia Bank, AUSTRALIA.
Change 20.316 Support for Tivoli Netview NPM 2.7 SMF 28 changes.
FORMATS -NAC. Eighteen existing variables LNACPT01-LNACPT18 are
VMAC28 now documented and each contains the 3746-900 line
Jan 14, 2003 processor type, now decoded by the new MG028LT format:
Jan 17, 2003 LNACPTnn
value Description
0050X='0050X:CBP (3745-3746/900 LINK)'
0051X='0051X:NNP (APP-Resource)'
0052X='0052X:CLP (SDLC, Frame Relay, X.25)'
0053X='0053X:ESCP (ESCON)'
0054X='0054X:TRP (Token-Ring'
The CPU "NN" value in the MXG label for each of those 18
sets of LNACPxNN variables in the MXG Label is documented
(e.g., LNACPT01='3746-900*LINE*CPU 1*TYPE') and this
table maps the NN value to these line address ranges:
CPU Line Addresses CPU Line Addresses
1 2080-2111 10 2624-2687
2 2112-2175 11 2688-2751
3 2176-2139 12 2752-2815
4 2240-2303 13 2816-2879
5 2304-2367 14 2880-2943
6 2368-2431 15 2944-3007
7 2432-2495 16 3008-2071
8 2496-2559 17 3072-3135
9 2560-2623 18 NNP Processor
-NIT. INCOMPATIBLE inserts of new variables:
NITALIMB='MESSAGE*I-FRAME*BYTES*RECEIVED'
NITALIXB='XID*BYTES*RECEIVED'
NITALOMB='MESSAGE*I-FRAME*BYTES*SENT'
NITALOXB='XID*BYTES*SENT'
NITAPPNI='APPN*DATA'
NITIFSPB='INTERFACE*TABLE*SPEED*BYTES'
NITIFUC ='INPUT*UNICASTS*PACKETS*DLVD HIGHER'
NITIFUTI='PERCENTAGE*TOTAL LINK*CAPACITY*USED'
NITINUC ='INPUT*BCST/MCST*PACKETS*DLVD HIGHER'
NITISLL ='TABLE*STACK*LOW*LAYER'
NITOFUC ='OUTPUT*UNICASTS*PACKETS*DLVD HIGHER'
NITONUC ='OUTPUT*BCST/MCST*PACKETS*DLVD HIGHER'
INCOMPATIBLE in that the NIT variables are trashed by the
inserted fields, but MXG will not fail with the new data;
however, it also will not tell you NIT data is trashed!
-SMC. Scores of new low/high criteria variables are added
(COMPATIBLY, at the end).
-ACD/RCD. The Session Type, LSCDSTYP field, formerly at
offset 006C, is now documented as reserved, but in 2.7
LSCDSTYP still contains known values of session type:
'02'X='02X:3270 RELAY'
'03'X='03X:3270 CONTROL'
'04'X='04X:3270 TRANSIT=DR'
'05'X='05X:3270 TRANSIT=DFC'
'06'X='06X:AGENT SERVER COMMUNICATIONS DATA'
'08'X='08X:APPC PROTOCOL 1'
'09'X='09X:APPC PROTOCOL 2'
'0A'X='0AX:TN3270'
'0B'X='0BX:TN3270=DR'
'0C'X='0CX:TN3270E'
'0D'X='0DX:TN3270E=DR'
(plus a new, undocumented '0007'x value was found once.)
-Jan 17: Logic for LSCDIPPN was corrected, and above 0A-0D
values were added to MG028ST format.
Thanks to Michael H. Thompson, IBM Global Services, USA.
Thanks to Vernon Kelly, IBM Global Services, USA.
Change 20.315 -Support for Velocity Software's ESAMON VM Monitor 3.2 and
EXXAMSTO 3.1 with both YY and YYYY year formats in either release.
EXXAMSTO Restructured CPU, SYS, DEV, and USR records are supported
EXXAMEP1 new fields added to some segments and existing datasets,
EXXAMEP2 and new datasets created for these repeated segments:
EXXAMEP3 SEGMENT DDDDDD DATASET
EXXAMSYC SYTEP1 XAMEP1 XMXAMEP1 EP1
EXXAMVDK SYTEP1 XAMEP1 XMXAMEP2 EP2
IMACXAM SYTEP3 XAMEP3 XMXAMEP3 EP3
VMACXAM SYTCPM XAMSYC XMXAMCPM CHANNEL PATH
VMXGINIT STOVDK XAMVDK XAMSTVDK STO VDK
Jan 12, 2003 SHRSTO XAMSTO XMXAMSTO SHARED DCSS/NCS
Feb 6, 2003 -Support for the TCP file, with IBM TCPIP Monitor records,
and HST and UCD segments for Linux, NT, and HP servers is
nearly ready; contact support@mxg.com for that update.
-The USER data segments SFSAPL and MTSAPL will be decoded
only when someone wants to use that data; I previously
have decoded it from the MONWRITE output, but want a body
to make it worth my while to reuse the old code.
-Support for the default YY date format, or the optional
(if you set XAM PARM Y2K=ON in localesa.write file) YYYY.
Thanks to Tony Curry, BMC Software, USA.
Thanks to Tom White, SPRINT, USA.
Change 20.314 Enhancements to process unix sar command output increase
UNIXSAR the size of some fields that were too short.
Jan 11, 2003
Thanks to Uriel Carrasquilla, NCCI, USA.
Change 20.313 Example graphs of MQ Series SMF116 data; CPU by Region,
ANAL116 Elapsed time by Region, Bytes Get/Put, etc.
Jan 11, 2003
Thanks to Amanda Sumner, Royal Bank of Scotland, SCOTLAND.
Change 20.312 JCL examples to create ASUMUOW using Views or using the
JCLUOWP Batch Pipes product did not create the TIMESTMP variable,
JCLUOWV which caused errors that are corrected by this change,
Jan 11, 2003 which also bypasses and additional pass of both data.
Thanks to Larry Nova, TransAmerica Distribution Finance, USA.
Change 20.311 Utility to create tailored BUILDPDB jobs has new argument
UTILBLDP EXPDBOUT= that lets you insert additional code. The need
Jan 11, 2003 was to copy the TYPE6 dataset to the PDB library, so that
use would be to use the new argument in your UTILBLDP:
EXPDBOUT= DATA PDB.TYPE6;SET WORK.TYPE6; ,
or similar code to copy the dataset in that exit.
It would be wiser to use the _STY6 macro to PROC SORT the
dataset to the PDB library, since that will remove any
duplicate type 6 SMF records, but that macro will also
delete the TYPE6 dataset from the //WORK file, which will
cause BUILDPDB to fail when it tries to build PDB.PRINT
from WORK.TYPE6. If you use this logic:
EXPDBOUT= _STY6 ;
DATA TYPE6 (SORTEDBY= _BTY6); SET PDB.TYPE6; ,
the _STY6 will sort and remove duplicates, and WORK.TYPE6
will be created, marked as sorted, so that the later PROC
SORT in BUILDPDB will be bypassed.
Thanks to Normand Poitras, IBM Global Services, CANADA.
Change 20.310 Transparent redesign of processing of TYPETMNT/TYPETALO
BUILD005 in BUILDPDB was needed for the planned TAPEVENT program,
BUIL3005 which is still in development, but needed these changes:
VMAC30 -VMAC30 adds subtypes 2/3 interval tape DDs to TYPE30TD
Jan 6, 2003 dataset, and variables SUBTYPE INTBTIME INTETIME and
Jan 17, 2003 DDNAME are now kept in TYPE30TD. Subtype 4s are needed
by BUILDPDB now, and the 2/3s will be used later.
-BUILDPDB's now selects only subtype 4's in its PROC SORT
of dataset TYPE30TD, as the existing logic expects.
Change 20.309 Support for SYNCSORT for z/OS 1.1 User SMF (COMPAT).
VMACSYNC Five new variables are added, and two two-byte block
Jan 6, 2003 size of sortin and sortout are replaced by four-byte
fields, using the existing +36 bytes at end of record.
A new one byte SYNCHDB2 flag and reserved byte are input,
replacing variable NRWRKUSE, Number of Work Units Used,
which will now be missing with the new version. And the
new SYNCLVL value is 1.1 for this version, the previous
version was 3.7, making for less than elegant logic!
Thanks to Chuck Hopf, MBNA, USA.
Change 20.308 Variable ATTRQUAL was changed from LENGTH $8 to $24, as
VMACSOLN it can be longer than the original 8 byte length.
Jan 6, 2003
Thanks to Andy Creet, Department of Defence, AUSTRALIA.
=======Changes thru 20.307 were in MXG 20.10 dated Jan 03, 2003=========
Change 20.307 Change 20.274 (OW56739) was flawed, causing INVALID DATA
VMAC7072 FOR CPUHPTTM, EXETTM .. messages, and creating invalid
Jan 2, 2003 values in some observations in TYPE72GO dataset (only for
periods 2 and higher, and only if LENSCS was GE 488). The
code after IF LENSCS GE 488 THEN DO; should have INPUT
only R723PLSC field. Change 20.274 erroneously had four
additional fields that had been copied from earlier code.
Thanks to David Klein, City of New York, USA.
Change 20.306 Change 20.138 caused almost no observations in CIMSDBDS
VMACCIMS dataset; the correct test for output should have been:
Jan 2, 2003 IF NOT (DBORG EQ '00'X AND FLGOVERF EQ '00'X ) THEN DO;
Thanks to Thomas Heitlinger, FIDUCIA IT AG, GERMANY.
Change 20.305 Support for NetSpy Version 6.0 new subtypes 'G' and 'H'
EXNSPYIN create new datasets:
EXNSPYUD DATASET DDDDDD Subtype Description
IMACNSPY NSPYUDP NSPYUD G UDP Connections
VMACNSPY NSPYINTR NSPYIN H Interface
VMXGINIT However, the "H" Interface records are invalid, with only
Jan 2, 2003 76 bytes in each segment (while 176 is documented and is
the length field in these bad records). MXG will detect
and delete the invalid records, printing a note on the
SAS log. A problem will be opened with CA Support.
Thanks to Chris Selley, Zurich Finaincial Services, ENGLAND.
Change 20.304 Support for IDMS V1500 new subtypes 13, 14, and 15 create
EXIDMXLI new datasets:
EXIDMXLK DATASET DDDDDD Description
EXIDMXMS IDMSXLI IDMXLI DSG XESLOCK WAIT
IMACIDMS IDMSXLK IDMXLK DSG XESLIST WAIT
VMACIDMS IDMSXMS IDMXMS DSG XCFMSG WAIT
VMXGINIT
Dec 30, 2002
Thanks to Gilles St-Amand, DGSIG, Province of Quebec, CANADA
Change 20.303 This utility constructs DB2 GTF trace segmented records
UDB2GTF into legitimate variable length records, but printed the
UDB2GTFA "LOST EVENT" messages on the log.
Dec 30, 2002 -Member UDB2GTF only works on EBCDIC SAS (z/OS, etc).
-The new UDB2GTFA member works on ASCII SAS, if that's
where your DB2 trace records are downloaded.
Thanks to Ron Alterman, PGE, USA.
Change 20.302 Mostly cosmetic.
ANALUAFF -ANALUAFF (Unit Affinity Candidates analysis) needed an
ANALSRVC end comment in line 6.
Dec 30, 2002 -ANALSRVC replaced "compiler fakers" with ARRAYs statement
to initialize variables.
Thanks to Bruce Widlund, Merrill Consultants, USA
Change 20.301 This archaic member was replaced by VMXGTIME, but it had
VMXGGMT typo's corrected and comments updated to steer you to use
Dec 29, 2002 the VMXGTIME to convert timestamps between time zones.
Thanks to David Klein, DOITT - City of New York, USA.
Change 20.300 SAS Version 9 has tightened syntax validation, and found
VMACLMS these MXG syntax violations that were tolerated by V8.2:
VMACNTSM -VMACNTSM variable DUMMYFLD was LENGTH $32 but was also in
Dec 23, 2002 (incorrectly) INFORMAT 16.2 - error raised on the 16.2.
-VMACLMS had two instances of ELSE ELSE corrected.
-Many NOTES: 49-169 The meaning of an identifier .... that
won't go away until there's a V9 maintenance release.
=======Changes thru 20.299 were in MXG 20.09 dated Dec 20, 2002=========
Change 20.299 -Member ANALALL, which selects and prints all SMF records
ANALALL for a job is enhanced to include all user SMF records,
Dec 20, 2002 and some new SMF records added since it was last updated,
and the printing is now done with the %VMXGPRAL utility.
-Member VMACHSM now include member IMACJBCK, which is the
member that permits selection of SMF job-related records.
Thanks to Ronald Lundy, AHOLD, USA.
Change 20.298 The macro override in the MACKEEP= for LDCOVOL had the
DAILYDSN dataset name spelled wrong; the statement should be:
Dec 18, 2002 MACRO _LDCOVOL DATASETS.DCOLVOLS %
Thanks to Diane Eppestine, Southwestern Bell, USA.
Change 20.297 This enhancement adds SYSTEM and SYSPLEX to the criteria
VMXGRMFI that can be used to define RMFINTRV's workloads.
Dec 18, 2002 If you have the same SRVCLASS name on different systems
that have different meanings in your workload terms, you
can use the new positional arguments to differentiate.
(The old IMACWORK gave you access to write code for this,
but it is limited to only 15 workloads.)
Two new sections are added to the WORKx= macro arguments
(that you would tailor in the VMXGRMFI invocation in your
RMFINTRV member in your USERID.SOURCLIB).
The syntax to defina a workload now is:
WORKx=varname/label/pgn(s)/srvclass(s)/periods/system(s)/sysplex(s)
-varname is used as the first 4 characters of the name of
your workload variables
-label is the first line of the workload variable labels
-pgn(s) is a list of one or more performance group numbers
to sum into this workload (COMPAT MODE only).
-srvclass(s) is a list of one or more service or reporting
classes to sum into this workload (GOAL MODE only).
-periods is the number of periods in the workload
-system(s) is a list of one or more systems whose srvclass
or pgn will be summed into this workload.
-sysplex(s) is a list of one or more sysplexes whose pgn
or srvclass will be summed into this workload.
Thanks to Chuck Hopf, MBNA, USA.
Change 20.296 New macro variables &TRNDIN and &TRNDOUT are defined in
VMXGINIT VMXGINIT and initialized to "TREND", so that the input
Dec 18, 2002 and output TREND libraries can be different. Originally,
I backed up the trend library and then updated in place,
but for restartability products, input and output must
be different. These macro variables can be %LET to your
different DDnames, and your Trend library can be a GDG.
Only TRND23 (Change 20.239) has been updated to use these
macros, but all of the MXG TRNDxxxx members will have
this enhancement.
Macro LSU23 was defined and set to PDB for TRND23.
Thanks to Diane Eppestine, Southwestern Bell, USA.
Change 20.295 Investigation of CPU times in AS/400 datasets is enhanced
VMACQACS by new _400CPU and _400PRN macros to summarize and merge
Dec 18, 2002 all of the variables containing CPU time from QACSJOBL,
QACSSYSL, and QACSSYST into new dataset QACSCPU that
includes these CPU-related variables from these datasets:
QACSJOBL: JBCPU JBTCPU JBEDBC
QACSSYSL: SCIFUS SCIFTE SYSSWC
JSCPUTOT (sum of JS/3/1/b/c/d/e/i/m/p/s/CPU)
SCPUSTOT (sum of SCPU01-SCPU32)
NRCPUS (count of nonzero SCPUnn)
PCTCPUBY 100*SCPUSTOT/(NRCPUS*INTSEC)
QACSSYST: SHCPU
(the data in QACSSYSC is a subset of QACSSYSL).
Examination of these CPU times shows that the total CPU
time in SCPUSTOT is very close to JSCPUTOT+SHCPU.
Note that the old calculation of PCTCPUBY in QAPMSYS used
variable SHCPU, but this revision uses the total hardware
busy time (SCPUSTOT, the sum of SCPU01-SCPU32), as it is
clear that SHCPU is nothing close to the total CPU used.
To create the QACSCPU dataset, add _400CPU after you
have built the above datasets in the work file. To then
print the comparison, add _400PRN after the _400CPU
macro invocation.
Cosmetic: MXG 20.08 debug PUTs with COL=17 GDES=XX were
removed.
Thanks to Stephen Hoar, Lloyds TSB, ENGLAND.
Thanks to John Gebert, Office Depot, USA.
Dostları ilə paylaş: |