This repository was archived by the owner on Feb 15, 2026. It is now read-only.
forked from gitpan/MQSeries
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathChanges.html
More file actions
1689 lines (1054 loc) · 110 KB
/
Changes.html
File metadata and controls
1689 lines (1054 loc) · 110 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:root@osx300.apple.com" />
</head>
<body style="background-color: white">
<ul id="index">
<li><a href="#Introduction">Introduction</a></li>
<li><a href="#Changes-for-1.35">Changes for 1.35</a></li>
<li><a href="#Changes-for-1.34">Changes for 1.34</a></li>
<li><a href="#Changes-for-1.33">Changes for 1.33</a>
<ul>
<li><a href="#Major-work-on-Statistics-messages-and-PCF-types">Major work on Statistics messages and PCF types</a></li>
<li><a href="#MQSC-and-PCF-enhancements">MQSC and PCF enhancements</a></li>
<li><a href="#Minor-tweaks">Minor tweaks</a></li>
<li><a href="#Important-note-for-MQv5-and-perl-5.6-users">Important note for MQv5 and perl 5.6 users</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.32">Changes for 1.32</a>
<ul>
<li><a href="#ReasonQualifier-Macro-Translation">ReasonQualifier Macro Translation</a></li>
<li><a href="#SSL-Improvements">SSL Improvements</a></li>
<li><a href="#MQSeries::Command-fix-for-InquireChannelNames">MQSeries::Command fix for InquireChannelNames</a></li>
<li><a href="#Portability-Better-code">Portability / Better code</a></li>
<li><a href="#MQSeries::Command-fix-for-CreateObject">MQSeries::Command fix for CreateObject</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.31">Changes for 1.31</a>
<ul>
<li><a href="#XS-code-cleanup">XS code cleanup</a></li>
<li><a href="#Minor-bugfixes">Minor bugfixes</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.30">Changes for 1.30</a>
<ul>
<li><a href="#Support-for-properties-MQ-v7">Support for properties (MQ v7)</a></li>
<li><a href="#Support-for-asynchronous-put-status-information-MQ-v7">Support for asynchronous put status information (MQ v7)</a></li>
<li><a href="#MQSeries::Command-enhancements-for-MQ-v7">MQSeries::Command enhancements for MQ v7</a></li>
<li><a href="#MQSeries::Command-enhancements-to-support-filter-commands">MQSeries::Command enhancements to support filter commands</a></li>
<li><a href="#XS-code-cleanup1">XS code cleanup</a></li>
<li><a href="#Updated-examples">Updated examples</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.29">Changes for 1.29</a>
<ul>
<li><a href="#Initial-support-for-MQ-v7">Initial support for MQ v7</a></li>
<li><a href="#MQSeries::Command-fixes">MQSeries::Command fixes</a></li>
<li><a href="#Support-SecurityParms-in-MQCONNX">Support SecurityParms in MQCONNX</a></li>
<li><a href="#SSL-tutorial">SSL tutorial</a></li>
<li><a href="#Minor-bugfixes1">Minor bugfixes</a></li>
<li><a href="#ChannelTable-fixes">ChannelTable fixes</a></li>
<li><a href="#MQSeries::Command-fixes1">MQSeries::Command fixes</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.28">Changes for 1.28</a>
<ul>
<li><a href="#Compilation-fixes-when-used-with-MQ-v5">Compilation fixes when used with MQ v5</a></li>
<li><a href="#Fix-client-server-detection-on-Windows">Fix client/server detection on Windows</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.27">Changes for 1.27</a>
<ul>
<li><a href="#New-entries-in-the-AMQERR0x.LOG-parser">New entries in the AMQERR0x.LOG parser</a></li>
<li><a href="#Other-changes-made">Other changes made:</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.26">Changes for 1.26</a>
<ul>
<li><a href="#Updated-entries-for-AMQ9001-and-AMQ9002">Updated entries for AMQ9001 and AMQ9002</a></li>
<li><a href="#Correct-the-RequestParameterOrder-for-SetAuthorityRecord">Correct the RequestParameterOrder for SetAuthorityRecord</a></li>
<li><a href="#Fix-the-InquireChannelStatus-PCF-command">Fix the InquireChannelStatus PCF command</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.25">Changes for 1.25</a>
<ul>
<li><a href="#Add-missing-generated-files">Add missing generated files</a></li>
<li><a href="#Fix-link-RPATH-glitches-on-64-bit-Linux">Fix link RPATH glitches on 64-bit Linux</a></li>
<li><a href="#Remove-vestigial-MQ-v2-and-OS-390-support">Remove vestigial MQ v2 and OS/390 support</a></li>
<li><a href="#Remove-outdated-PubSub-support">Remove outdated PubSub support</a></li>
<li><a href="#Switch-to-Params::Validate">Switch to Params::Validate</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.24">Changes for 1.24</a>
<ul>
<li><a href="#Add-support-for-MQ-v6-in-MQSeries::Command">Add support for MQ v6 in MQSeries::Command</a></li>
<li><a href="#Fix-a-bug-in-MQSeries::Config::QMgr">Fix a bug in MQSeries::Config::QMgr</a></li>
<li><a href="#Fix-documentation-for-Carp-parameter">Fix documentation for Carp parameter</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.23">Changes for 1.23</a>
<ul>
<li><a href="#New-MQSeries::Message::RFH2-class">New MQSeries::Message::RFH2 class</a></li>
<li><a href="#Support-for-NonPersistentMsgClass">Support for NonPersistentMsgClass</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.22">Changes for 1.22</a>
<ul>
<li><a href="#Support-for-the-MQ-Client-on-Linux-Itanium">Support for the MQ Client on Linux / Itanium</a></li>
<li><a href="#Support-for-SCO-OpenServer-MQSeries-5.0">Support for SCO OpenServer / MQSeries 5.0</a></li>
<li><a href="#MQSeries::Command-fixes2">MQSeries::Command fixes</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.21">Changes for 1.21</a>
<ul>
<li><a href="#Fixes-for-MQSeries::Message::IIH">Fixes for MQSeries::Message::IIH</a></li>
<li><a href="#Fix-for-MQSeries::Queue-Get-failure-with-MQRC_FORMAT_ERROR">Fix for MQSeries::Queue Get() failure with MQRC_FORMAT_ERROR</a></li>
<li><a href="#Use-version-2-of-MQMD-MQGMO-MQPMO-by-default">Use version 2 of MQMD, MQGMO, MQPMO by default</a></li>
<li><a href="#Handle-too-short-input-data">Handle too-short input data</a></li>
<li><a href="#Add-support-for-SSL-connect-options-to-MQCONNX-and-MQSeries::QueueManager">Add support for SSL connect options to MQCONNX and MQSeries::QueueManager</a></li>
<li><a href="#MQSeries::Command-supports-direct-mainframe-connectivity">MQSeries::Command supports direct mainframe connectivity</a></li>
<li><a href="#Improve-support-for-WMQ-5.3-queue-sharing-groups">Improve support for WMQ 5.3 queue-sharing groups</a></li>
<li><a href="#Support-for-V7-channel-tables-in-MQSeries::Config::ChannelTable">Support for V7 channel tables in MQSeries::Config::ChannelTable</a></li>
<li><a href="#Alter-link-libraries-for-AIX">Alter link libraries for AIX</a></li>
<li><a href="#Drop-deprecated-options-methods-for-MQSeries::Queue">Drop deprecated options, methods for MQSeries::Queue</a></li>
<li><a href="#Drop-deprecated-option-for-MQSeries::QueueManager">Drop deprecated option for MQSeries::QueueManager</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.20">Changes for 1.20</a>
<ul>
<li><a href="#Improve-MQSeries::Command::PCF-support-for-clusters">Improve MQSeries::Command::PCF support for clusters</a></li>
<li><a href="#Support-file-handles-in-writeFile-for-MQSeries::Config::ChannelTable">Support file handles in writeFile() for MQSeries::Config::ChannelTable</a></li>
<li><a href="#Support-for-V6-channel-tables-in-MQSeries::Config::ChannelTable">Support for V6 channel tables in MQSeries::Config::ChannelTable</a></li>
<li><a href="#New-MQSeries::Message::Trigger-class">New MQSeries::Message::Trigger class</a></li>
<li><a href="#Alter-link-libraries-for-Linux-and-HP-UX">Alter link libraries for Linux and HP-UX</a></li>
<li><a href="#Fix-the-MQSeries::Command-Escape-method">Fix the MQSeries::Command->Escape() method</a></li>
<li><a href="#Deprecated-parameters-generate-a-warning">Deprecated parameters generate a warning</a></li>
<li><a href="#Deprecated-methods-generate-a-warning">Deprecated methods generate a warning</a></li>
<li><a href="#Drop-old-platforms-and-releases">Drop old platforms and releases</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.19">Changes for 1.19</a>
<ul>
<li><a href="#API-change-for-Get-Put-methods-of-MQSeries::Queue">API change for Get/Put methods of MQSeries::Queue</a></li>
<li><a href="#New-MQSeries::Message::ConfigEvent-class">New MQSeries::Message::ConfigEvent class</a></li>
<li><a href="#New-MQSeries::Message::IIH-class">New MQSeries::Message::IIH class</a></li>
<li><a href="#Add-support-for-WebSphere-MQ-5.3-on-z-OS">Add support for WebSphere MQ 5.3 on z/OS</a></li>
<li><a href="#New-features-for-MQSeries::Command">New features for MQSeries::Command</a></li>
<li><a href="#Better-decoding-of-MQSC-results">Better decoding of MQSC results</a></li>
<li><a href="#Parameter-verification-for-MQSeries::QueueManager">Parameter verification for MQSeries::QueueManager</a></li>
<li><a href="#Parameter-verification-for-MQSeries::Queue">Parameter verification for MQSeries::Queue</a></li>
<li><a href="#New-Convert-option-for-MQSeries::Queue-Get-method">New 'Convert' option for MQSeries::Queue Get method</a></li>
<li><a href="#Deprecated-parameters-generate-a-warning-if--w-is-enabled">Deprecated parameters generate a warning if -w is enabled</a></li>
<li><a href="#Deprecated-methods-generate-a-warning-if--w-is-enabled">Deprecated methods generate a warning if -w is enabled</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.18">Changes for 1.18</a>
<ul>
<li><a href="#Add-support-for-WebSphere-MQ-5.3">Add support for WebSphere MQ 5.3</a></li>
<li><a href="#Support-ChannelTable-reading-writing-on-Windows-NT">Support ChannelTable reading/writing on Windows NT</a></li>
<li><a href="#Improved-client-server-API-detection">Improved client/server API detection</a></li>
<li><a href="#Add-support-for-MQSC-InquireQueueStatus-command">Add support for MQSC InquireQueueStatus command</a></li>
<li><a href="#Remove-support-for-perl5.004">Remove support for perl5.004</a></li>
<li><a href="#Strict-argument-checking-for-MQSeries::Command-constructor">Strict argument checking for MQSeries::Command constructor</a></li>
<li><a href="#Modified-message-retry-handling-in-MQSeries::Queue-Get">Modified message retry handling in MQSeries::Queue Get()</a></li>
<li><a href="#Reduced-memory-usage-for-MQSeries::Command">Reduced memory usage for MQSeries::Command</a></li>
<li><a href="#Support-for-ClientConn-options-with-MQCONNX">Support for ClientConn options with MQCONNX</a></li>
<li><a href="#Support-MQ-5.2-CSD03-and-CSD04">Support MQ 5.2 CSD03 and CSD04</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.17">Changes for 1.17</a>
<ul>
<li><a href="#Parameter-order-for-PCF-commands">Parameter order for PCF commands</a></li>
<li><a href="#Final-message-for-mainframe-MQSC-commands">Final message for mainframe MQSC commands</a></li>
<li><a href="#Invalid-handling-of-zero-length-messages-and-zero-length-PCF-strings">Invalid handling of zero-length messages and zero-length PCF strings</a></li>
<li><a href="#Rename-NoAutoConnect-flag-for-MQSeries::QueueManager-constructor">Rename NoAutoConnect flag for MQSeries::QueueManager constructor</a></li>
<li><a href="#Rename-NoAutoOpen-flag-for-MQSeries::Queue-constructor">Rename NoAutoOpen flag for MQSeries::Queue constructor</a></li>
<li><a href="#Add-QueueManager-method-to-MQSeries::Queue">Add QueueManager method to MQSeries::Queue</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.16">Changes for 1.16</a>
<ul>
<li><a href="#MQSeries::Config::ChannelTable">MQSeries::Config::ChannelTable</a></li>
<li><a href="#MQSeries::Queue-Set-was-horrible-broken">MQSeries::Queue->Set was horrible broken</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.15">Changes for 1.15</a>
<ul>
<li><a href="#Add-AFS-principal-type-to-Authority-API">Add 'AFS' principal type to Authority API</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.14">Changes for 1.14</a>
<ul>
<li><a href="#Support-for-a-compare-callback-method-in-CreateObject">Support for a compare-callback method in CreateObject</a></li>
<li><a href="#Support-for-StorageClass-objects-in-MQSC-commands">Support for StorageClass objects in MQSC commands</a></li>
<li><a href="#MQSeries::Command::Base-GetConvert-preserves-original-message-Buffer">MQSeries::Command::Base->GetConvert preserves original message Buffer</a></li>
<li><a href="#MQSeries::QueueManager-ConnectTimeout-logic-fixed">MQSeries::QueueManager ConnectTimeout logic fixed</a></li>
<li><a href="#MQSeries::Config::Machine-re-parsing-bug">MQSeries::Config::Machine re-parsing bug</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.13">Changes for 1.13</a>
<ul>
<li><a href="#Support-for-MQSeries-version-5.2-on-the-mainframe">Support for MQSeries version 5.2 on the mainframe</a></li>
<li><a href="#MQSeries::QueueManager-AutoCommit-off-by-default">MQSeries::QueueManager AutoCommit off by default</a></li>
<li><a href="#Un-bloat-the-code">Un-bloat the code</a></li>
<li><a href="#MQSeries::Command-InquireChannelStatus-handles-MQRCCF_CHL_STATUS_NOT_FOUND-more-elegantly">MQSeries::Command->InquireChannelStatus handles MQRCCF_CHL_STATUS_NOT_FOUND more elegantly</a></li>
<li><a href="#MQSeries::Message::RulesFormat-tolerant-of-leading-whitespace">MQSeries::Message::RulesFormat tolerant of leading whitespace</a></li>
<li><a href="#MQSeries::Message::XML-Dumper-removed">MQSeries::Message::XML-Dumper removed</a></li>
<li><a href="#Bug-in-Extended-PCF-Command-InquireAuthority-fixed">Bug in Extended PCF Command "InquireAuthority" fixed</a></li>
<li><a href="#Minor-bug-in-handling-of-CompCode-Reason-values-from-MQSC-Commands">Minor bug in handling of CompCode/Reason values from MQSC Commands</a></li>
<li><a href="#MQSeries::Command-ReasonText-documented">MQSeries::Command->ReasonText documented</a></li>
<li><a href="#MQSeries::Command-CreateObject-takes-Force-argument">MQSeries::Command->CreateObject takes Force argument</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.12">Changes for 1.12</a>
<ul>
<li><a href="#MQSeries::Command-Responses">MQSeries::Command->Responses</a></li>
<li><a href="#Support-for-control-of-implicitly-commited-transactions">Support for control of implicitly commited transactions</a></li>
<li><a href="#MQSeries::QueueManager-Connect-timeout-logic">MQSeries::QueueManager->Connect() timeout logic</a></li>
<li><a href="#OS-390-Support">OS/390 Support</a></li>
<li><a href="#MQSeries::Config::Authority">MQSeries::Config::Authority</a></li>
<li><a href="#MQSeries::Command-CreateObject-fix:-Change-not-Create">MQSeries::Command->CreateObject fix: Change, not Create</a></li>
<li><a href="#MQSeries::Command-CreateObject-fix:-Comparing-lists">MQSeries::Command->CreateObject fix: Comparing lists</a></li>
<li><a href="#Limit-the-max-of-open-files-for-MQSeries::FDC::Tail">Limit the max # of open files for MQSeries::FDC::Tail</a></li>
<li><a href="#Support-for-symbolic-Wait-and-Expiry-values">Support for symbolic Wait and Expiry values</a></li>
<li><a href="#Use-of-GetConvert-error-checked-properly">Use of GetConvert() error checked properly</a></li>
<li><a href="#GetConvertReason-and-PutConvertReason-methods-added">GetConvertReason() and PutConvertReason() methods added</a></li>
<li><a href="#MQSeries::Command:-Support-for-ordered-attributes">MQSeries::Command: Support for ordered attributes</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.11">Changes for 1.11</a>
<ul>
<li><a href="#MQSeries::Config::-classes">MQSeries::Config::* classes</a></li>
<li><a href="#MQSeries::ErrorLog::-classes">MQSeries::ErrorLog::* classes</a></li>
<li><a href="#MQSeries::FDC::-classes">MQSeries::FDC::* classes</a></li>
<li><a href="#MQSeries::Message::DeadLetter-object">MQSeries::Message::DeadLetter object</a></li>
<li><a href="#Use-of-PutConvert-error-checked-properly">Use of PutConvert() error checked properly</a></li>
<li><a href="#MQSeries::Command-CreateObject-method-handles-lists-correctly">MQSeries::Command->CreateObject method handles lists correctly</a></li>
<li><a href="#All-GetConvert-methods-save-raw-Buffer">All GetConvert() methods save raw Buffer</a></li>
<li><a href="#MQSeries::PubSub::-ModelQName-DynamicQName-configurable">MQSeries::PubSub::*, ModelQName DynamicQName configurable</a></li>
<li><a href="#MQSeries::PubSub::AdminMessage-_TranslatePCF">MQSeries::PubSub::AdminMessage->_TranslatePCF</a></li>
<li><a href="#MQSeries::Queue-Open-was-silent-on-non-retried-errors">MQSeries::Queue->Open() was silent on non-retried errors</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.10">Changes for 1.10</a>
<ul>
<li><a href="#MQSeries::Command-MQSC-bugs">MQSeries::Command MQSC bugs</a></li>
<li><a href="#MQSeries::Message-allows-BufferLength-of-0">MQSeries::Message allows BufferLength of 0</a></li>
<li><a href="#MQSeries::Command-CreateObject-enhancements-and-documentation">MQSeries::Command->CreateObject enhancements and documentation</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.09">Changes for 1.09</a>
<ul>
<li><a href="#Support-for-Win32">Support for Win32</a></li>
<li><a href="#Retry-logic-in-MQSeries::QueueManager-Connect-and-MQSeries::Queue-Open">Retry logic in MQSeries::QueueManager->Connect() and MQSeries::Queue->Open()</a></li>
<li><a href="#MQSeries::Command-new-takes-additional-arguments">MQSeries::Command->new takes additional arguments.</a></li>
<li><a href="#MQSeries::Command-CreateObject-method-added">MQSeries::Command->CreateObject() method added</a></li>
<li><a href="#MQSeries::QueueManager-Hconn-reference-counting">MQSeries::QueueManager Hconn reference counting</a></li>
<li><a href="#MQSeries::QueueManager-constructor-arguments">MQSeries::QueueManager constructor arguments</a></li>
<li><a href="#MQSeries::Queue-Open-ignores-the-Hobj-on-errors">MQSeries::Queue->Open() ignores the Hobj on errors</a></li>
<li><a href="#MQSeries::Message-Buffer-method-added">MQSeries::Message->Buffer() method added</a></li>
<li><a href="#MQSeries::Message::Event-GetConvert-saves-raw-Buffer">MQSeries::Message::Event->GetConvert() saves raw Buffer</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.08">Changes for 1.08</a>
<ul>
<li><a href="#MQSeries::Message::Event-was-broken">MQSeries::Message::Event was broken</a></li>
<li><a href="#MQSeries::Command-error-checking-enhancement">MQSeries::Command error checking enhancement</a></li>
<li><a href="#MQSeries::QueueManager-and-MQSeries::Queue-constructor-bug">MQSeries::QueueManager and MQSeries::Queue constructor bug</a></li>
<li><a href="#MQSeries::Queue-Put-method-wasnt-setting-MQPMO_FAIL_IF_QUIESCING">MQSeries::Queue->Put() method wasn't setting MQPMO_FAIL_IF_QUIESCING</a></li>
<li><a href="#MQSeries::PubSub::Broker-Stream-API-enhanced-to-support-alternate-users">MQSeries::PubSub::Broker/Stream API enhanced to support alternate users</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.07">Changes for 1.07</a>
<ul>
<li><a href="#MQSeries::Message::PCF-memory-leak">MQSeries::Message::PCF memory leak</a></li>
<li><a href="#Change-to-simplify-static-compiles">Change to simplify static compiles</a></li>
<li><a href="#Default-Expiry-values-were-wrong">Default Expiry values were wrong</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.06">Changes for 1.06</a>
<ul>
<li><a href="#MQSeries::PubSub">MQSeries::PubSub::*</a></li>
<li><a href="#MQSeries::Message::PCF">MQSeries::Message::PCF</a></li>
<li><a href="#MQSeries::Message::RulesFormat">MQSeries::Message::RulesFormat</a></li>
<li><a href="#MQSeries::Message::XML-Dumper">MQSeries::Message::XML-Dumper</a></li>
<li><a href="#MQSeries::Command">MQSeries::Command</a></li>
<li><a href="#MQSeries::QueueManager">MQSeries::QueueManager</a></li>
<li><a href="#MQSeries::Queue">MQSeries::Queue</a></li>
<li><a href="#MQSeries-core-module">MQSeries core module</a></li>
<li><a href="#Installation-Procedures-and-other-Miscellany">Installation Procedures, and other Miscellany</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.05">Changes for 1.05</a>
<ul>
<li><a href="#Installation-Procedures">Installation Procedures</a></li>
<li><a href="#MQSeries">MQSeries</a></li>
<li><a href="#MQSeries::QueueManager1">MQSeries::QueueManager</a></li>
<li><a href="#MQSeries::Queue1">MQSeries::Queue</a></li>
<li><a href="#MQSeries::Command1">MQSeries::Command</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.04">Changes for 1.04</a>
<ul>
<li><a href="#MQSeries1">MQSeries</a></li>
<li><a href="#MQSeries::Command2">MQSeries::Command</a></li>
<li><a href="#MQSeries::Message::Storable">MQSeries::Message::Storable</a></li>
</ul>
</li>
<li><a href="#Changes-for-1.03">Changes for 1.03</a></li>
<li><a href="#Changes-for-1.02">Changes for 1.02</a></li>
</ul>
<h1 id="Introduction">Introduction</h1>
<p>This file documents the changes to each and every release of the MQSeries perl API, going back as far as the 1.02 release.</p>
<h1 id="Changes-for-1.35">Changes for 1.35</h1>
<p>Makefile.PL and util/parse_headers: Multiple definition of MQI_BY_VALUE_STR error fixed, even though this seems like a bug in a new header file that comes with MQ v8</p>
<p>MQSeries/Properties.pm: Object destructor (DESTROY) required valid Hconn, but Hconn might have been removed, causing "MQDLTMH failed" error with reason 2018.</p>
<h1 id="Changes-for-1.34">Changes for 1.34</h1>
<p>MQClient/typemap.PL will handle MQINT64 like how it handles MQHMSG.</p>
<p>MQSeries/Comamnd/Base.pm: In untraslatePCF, the filters handled properly. Filters may also apply to MQCFT_INTEGER64 and MQCFT_INTEGER64_LIST as well as the shorter kinds.</p>
<p>MQSeries/Command.pm : Added support for ChlAuth and Comminfo objects of mqv7.1.</p>
<p>MQSeries/ErrorLog/Parser.pm: addied a 'ip.ad.dre.ss (port)' parser for the error log</p>
<p>MQSeries/ErrorLog/descriptions.pl: Allow single-character hostnames. more likely this is the first character of an ip address where the first octet is a single digit. Add AMQ6048 for dbcs error.</p>
<p>MQSeries/Message/RFH2.pm : Modified based CPAN user's input. It handles NameValueData correctly. Also sets the default Format to MQFMT_NONE instead of undef.</p>
<p>util/parse_headers: Some defines are now both compound (ie, they are multiple macros |'ed together) and the last one ends in L, so the check for the former must move above the check for the latter so that it works with 7.1 string leading and trailing spaces from or'ed values. This makes the postponed parsing of or'ed defines work, where the or'ed define has spaces inside the parentheses.</p>
<h1 id="Changes-for-1.33">Changes for 1.33</h1>
<h2 id="Major-work-on-Statistics-messages-and-PCF-types">Major work on Statistics messages and PCF types</h2>
<p>Support for the decoding of MQ v6 Accounting/Statistics messages was added to the PCF decoder, along with the new types these messages use. Though not strictly necessary, support for these types (MQCFT_GROUP, MQCFT_INTEGER64, and MQCFT_INTEGER64_LIST) is intended to be complete throughout the PCF framework, so encoding should work as well.</p>
<p>New message subtypes MQSeries::Message::Accounting and MQSeries::Message::Statistics were added for this, both of which are derived from the new MQSeries::Message::System class, which mainly exists to handle the decoding of the messages. The already existing MQSeries::Message::Event class was reparented to here.</p>
<h2 id="MQSC-and-PCF-enhancements">MQSC and PCF enhancements</h2>
<p>The encoding/decoding for KeepAliveInterval has been addressed, and support for more PCF and MQSC commands have been added, and more MQ v7 items and types were included as well. This should make the administration of a z/OS queue manager more complete.</p>
<p>Note that as a part of this, the CreateAuthInfo and ChangeAuthInfo commands now require the AuthInfoType parameter which was previously optional.</p>
<h2 id="Minor-tweaks">Minor tweaks</h2>
<p>MQSeries::Queue now allows a queue to be called "0". Previously this was mistaken to be a false value (ok, it is, but it's also a defined and non-zero-length string, so you should be able to use it).</p>
<p>MQSeries::Command was mixing up the DefinitionType setting on queues when creating or updating local and model queues. In particular, you may end up with a PermDyn model queue where this is wrong, or the failure to delete a dynamic queue, in order to recreate as a local queue.</p>
<p>MQSeries::QueueManager now explicitly sets the get/put counters it keeps to 0. This is to eliminate messages of the form:</p>
<pre><code> Currently puts and 3 gets pending</code></pre>
<p>where the number of "puts" is simply missing.</p>
<p>An old bug in MQSeries::Message::PCF was removed (wrt the Header and Parameters methods) once the new MQSeries::Message::System class was added. It was completely wrong, so clearly no one had used it before now. It's better now. An old memory leak in MQEncodePCF in PCF.xs was also squashed (affected parties may have noticed a slow but continuing increase in memory size of a process that was sending lots of PCF messages).</p>
<h2 id="Important-note-for-MQv5-and-perl-5.6-users">Important note for MQv5 and perl 5.6 users</h2>
<p>With the addition of the MQ v6 Statistics and Accounting support in this release, as well as the new PCF stuff, the possibility exists that the MQSeries perl module no longer supports either MQ v5 or perl 5.6. Support for these will be at a best effort kind of basis, but with the caveat that the maintainers no longer use either of these amy will likely not be able to replicate anything close to an environment involving either of this if you have any problems.</p>
<h1 id="Changes-for-1.32">Changes for 1.32</h1>
<p>The following fixes are included in the 1.32 release:</p>
<h2 id="ReasonQualifier-Macro-Translation">ReasonQualifier Macro Translation</h2>
<p>Markus Sonderegger requested MQReasonQualifierToStrings(), MQReasonQualifierToMacro(), and MQReasonQualifierToText() functions (and the associated hashes) to translate the ReasonQualifier values to something more human-friendly.</p>
<h2 id="SSL-Improvements">SSL Improvements</h2>
<p>SSLPeerName is now handled as part of the ClientConn passed to MQCONNX(), and also when passed as part of a channel definition when writing a channel table file.</p>
<p>More SSL-related event types are now defined.</p>
<h2 id="MQSeries::Command-fix-for-InquireChannelNames">MQSeries::Command fix for InquireChannelNames</h2>
<p>Investigation of a problem report with InquireChannelNames led to the discovery of a gap between the documentation and server-side implementation of InquireChannelNames. Channel names are now taken from the last PCF response instead of the first on the grounds that that one is much more likely to contain the actual answer.</p>
<h2 id="Portability-Better-code">Portability / Better code</h2>
<p>Some types were adjusted to better match the places where they are used and to avoid compiler warnings from some platforms/compilers. Similarly, some C++ style comments were changed to C comments so that pre-C99 compilers will be happy.</p>
<p>The MQHMSG type is now translated to/from a perl type better.</p>
<p>Macros that are defined to enable backwards compatible building against older MQ installs are now wrapped in #ifdef/#endif to avoid compiler warnings.</p>
<p>The hex() function is now used to translate stringified hexadecimal into a number instead of eval(). Fix suggested by an anonymous well-intentioned problem ticket.</p>
<p>A number of places in the code path for generation of a channel table could lead perl to emit warnings about undef. Reasonable defaults have been applied to eliminate these.</p>
<p>The test for MQSTAT() has been updated to match the current state of the art.</p>
<h2 id="MQSeries::Command-fix-for-CreateObject">MQSeries::Command fix for CreateObject</h2>
<p>CreateObject() would fail to create a local queue if a dynamic queue already existed with the same name because they have the same QType (a previously existing remote queue would be deleted first because the QType is different). Now we also check the DefinitionType to see if a dynamic queue should be replaced with a local queue.</p>
<h1 id="Changes-for-1.31">Changes for 1.31</h1>
<p>The following fixes are included in the 1.31 release:</p>
<h2 id="XS-code-cleanup">XS code cleanup</h2>
<p>Fix support for builds on Solaris, and a few places where filters weren't completely supported properly. Add some type casts to quiet some compiler warnings, and a workaround for non-C99 systems.</p>
<h2 id="Minor-bugfixes">Minor bugfixes</h2>
<p>Adjust the projected test count for one script to match the number of tests, fix an undefined variable use warning in MQSeries/Command.pm, and a parameter validation inaccuracy in MQSeries/QueueManager.pm.</p>
<h1 id="Changes-for-1.30">Changes for 1.30</h1>
<p>The following changes are included in the 1.30 release:</p>
<h2 id="Support-for-properties-MQ-v7">Support for properties (MQ v7)</h2>
<p>The low-level API and the MQSeries::XXX classes have been extended with support for properties. There is a new MQSeries::Properties class and the existing MQSeries::Queue and MQSeries::Message classes have been extended with new methods.</p>
<h2 id="Support-for-asynchronous-put-status-information-MQ-v7">Support for asynchronous put status information (MQ v7)</h2>
<p>The low-level API and the MQSeries::QueueManager class have been extended with support for asynchronous put status information. In the low-level API, the function is MQSTAT; in the MQSeries::QueueManager class, the method is StatusInfo.</p>
<h2 id="MQSeries::Command-enhancements-for-MQ-v7">MQSeries::Command enhancements for MQ v7</h2>
<p>The MQSeries::Command class now supports the new MQ v7 attributes for PCF commands on distributed platforms, i.e. it supports querying and modifying the new queue manager, queue and channel attributes introduced with MQ v7. Support for Topic and Subscription objects has been added to MQSeries::Command.</p>
<h2 id="MQSeries::Command-enhancements-to-support-filter-commands">MQSeries::Command enhancements to support filter commands</h2>
<p>The MQSeries::Command class now supports filter commands for MQ v6 and above. This allows Inquire commands to include a filter that is evaluated by the queue manager and reduces the result set to items matching the filter (query).</p>
<h2 id="XS-code-cleanup1">XS code cleanup</h2>
<p>Significant cleanups in the low-level XS code should make it possible to run with warnings enabled without getting large numbers of "use of uninitialized value" messages at run-time.</p>
<h2 id="Updated-examples">Updated examples</h2>
<p>The example scripts have been updated; most notably, a new set of request/reply scripts demonstrates handling syncpoint, poison messages, and dynamic queues.</p>
<h1 id="Changes-for-1.29">Changes for 1.29</h1>
<p>The following fixes are included in the 1.29 release:</p>
<h2 id="Initial-support-for-MQ-v7">Initial support for MQ v7</h2>
<p>The module now compiles with MQ v7 and new constants are supported. Support for new and enhanced APIs is not yet in place. During configuration, some warnings will occur for unknown datatypes. This is expected and can be ignored.</p>
<p>Feedback on which MQ v7 features should be supported in the next module release is welcome.</p>
<h2 id="MQSeries::Command-fixes">MQSeries::Command fixes</h2>
<p>Minor changes for queue-sharing groups and for the HeaderCompression/MessageCompression attributes.</p>
<h2 id="Support-SecurityParms-in-MQCONNX">Support SecurityParms in MQCONNX</h2>
<p>Duke Nguyen contributed support for the SecurityParms data structure with the MQCONNX call</p>
<h2 id="SSL-tutorial">SSL tutorial</h2>
<p>Morten Bjoernsvik contributed a cookbook on using SSL with the MQSeries client and server.</p>
<h2 id="Minor-bugfixes1">Minor bugfixes</h2>
<p>Morten Bjoernsvik contributed a bugfix to the MQSeries::Queue module, avoiding a call to MQCLOSE if no queue manager connection exists.</p>
<h2 id="ChannelTable-fixes">ChannelTable fixes</h2>
<p>Recent V6 client releases are more picky in how they parse v4 channel table files (the format native to the MQ 5.0 client release). The MQSeries::Config::ChannelTable file has been updated to reflect this.</p>
<h2 id="MQSeries::Command-fixes1">MQSeries::Command fixes</h2>
<p>Add the missing ChannelStatistics attribute for Channel commands.</p>
<h1 id="Changes-for-1.28">Changes for 1.28</h1>
<p>The following fixes are included in the 1.28 release:</p>
<h2 id="Compilation-fixes-when-used-with-MQ-v5">Compilation fixes when used with MQ v5</h2>
<p>The changes for release 1.27 broke MQSeries::Command when used with an MQ v5 client.</p>
<h2 id="Fix-client-server-detection-on-Windows">Fix client/server detection on Windows</h2>
<p>Patrick Lanners supplied a patch to improve the testing for the client or server API on Windows.</p>
<h1 id="Changes-for-1.27">Changes for 1.27</h1>
<p>The following fixes are included in the 1.27 release:</p>
<h2 id="New-entries-in-the-AMQERR0x.LOG-parser">New entries in the AMQERR0x.LOG parser</h2>
<p>A number of additional message descriptions have been added to the configuration file for the AMQERR0x.LOG parser (MQSeries::ErrorLog::Parser). The newly supported messages are specific to MQ v6 on Linux/Unix/Windows.</p>
<p>The AMQERR0x.LOG parser does not yet support all new MQ v6 messages. Error reports (including AMQERR0x.LOG files) are welcome.</p>
<h2 id="Other-changes-made">Other changes made:</h2>
<ul>
<li><p>Updated MQSC command attributes for OS/390 WMQ6 queue managers.</p>
</li>
<li><p>Added/Updated PCF commands/attributes for both Mainframe and Distributed queue managers.</p>
</li>
<li><p>Added support for BYSTRING parameters like ConnectionId.</p>
</li>
</ul>
<h1 id="Changes-for-1.26">Changes for 1.26</h1>
<p>The following fixes are included in the 1.26 release:</p>
<h2 id="Updated-entries-for-AMQ9001-and-AMQ9002">Updated entries for AMQ9001 and AMQ9002</h2>
<p>IBM has changed the AMQERR log format for the above codes. Updated descriptions.pl file in the Errorlog directory.</p>
<h2 id="Correct-the-RequestParameterOrder-for-SetAuthorityRecord">Correct the RequestParameterOrder for SetAuthorityRecord</h2>
<p>Thanks to "Jean-Yves Baudy [jy.baudy@free.fr]" for pointing this out. Corrected the RequestParameterOrder file to expect the correct order.</p>
<h2 id="Fix-the-InquireChannelStatus-PCF-command">Fix the InquireChannelStatus PCF command</h2>
<p>Updated the ChannelStatus block in RequestParameters file with all the necessary optional parameters.</p>
<h1 id="Changes-for-1.25">Changes for 1.25</h1>
<p>The 1.24 release, though long-delayed, was plagued by glitches. Our only excuse is that it had been too long since the last release and we were out of practice. Let's hope the 1.25 release is better.</p>
<h2 id="Add-missing-generated-files">Add missing generated files</h2>
<p>The MQSeries 1.24 release accidentally went out without the required generated files. This has been corrected.</p>
<h2 id="Fix-link-RPATH-glitches-on-64-bit-Linux">Fix link RPATH glitches on 64-bit Linux</h2>
<p>The RPATH for 64-bit linux systems ended up as /opt/mqm/lib6464 due to duplicate addition of the '64' postfix. This has been fixed.</p>
<h2 id="Remove-vestigial-MQ-v2-and-OS-390-support">Remove vestigial MQ v2 and OS/390 support</h2>
<p>Support for the MQ v2 release has been removed. The lowest supported MQ release is now 5.2 and the lowest supported perl release is now perl 5.6.</p>
<p>In a similar manner, the incomplete and known to be broken OS/390 support is removed. The module will still work with z/OS queue managers; it just won't try and compile on OS/390 anymore.</p>
<h2 id="Remove-outdated-PubSub-support">Remove outdated PubSub support</h2>
<p>Support for the outdated pre-MQSI v2 publish/subscribe classes (MQSeries::PubSub, MQSeries::Message::RulesFormat) has been removed.</p>
<h2 id="Switch-to-Params::Validate">Switch to Params::Validate</h2>
<p>The VerifyNamedParams method in the MQSeries::Utils has been dropped and is replaced by the use of the Params::Validate module. This is a new dependency that must be installed before the MQSeries module.</p>
<h1 id="Changes-for-1.24">Changes for 1.24</h1>
<h2 id="Add-support-for-MQ-v6-in-MQSeries::Command">Add support for MQ v6 in MQSeries::Command</h2>
<p>Support for all new parameters in PCF and MQSC commands; support for mainframe PCF commands; and several new PCF commands such as <code>InquireQueueManagerStatus</code>, <code>InquireUsage</code> and the authority-related commands.</p>
<h2 id="Fix-a-bug-in-MQSeries::Config::QMgr">Fix a bug in MQSeries::Config::QMgr</h2>
<p>Monique Diaz reported a bug in MQSeries::Config::QMgr, where re-parsing a changed queue manager config file would lead to an incorrect method invocation.</p>
<h2 id="Fix-documentation-for-Carp-parameter">Fix documentation for Carp parameter</h2>
<p>Herb Williams reported that the examples for the 'Carp' parameter were broken. They should now make more sense and actually work.</p>
<h1 id="Changes-for-1.23">Changes for 1.23</h1>
<h2 id="New-MQSeries::Message::RFH2-class">New MQSeries::Message::RFH2 class</h2>
<p>A new class to support RFH2 messages; this allows interaction with JMS clients and the various WMQ Integrator products.</p>
<p>This message type is experimental and lightly tested (bugreports and patches welcome). Thanks to Tim Kimber for working on this.</p>
<h2 id="Support-for-NonPersistentMsgClass">Support for NonPersistentMsgClass</h2>
<p>The new queue attribute <code>NonPersistentMsgClass</code>, which is available for Local and Model queues starting with WMQ 5.3 CSD06, is now supported by MQSeries::Command::PCF and MQSeries::Command::MQSC.</p>
<h1 id="Changes-for-1.22">Changes for 1.22</h1>
<h2 id="Support-for-the-MQ-Client-on-Linux-Itanium">Support for the MQ Client on Linux / Itanium</h2>
<p>Add 64-bit client support for Linux / Itanium. This should also make it easy to add support for other 64-bit clients - but note that each scuh platform will need to adjust the util/parse_headers script. Patches for other platforms are welcome.</p>
<h2 id="Support-for-SCO-OpenServer-MQSeries-5.0">Support for SCO OpenServer / MQSeries 5.0</h2>
<p>Leonid Lisovskiy contributed patches to make the MQSeries module compile on SCO OpenServer 5.0.6 using the WillowTech MQSeries 5.0 client.</p>
<h2 id="MQSeries::Command-fixes2">MQSeries::Command fixes</h2>
<p>Support IndexType "GroupId" for shared queues on z/OS in MQSeries::Command::MQSC.</p>
<h1 id="Changes-for-1.21">Changes for 1.21</h1>
<h2 id="Fixes-for-MQSeries::Message::IIH">Fixes for MQSeries::Message::IIH</h2>
<p>Jeff Dunn contributed patches to the IMBS Bridge Header class MQSeries::Message::IIH that make it work on both little-endian and big-endian platforms. By default, the module assumes client and server will run on platforms with the same endian-ness; this can be overridden if this is not the case.</p>
<h2 id="Fix-for-MQSeries::Queue-Get-failure-with-MQRC_FORMAT_ERROR">Fix for MQSeries::Queue Get() failure with MQRC_FORMAT_ERROR</h2>
<p>When a message has format MQFMT_NONE; sender and receiver run on platforms with different endian-ness; and the receiver specifies Get-Message Option MQGMO_CONVERT; then MQ returns completion code MQCC_WARNING and reason code MQRC_FORMAT_ERROR.</p>
<p>The MQSeries::Queue Get() method used to treat this as an error. In this particular case (Format MQFMT_NONE), the warning can be ignored. The method now treats this as a succesful read.</p>
<h2 id="Use-version-2-of-MQMD-MQGMO-MQPMO-by-default">Use version 2 of MQMD, MQGMO, MQPMO by default</h2>
<p>The MQGET, MQPUT and MQPUT1 functions now use MQMD version 2 and MQGMO version2 by default; MQPUT and MQPUT1 now use MQPMO version2 by default if a distribution list is specified. Applications using message grouping, segmentation, or distribution lists no longer have to specify the MsgDesc, GetMsgOpts or PutMsgOpts version explicitly.</p>
<p>It is still possible to set a higher MQMD, MQGMO or MQPMO version explicitly. Note that this change will break use of older (pre-5.0) queue managers, but as these are over 5 years out of date, this should not matter.</p>
<h2 id="Handle-too-short-input-data">Handle too-short input data</h2>
<p>Howard Muten noted that specifiying a too-short correlation id on MQPUT resulted in garbage bytes written to MQ. This turned out to be a generic problem, where user-supplied data that was too short was copied in with whatever memory contenst was following. This has been fixed in the typemap code.</p>
<h2 id="Add-support-for-SSL-connect-options-to-MQCONNX-and-MQSeries::QueueManager">Add support for SSL connect options to MQCONNX and MQSeries::QueueManager</h2>
<p>Brian Bumpass contributed XS code to add support for the SSLConfig options to the <code>MQCONNX</code> call, as well as support for the additional ClientConn parameters introduced in WMQ 5.3. These options have also been added to the MQSeries::QueueManager class. Use of these options obviously requires a WMQ 5.3 client with the optional SSL support installed and configured.</p>
<h2 id="MQSeries::Command-supports-direct-mainframe-connectivity">MQSeries::Command supports direct mainframe connectivity</h2>
<p>The MQSeries::Command class now supports connecting directly to the mainframe (z/OS) using client connections. As the default syncpoint behavior on MQPUT for this platform is different, this module now explicitly specifies MQPMO_NO_SYNCPOINT when writing a message.</p>
<h2 id="Improve-support-for-WMQ-5.3-queue-sharing-groups">Improve support for WMQ 5.3 queue-sharing groups</h2>
<p>On the mainframe (z/OS), WMQ 5.3 supports queue-sharing groups. The MQSeries::Command::MQSC classes have been extended to support the following features:</p>
<ul>
<li><p>Add the 'Shared' option to the queue DefinitionType parameter values</p>
</li>
<li><p>In CreateObject(), do not alter the object but delete and recreate it when either the QSharingGroupDisposition or CFStruct attributes has changed.</p>
</li>
</ul>
<h2 id="Support-for-V7-channel-tables-in-MQSeries::Config::ChannelTable">Support for V7 channel tables in MQSeries::Config::ChannelTable</h2>
<p>Mike Surikov contributed further patches to support reading and writing of channel table files, including fields new with version 7 of this file (WMQ 5.3). Generation and parsing of the older versions is still supported.</p>
<h2 id="Alter-link-libraries-for-AIX">Alter link libraries for AIX</h2>
<p>James FitzGibbon contributed some configure options for Makefile.PL to pick the right MQ libraries on AIX.</p>
<h2 id="Drop-deprecated-options-methods-for-MQSeries::Queue">Drop deprecated options, methods for MQSeries::Queue</h2>
<p>The deprecated option <code>NoAutoOpen</code> for the MQSeries::Queue constructor <code>new</code> is no longer supported.</p>
<p>The deprecated MQSeries::Queue methods <code>Commit</code>, <code>Backout</code> and <code>Pending</code> are no longer supported. Obviously, these methods are still supported on the MQSeries::QueueManager object.</p>
<h2 id="Drop-deprecated-option-for-MQSeries::QueueManager">Drop deprecated option for MQSeries::QueueManager</h2>
<p>The deprecated option <code>NoAutoConnect</code> for the MQSeries::QueueManager constructor <code>new</code> is no longer supported.</p>
<h1 id="Changes-for-1.20">Changes for 1.20</h1>
<h2 id="Improve-MQSeries::Command::PCF-support-for-clusters">Improve MQSeries::Command::PCF support for clusters</h2>
<p>Minor fixes for the <code>InquireClusterQueueManager</code> command; add support for <code>RefreshCluster</code> command. At this time, support for <code>ResetCluster</code>, <code>SuspendQueueManagerCluster</code> and <code>ResumeQueueManagerCluster</code> is not planned (patches are welcome).</p>
<h2 id="Support-file-handles-in-writeFile-for-MQSeries::Config::ChannelTable">Support file handles in writeFile() for MQSeries::Config::ChannelTable</h2>
<p>T. Rob Wyatt requested the ability to write to a caller-supplied filehandle in the MQSeries::Config::ChannelTable <code>writeFile</code> method; this allows him to supply channel tables from a CGI script without having to create temporary files.</p>
<p>Support for this is now provided using the new <code>FileHandle</code> parameter to the <code>writeFile</code> method.</p>
<h2 id="Support-for-V6-channel-tables-in-MQSeries::Config::ChannelTable">Support for V6 channel tables in MQSeries::Config::ChannelTable</h2>
<p>Mike Surikov contributed patches to support reading and writing of version 6 client channel table files. Previous releases did not handle all fields. The default version of files written is now version 6, though generation and parsing of the older version format is still supported.</p>
<h2 id="New-MQSeries::Message::Trigger-class">New MQSeries::Message::Trigger class</h2>
<p>A new class to support trigger monitor messages; this allows you to write a trigger monitor in perl.</p>
<h2 id="Alter-link-libraries-for-Linux-and-HP-UX">Alter link libraries for Linux and HP-UX</h2>
<p>On Linux and HP-UX, the MQ libraries are different for single- and multi-threaded programs. The makefile now tries to pick the right libraries based on the 'usethread' parameter in Config.pm.</p>
<h2 id="Fix-the-MQSeries::Command-Escape-method">Fix the MQSeries::Command->Escape() method</h2>
<p>Mike Surikov supplied a patch that makes the 'Escape' method of MQSeries::Command work. This is used when sending MQSC commands using PCF.</p>
<h2 id="Deprecated-parameters-generate-a-warning">Deprecated parameters generate a warning</h2>
<p>The deprecated parameters <code>NoAutoConnect</code> for <code>MQSeries::QueueManager</code> and <code>NoAutoOpen</code> for <code>MQSeries::Queue</code> will generate a run-time warning whether -w is enabled or not. In the next release, the warning becomes a fatal error.</p>
<h2 id="Deprecated-methods-generate-a-warning">Deprecated methods generate a warning</h2>
<p>The deprecated <code>MQSeries::Queue</code> methods <code>Commit</code>, <code>Backout</code> and <code>Pending</code> will generate a run-time warning whether -w is enabled or not. In the next release, the warning becomes a fatal error.</p>
<h2 id="Drop-old-platforms-and-releases">Drop old platforms and releases</h2>
<p>This release drops support for MQSeries 5.0, Solaris 2.5.1 and IRIX. We have not made any changes to the code that should affect these platforms and releases, but no longer have hese host types around. If you care about these platforms, we'll be happy to merge patches to keep them working.</p>
<h1 id="Changes-for-1.19">Changes for 1.19</h1>
<h2 id="API-change-for-Get-Put-methods-of-MQSeries::Queue">API change for Get/Put methods of MQSeries::Queue</h2>
<p>In previous releases, specifying the <code>PutMsgOpts</code> with the <code>Put</code> method or the <code>GetMsgOpts</code> with the <code>Get</code> method of <code>MQSeries::Queue</code> meant that <code>Sync</code>, <code>Wait</code> and <code>Convert</code> parameters were ignored.</p>
<p>This has now changed: the <code>Sync</code>, <code>Wait</code> and <code>Convert</code> parameters will be honored and be combined with the get/put options specified with the <code>PutMsgOpts</code> or <code>GetMsgOpts</code> parameters.</p>
<p>The <code>Get</code> method <code>Wait</code> and <code>Convert</code> parameters will override the <code>GetMsgOpts</code> options flag.</p>
<p>The <code>Get</code> and <code>Put</code> method <code>Sync</code> paramater will check the <code>GetMsgOpts</code> or <code>PutMsgOpts</code> options flag for compatibility. If a coflicting syncpoint option is already set, a fatal error will be raised. If no conflicting option is set (this means the options flkag either has no syncpoint flag set at all, or has the requested flag set already), the requested <code>Sync</code> paramater will be added to the options flag.</p>
<p>This means the following will now work:</p>
<pre><code> my $result = $request_queue->
Get('Message' => $get_message,
'GetMsgOpts' =>
{
'Options' => (MQSeries::MQGMO_SYNCPOINT_IF_PERSISTENT |
MQSeries::MQGMO_FAIL_IF_QUIESCING),
},
'Wait' => '30s',
);</code></pre>
<p>In the past, this would cause the <code>Wait</code> flag to be silently ignored.</p>
<p>This incompatible API change may break your code. As it significantly enhances the safety of your code, this is deemed a price worth paying.</p>
<h2 id="New-MQSeries::Message::ConfigEvent-class">New MQSeries::Message::ConfigEvent class</h2>
<p>WebSphere MQ 5.3 on z/OS can generate configuration change events that cannot be read on Unix and NT queue managers - distributed queue managers are not able to convert PCF version2 messages. The MQSeries::Message::ConfigEvent class can be used to process such messages - highly useful to create an audit log.</p>
<h2 id="New-MQSeries::Message::IIH-class">New MQSeries::Message::IIH class</h2>
<p>A new class to support IMS Bridge Header (IIH) messages. This is due to Nathan Dupra of Xerox USA. This class is based on reverse engineering and somewhat experimental - feedback on functionality or the API is welcome.</p>
<h2 id="Add-support-for-WebSphere-MQ-5.3-on-z-OS">Add support for WebSphere MQ 5.3 on z/OS</h2>
<p>A number of minor changes have been made to support MQSeries::Command with the 5.3 release (now branded WebSphere MQ) on z/OS. Note that PTF UQ68236 is required - the MQSC output of "Display Queue" is invalid without that PTF, leading to errors with the <code>InquireQueue</code> method.</p>
<ul>
<li><p>Support for AuthInfo objects in <code>MQSeries::Command</code>, mostly through changes in the <code>MQSeries::Command::MQSC::*</code> tables.</p>
</li>
<li><p>Support for CFStruct (Coupling Facility Application Structure) objects in <code>MQSeries::Command</code>, mostly through changes in the <code>MQSeries::Command::MQSC::*</code> tables.</p>
</li>
<li><p>Support for the new Channel attributes in <code>MQSeries::Command</code>, mostly through changes in the <code>MQSeries::Command::MQSC::*</code> tables. The new attributes are <code>BatchHeartBeat</code>, <code>KeepAliveInterval</code>, <code>LocalAddress</code>, <code>SSLCipherSpec</code>, <code>SSLClientAuth</code> and <code>SSLPeerName</code>.</p>
</li>
<li><p>Support for the new QueueManager attributes in <code>MQSeries::Command</code>, mostly through changes in the <code>MQSeries::Command::MQSC::*</code> tables. The new attributes are <code>ConfigurationEvent</code>, <code>ExpiryInterval</code>, <code>SSLKeyRepository</code>, <code>SSLCRLNamelist</code>, <code>SSLCryptoHardware</code> and <code>SSLTasks</code>.</p>
</li>
<li><p>Support for the new Queue attributes in <code>MQSeries::Command</code>, mostly through changes in the <code>MQSeries::Command::MQSC::*</code> tables. The new attribute is <code>PageSetId</code>.</p>
</li>
<li><p>Support for the new Namelist attributes in <code>MQSeries::Command</code>, mostly through changes in the <code>MQSeries::Command::MQSC::*</code> tables. The new attribute is <code>NamelistType</code>.</p>
</li>
</ul>
<h2 id="New-features-for-MQSeries::Command">New features for MQSeries::Command</h2>
<p>The <code>MQSeries::Command</code> constructor now accepts a <code>CommandQueue</code> parameter. This allows you to open an arbitrary queue with arbitary options, then use it so send commands.</p>
<p>In addition, a new <code>MsgDesc</code> method for <code>MQSeries::Command</code> can be used to fine-tune the message descriptor for outgoing commands.</p>
<p>These new features can be used to open an arbitarry queue and override message persistence, as some users requested; internally, we sue it to set the accounting options on outgoing messages, which are then archived by the WMQ 5.3 configuration events on z/OS.</p>
<h2 id="Better-decoding-of-MQSC-results">Better decoding of MQSC results</h2>
<p>Mike Surikov pointed out more bugs in the decoding of MQSC result messages in <code>MQSeries::Command</code>. I've added more fixes...</p>
<h2 id="Parameter-verification-for-MQSeries::QueueManager">Parameter verification for MQSeries::QueueManager</h2>
<p>The parameters to the major methods of the <code>MQSeries::QueueManager</code> class (<code>new</code>, <code>Connect</code>, <code>Close</code>) are now enforced. Specifying invalid parameter names will lead to a fatal run-time error.</p>
<h2 id="Parameter-verification-for-MQSeries::Queue">Parameter verification for MQSeries::Queue</h2>
<p>The parameters to the major methods of the <code>MQSeries::Queue</code> class (<code>new</code>, <code>Open</code>, <code>Get</code>) are now enforced. Specifying invalid parameter names will lead to a fatal run-time error.</p>
<h2 id="New-Convert-option-for-MQSeries::Queue-Get-method">New 'Convert' option for MQSeries::Queue Get method</h2>
<p>The <code>Get</code> method of <code>MQSeries::Queue</code> has a new <code>Convert</code> option. This is true by default, but can be set to false if conversion is not required. This is useful when manually converting messages, e.g. WMQ 5.3 configuration events.</p>
<h2 id="Deprecated-parameters-generate-a-warning-if--w-is-enabled">Deprecated parameters generate a warning if -w is enabled</h2>
<p>The deprecated parameters <code>NoAutoConnect</code> for <code>MQSeries::QueueManager</code> and <code>NoAutoOpen</code> for <code>MQSeries::Queue</code> will generate a warning if -w is enabled. In the next release, the warning becomes mandatory.</p>
<h2 id="Deprecated-methods-generate-a-warning-if--w-is-enabled">Deprecated methods generate a warning if -w is enabled</h2>
<p>The deprecated <code>MQSeries::Queue</code> methods <code>Commit</code>, <code>Backout</code> and <code>Pending</code> will generate a warning if -w is enabled. In the next release, the warning becomes mandatory.</p>
<h1 id="Changes-for-1.18">Changes for 1.18</h1>
<h2 id="Add-support-for-WebSphere-MQ-5.3">Add support for WebSphere MQ 5.3</h2>
<p>A number of minor changes have been made to support the 5.3 release (now branded WebSphere MQ).</p>
<ul>
<li><p>The format of AMQERR01.LOG files has changed: the record separator can now contain a filename and line. Update to <code>MQSeries::ErrorLog::Parser</code>.</p>
</li>
<li><p>The product name in many message in the AMQERR01.LOG file has changed; some error messages have been added and others have minor changes. Update to <code>MQSeries::ErrorLog::descriptions.pl</code>.</p>
</li>
<li><p>The format of FDC files has changed: the product name at the start of each record has changed. Update to <code>MQSeries::FDC::Parser</code>, which now supports both the old and the new product name.</p>
</li>
<li><p>Support for AuthInfo objects in <code>MQSeries::Command</code>, mostly through changes in the <code>MQSeries::Command::PCF::*</code> tables.</p>
</li>
<li><p>Support for the new <code>InquireQueueStatus</code> command, mostly through changes in the <code>MQSeries::Command::PCF::*</code> tables.</p>
</li>
<li><p>Support for the new Channel attributes in <code>MQSeries::Command</code>, mostly through changes in the <code>MQSeries::Command::PCF::*</code> tables. The new attributes are <code>BatchHeartBeat</code>, <code>LocalAddress</code>, <code>SSLCipherSpec</code>, <code>SSLClientAuth</code> and <code>SSLPeerName</code>.</p>
</li>
<li><p>Support for the new QueueManager attributes in <code>MQSeries::Command</code>, mostly through changes in the <code>MQSeries::Command::PCF::*</code> tables. The new attributes are <code>ConfigurationEvent</code>, <code>SSLKeyRepository</code>, <code>SSLCRLNamelist</code> and <code>SSLCryptoHardware</code>.</p>
</li>
</ul>
<h2 id="Support-ChannelTable-reading-writing-on-Windows-NT">Support ChannelTable reading/writing on Windows NT</h2>
<p>Jim Wendorf reported that the <code>MQSeries::Config::ChannelTable</code> file did not reliably read and write channel tables on Windows NT. This was due to missing binmode() statements and sort order issues and has now been fixed.</p>
<h2 id="Improved-client-server-API-detection">Improved client/server API detection</h2>
<p>Edwin Haswell contributed code for improved client vs server API support. The plain "use MQSeries;" code should now work again for client installations.</p>
<h2 id="Add-support-for-MQSC-InquireQueueStatus-command">Add support for MQSC InquireQueueStatus command</h2>
<p>The <code>MQSeries::Command</code> class now supports the <code>InquireQueueStatus</code> command when using MQSC commands. This works against mainframe queue managers running MQSeries release 5.2 and up.</p>
<h2 id="Remove-support-for-perl5.004">Remove support for perl5.004</h2>
<p>The MQSeries module now requires perl5.005. We test internally with both perl5.005 and perl5.6.</p>
<h2 id="Strict-argument-checking-for-MQSeries::Command-constructor">Strict argument checking for MQSeries::Command constructor</h2>
<p>The MQSeries::Command constructor now performs strict parameter name validation and will throw an exception (using confess()) if an invalid parameter name is passed.</p>
<p>This has the potential of breaking existing, but buggy, code. Similar changes will be made to many of the other classes and methods in upcoming releases.</p>
<h2 id="Modified-message-retry-handling-in-MQSeries::Queue-Get">Modified message retry handling in MQSeries::Queue Get()</h2>
<p>Paul Meekin submitted an interesting bug showing we got message retry wrong when the initial data buffer is too large and message conversion is required (reason code MQRC_TRUNCATED_MSG_FAILED). Effectively, we were re-using the MQMD returned after the warning, which caused the requested coded character set and encoding to be ignored. This is now fixed.</p>
<p>However, this bug also showed that some of the retry logic was non-functional; the non-working code has now been removed. The retry logic failed in the following (rare) corner-case:</p>
<ul>
<li><p>You are getting a string message and requesting conversion</p>
</li>
<li><p>The data buffer specified is large enough to hold the message before conversion</p>
</li>
<li><p>The message expands during conversion (e.g., Latin-1 to UTF-8)</p>
</li>
<li><p>The data buffer specified is not large enough to hold the message after conversion</p>
</li>
</ul>
<p>It turns out that in this case (when MQCC_WARNING and MQRC_CONVERTED_STRING_TOO_BIG is returned) is not retryable. The only thing the application can do, if the message was read under syncpoint, is to roll back and try again with a properly sized data buffer.</p>
<h2 id="Reduced-memory-usage-for-MQSeries::Command">Reduced memory usage for MQSeries::Command</h2>
<p>The MQSeries::Command module will now delay loading for the sub-classes MQSeries::Command::PCF and MQSeries::Command::MQSC until either one is actually used. Under most circumstances, this will save a substantial amount of memory. Apache mod_perl users may want to pre-load the relevant sub-class as part of their startup script.</p>
<h2 id="Support-for-ClientConn-options-with-MQCONNX">Support for ClientConn options with MQCONNX</h2>
<p>Hirosi Taguti noted that the MQCONNX call did not properly support client-connection options. After he persisted in his bug reports for a year, we finally fixed it - which required adding some XS code. Note that the syntax for the ClientConn options may be different than expected, as the MQCNO 'versions' and 'Options' flags must also be accomodated:</p>
<pre><code> $HConn = MQCONNX($QmgrName,
{ 'ClientConn' => { 'ChannelName' => 'FOO',
'TransportType' => 'TCP',
'ConnectionName' => "hostname(1414)",
},
},
$CompCode,
$Reason);</code></pre>
<p>The <code>MQSeries::QueueManager</code> class now uses MQCONNX and supports an optional <code>ClientConn</code> parameter to specify these options.</p>
<h2 id="Support-MQ-5.2-CSD03-and-CSD04">Support MQ 5.2 CSD03 and CSD04</h2>
<p>Various people noted that MQSeries 5.2 CSD03 and CSD04 caused a number of tests to break. This is because the various header files now provide two different values for various constants, depending on whether you compile in 32-bit mode or 64-bit mode. As we are not running a full C pre-processor, that broke the constant parsing.</p>
<p>We now support these changed header files, though we do not yet support the 64-bit client mode on Solaris (patches are welcome).</p>
<h1 id="Changes-for-1.17">Changes for 1.17</h1>
<h2 id="Parameter-order-for-PCF-commands">Parameter order for PCF commands</h2>
<p>Jim Hildebrand at MQ Software tried to use the MQSeries::Command suite on Windows 2000 and discovered that the order in which PCF command options are specified was dependent on the platform hash key ordering, even though the PCF command server requires a specific ordering for some keys. The perl hash key ordering happened to work on Solaris, but broke on Windows 2000 (and possibly other platforms).</p>
<h2 id="Final-message-for-mainframe-MQSC-commands">Final message for mainframe MQSC commands</h2>
<p>Joseph Sacco at Starwood Hotels reported that the MQSeries::Command suite, when run against a mainframe using MQSC commands, gave annoying errors messages because the terminating response line on his mainframe queue manager has a different format from ours.</p>
<p>We now accept both formats. If you run MQSeries::Command against a mainframe and get error messages like:</p>
<pre><code> Unrecognized MQSC buffer: /T2 CSQMDRTS ' DISPLAY QUEUE' NORMAL COMPLETION</code></pre>
<p>then please get in touch and send us the error message.</p>
<h2 id="Invalid-handling-of-zero-length-messages-and-zero-length-PCF-strings">Invalid handling of zero-length messages and zero-length PCF strings</h2>
<p>Peter Giorgilli reported that we had a bug in the XS code that caused us to return garbage data when reading zero-length messages. It turns out a similar issue caused zero-length PCF strings to be misread for responses from little-endian queue managers (e.g. Linux/ia32 and Windows). These zero-length string bugs have been corrected throughout all the XS code.</p>
<h2 id="Rename-NoAutoConnect-flag-for-MQSeries::QueueManager-constructor">Rename NoAutoConnect flag for MQSeries::QueueManager constructor</h2>
<p>The NoAutoConnect flag for the MQSeries::QueueManager constructor has been renamed to AutoConnect (with, obviously, reverse meaning of the option values). The default behavior remains the same and the next few releases will support the old flag for backwards compatibility.</p>
<h2 id="Rename-NoAutoOpen-flag-for-MQSeries::Queue-constructor">Rename NoAutoOpen flag for MQSeries::Queue constructor</h2>
<p>The NoAutoOpen flag for the MQSeries::Queue constructor has been renamed to AutoOpen (with, obviously, reverse meaning of the option values). The default behavior remains the same and the next few releases will support the old flag for backwards compatibility.</p>
<h2 id="Add-QueueManager-method-to-MQSeries::Queue">Add QueueManager method to MQSeries::Queue</h2>
<p>In retrospect, it was probably a mistake to add Commit() and Backout() methods to the MQSeries::Queue class and have them delegate these calls to the queue manager object. Some developers were confused by this and thought the scope of transactions was per-queue.</p>
<p>However, it is valid to create an MQSeries::Queue object without creating an MQSeries::QueueManager object first, and Commit() and Backout() have to be called on something - so it seemed like a reasonable thing to do.</p>
<p>A new method for MQSeries::Queue, QueueManager(), can be used to extract the queue manager object from a queue. The documentation has been updated to reflect that Commit() and Backout() should be called on the queue manager object, not on the queue. The queue-level Commit() and Backout() methods will be dropped in a future release.</p>
<h1 id="Changes-for-1.16">Changes for 1.16</h1>
<h2 id="MQSeries::Config::ChannelTable">MQSeries::Config::ChannelTable</h2>
<p>The SYSTEM.DEF.CLNTCONN definition must be present, or the client can get upset in certain error conditions, so the code now forces this to the front of the list, even if you don't specify it.</p>
<p>The physical order of the entries, and the order in which the linked list pointers binds them together, now patches exactly the same pattern as IBM uses to generate the file on a queue manager. It is very possible that noone at Hursley will be able to tell one of my files from one of theirs. ;-)</p>
<p>And that's a challenge....</p>
<h2 id="MQSeries::Queue-Set-was-horrible-broken">MQSeries::Queue->Set was horrible broken</h2>
<p>This was one of those 'how did this ever work?' problems. The core was fatally broken. Fixed.</p>
<h1 id="Changes-for-1.15">Changes for 1.15</h1>
<h2 id="Add-AFS-principal-type-to-Authority-API">Add 'AFS' principal type to Authority API</h2>
<p>The extended PCF API to query/alter Unix authorities now supports a thirs entity type, 'AFS' (PCF macro MQETE_AFS_GROUP). As this requires a modified command server and custom Object Authority Manager (OAM) only used at Morgan Stanley, this should not affect anyone else.</p>
<h1 id="Changes-for-1.14">Changes for 1.14</h1>
<h2 id="Support-for-a-compare-callback-method-in-CreateObject">Support for a compare-callback method in CreateObject</h2>
<p>The CreateObject method of MQSeries::Command now supports an optional call-back to perform the comparison of object attributes. This is only useful in obscure circumstances.</p>
<h2 id="Support-for-StorageClass-objects-in-MQSC-commands">Support for StorageClass objects in MQSC commands</h2>
<p>The StorageClass object type (as used on the OS/390 version of MQSeries) is now supported by the MQSeries::Command class.</p>
<h2 id="MQSeries::Command::Base-GetConvert-preserves-original-message-Buffer">MQSeries::Command::Base->GetConvert preserves original message Buffer</h2>
<p>In order to add some statistics gathering code to the command API, the MQSeries::Command::Response objects will not keep the unconverted PCF data structures in the Buffer attribute of the object, allowing direct manipulation of the data, of necessary.</p>
<p>We need to be able to measure the absolute size of the original message, since we are trying to gather metrics on the load placed on MQSeries systems by administrative tools thatuse this API.</p>
<h2 id="MQSeries::QueueManager-ConnectTimeout-logic-fixed">MQSeries::QueueManager ConnectTimeout logic fixed</h2>
<p>This is one of this "how did this ever work?" bugs.</p>
<p>The logic to test the support for fork() in the current perl build was wrong. This has been fixed, and the retry logic tested successfully.</p>
<h2 id="MQSeries::Config::Machine-re-parsing-bug">MQSeries::Config::Machine re-parsing bug</h2>
<p>This code is clever, and re-parses mqs.ini whenever it changes so that long running daemons wil automatically detect new queue manager installation. However, the method name was incorrect, and this resulted in a fatal runtime error. Oops.</p>
<h1 id="Changes-for-1.13">Changes for 1.13</h1>
<h2 id="Support-for-MQSeries-version-5.2-on-the-mainframe">Support for MQSeries version 5.2 on the mainframe</h2>
<p>The MQSeries::Command class now supports MQSeries version 5.2 on the mainframe. This includes support for the new QSharingGroup, CouplingFacility, CommandScope and IntraGroupQueueing keywords; and the new ResetQueueStatistics method, which returns the same results as the Unix (PCF) version. The new DisplayQueueStatus MQSC command is not yet supported.</p>
<p>Support for MQSeries 5.2 on Unix has also been tested; however, as this worked without changes, none were made.</p>
<h2 id="MQSeries::QueueManager-AutoCommit-off-by-default">MQSeries::QueueManager AutoCommit off by default</h2>
<p>As warned when we deployed 1.12, MQSeries::QueueManager's AutoCommit functionality is disabled by default now. If you want pending transactions to be automatically committed when your disconnect, you must set AutoCommit in your code.</p>
<h2 id="Un-bloat-the-code">Un-bloat the code</h2>
<p>The MQSeries modules were becoming a serious memory hog, largely due to the import/export of all constants in modules the included MQSeries.</p>
<p>The MQSeries moduly now optionally allows importing just the functions, then referring to constants using an MQSeries:: prefix. This has been done throughout the MQSeries library internally, leading to a space saving of some 3 MB for programs using MQSeries::Command.</p>
<p>This change is fully backwards-compatible. There is no impact on programs using the MQSeries module, though these can reduce their memory footprint (if desired) by selectively importing the required MQSeries functions.</p>
<h2 id="MQSeries::Command-InquireChannelStatus-handles-MQRCCF_CHL_STATUS_NOT_FOUND-more-elegantly">MQSeries::Command->InquireChannelStatus handles MQRCCF_CHL_STATUS_NOT_FOUND more elegantly</h2>
<p>The code has always tried to make a missing channel status appear to be a successful command, and to return the "ChannelStatus" value of "NotFound", since this is not really an error. Unfortunately, we broke this when we reorganized the MQSeries::Command code for 1.12.</p>