{"id":12,"category_id":6,"slug":"global-search-replace","type":null,"name":"Global Search and Replace","code":"GSR","content":"<p><strong>Scan PDS, Sequential, ICCF, or VSE libraries<\/strong><\/p>\r\n<p>Scan files searching for character strings and optionally replace\r\nthem with new character strings. <strong>Global Search and\r\nReplace<\/strong> (GSR) supports wildcards and prints an audit\r\ntrail.<\/p>\r\n<p><strong>VSE Features<\/strong><\/p>\r\n<ul>\r\n<li>Useful for converting programs or JCL, for all references to a\r\nfile, data field, or called subprogram, etc.<\/li>\r\n<li>Scan ICCF and VSE libraries<\/li>\r\n<li>List all members containing a character string<\/li>\r\n<li>Optionally replace with a new character string<\/li>\r\n<li>Audit trail shows each changed line before and after character\r\nstring replacement<\/li>\r\n<li>Wildcard support<\/li>\r\n<li>Old and new character strings may be different lengths - remaining\r\ndata is shifted (if any data is truncated, an error message is\r\nproduced)<\/li>\r\n<li>May process multiple libraries in one pass<\/li>\r\n<li>May include or exclude certain members via table card<\/li>\r\n<li>Process up to 99 sets of character strings in one pass<\/li>\r\n<li>Reload members using DTSUTIL or LIBR.&nbsp; Optionally check report\r\nbefore making changes<\/li>\r\n<li>Optionally print entire member or selected statements (DLBLs,\r\nTLBLs) for documenting JCL libraries<\/li>\r\n<\/ul>\r\n<p>&nbsp;<\/p>\r\n<p><strong>MVS Features<\/strong><\/p>\r\n<ul>\r\n<li>Useful when mass changes to a set of files or members are needed.\r\nNo need to individually edit and make repetitive changes.<\/li>\r\n<li>Input can be from a PDS or Sequential file<\/li>\r\n<li>Optionally creates a IEBUPDTE-format file so that all members can\r\nbe edited together for specialized changes such as column alignment\r\nacross multiple members&nbsp;<\/li>\r\n<li>Search and replace up to 99 character strings in one pass<\/li>\r\n<li>ISPF panel support included<\/li>\r\n<li>Search option can be used without replacing data<\/li>\r\n<li>Reports can list only finds\/changes or members containing a string\r\n(other report options available as well)<\/li>\r\n<li>PDS members can be optionally included or excluded (wildcards are\r\nallowed)<\/li>\r\n<li>Wildcards can also be used in the search string<a href=\"\/accounts\/register.html\"><br><\/a><\/li>\r\n<\/ul>","summary":"","featured":0,"status":1,"passwords":1,"extended_info":"0","deleted_at":null,"created_at":"2017-11-14T23:21:24.000000Z","updated_at":"2017-12-01T04:25:00.000000Z","sorted_releases":[{"id":1028,"parent_id":null,"product_id":12,"release":"3.1","notes":"<p>Enhancements:<\/p>\r\n<ul><li>This release begins usage for the MacKinney License Keys software to manage license keys. Zapping the password&nbsp;is no longer required. Reference&nbsp;the&nbsp;<span class=\"fontstyle2\">MacKinney License Key Usage Guide&nbsp;<\/span><span class=\"fontstyle0\">manual for information on&nbsp;<\/span>installing Global Search and Replace Release 3.1 and later license keys.<\/li><\/ul>","released_on":"2025-10-31T14:14:49.000000Z","deleted_at":null,"children":[]},{"id":851,"parent_id":null,"product_id":12,"release":"2.6","notes":"<p><\/p><p>This release is a maintenance-only upgrade for z\/OS.&nbsp; Minor changes were made for the z\/VSE version of GSR.\r\n<\/p>","released_on":"2020-02-14T02:26:53.000000Z","deleted_at":null,"children":[]},{"id":850,"parent_id":null,"product_id":12,"release":"2.6","notes":"<p><\/p><p>This release is a maintenance-only upgrade for z\/OS.&nbsp; Minor changes were made for the z\/VSE version of GSR.\r\n<\/p>","released_on":"2020-02-14T02:26:50.000000Z","deleted_at":null,"children":[]},{"id":547,"parent_id":null,"product_id":12,"release":"2.5","notes":"<p>GSR release 2.5 for VSE includes the following enhancements:<\/p>\n<ul>\n<li>The Options statement is now optional when running GSR. A default\noptions statement will be supplied with the password from the GSRPOPTS\nmodule.\u00a0 See Section 1.3 for instructions on how to zap GSRPOPTS\nto set the default options you want to use. The former phase for\npasswords--GSRPPWDS is no longer used or distributed.<\/li>\n<li>JCL is simplified. When searching sublibrary members, a separate\ncall to JLIBR is no longer required in many cases. Also, the type of\ninput and output files (Disk, Tape or Punch) can be selected via the\nASSGN SYS004 and SYS006 statements. The type of input and output values\nin the default options statement will be replaced by the type of device\nassigned to the respective SYS00n numbers.<\/li>\n<li>The JCL PARM= value can be used to specify the sublibrary pattern\nto be searched via a SEARCH=lib.sublib parameter value. The JCL PARM\ncan also be used to supply FIND=, REPLACE=, and OPTION= values. This\nmakes it possible to create a JCL PROC to encapsulate the process and\nmake GSR very simple to use.<\/li>\n<li>The input statement format has been simplified. Synonyms for the\nsearch (S OLD=) and replace (S NEW=) commands can be specified.\u00a0\n'OLD=' can be also specified as 'FIND='.\u00a0\u00a0 'NEW=' can be\nspecified as 'REPLACE='.\u00a0\u00a0<\/li>\n<li>An alternate format for the 'P' statement can be specified\n'MEMBER=' will be converted internally to 'P' statements.<\/li>\n<li>The CHANGED file is now optional for search-only jobs. (Jobs with\nno 'NEW=' or 'REPLACE=' statements.)<\/li>\n<li>For jobs that need the CHANGED file, support for z\/VSE 4.3's 'punch\nto sublibrary member' is demonstrated, making the CHANGED file easier\nto define and work with.\u00a0<\/li>\n<li>A new function (WRITE ALL) will print all of the input members. If\na CHANGED file is specified for the WRITE ALL function, GSR will also\nwrite all input into a single file that could later be used to\nreload\/replace the sublibrary or ICCF members.<\/li>\n<li>The format of the ICCF statement is relaxed.\u00a0 For one library\nscans, only the beginning library number need be entered.\u00a0 Also\nfor one-library scans, the format can be as it was: 'ICCFnnnn', where\n'nnnn' = 4 digit library number.\u00a0 But it can also be 'ICCF nn' or\n'ICCF=nn' where 'nn' can be 1 to 4 digits. Also, the ICCF library(s) to\nsearch can be specified in the SEARCH value of the JCL\nPARM='SEARCH=ICCF=10'.<\/li>\n<li>A new command SET WILDCARD VARYING now allows you to match any\nnumber of characters between the values surrounding the wildcard\ncharacter in the S=OLD function.<\/li>\n<li>Usability is improved by providing the ability to include comment\nstatements in the input statements, so they can be described in the\nsame place they are defined.\u00a0<\/li>\n<li>Error messages have also been improved.<\/li>\n<li>Some of the logic was rewritten to improve performance.<\/li>\n<li>An optional zap is available to make GSRMAIN unable to perform\nupdates.<\/li>\n<\/ul>\n","released_on":"2013-08-01T21:21:24.000000Z","deleted_at":null,"children":[]},{"id":141,"parent_id":null,"product_id":12,"release":"2.4","notes":"\n<ul>\n <li>For z\/VSE and z\/OS customers: \n <ul>\n  <li>Password maintenance has been simplified.<\/li>\n <\/ul>\n <\/li>\n <li>For z\/OS customers: \n <ul>\n  <li>A PROC is now provided to simplify usage from batch<\/li>\n  <li>Since IEBUPDTE is used to re-load the changed members, changed members containing any IEBUPDTE would caused problems replacing the member. Members are now checked for IEBUPDTE update statements and the job will fail if they are found.<\/li>\n <\/ul>\n <\/li>\n<\/ul>\n","released_on":"2007-09-10T21:21:24.000000Z","deleted_at":null,"children":[]},{"id":142,"parent_id":null,"product_id":12,"release":"2.3","notes":"\n<ul>\n <li>The previous behavior of printing a separate \"hit\" line on the report for every occurrence of the scan string within the same line has been changed.\u00a0 Beginning with this release, only one report line per input record should be printed.\u00a0 See item 2 below to revert GSRMAIN to the previous behavior.<\/li>\n <li>Two new \"Print Matching String\" option values (options record, column 11) have been added: \n <ol>\n  <li>\u00a0\u00a0 'F'\u00a0\u00a0 Print 'F'irst matching line only.\u00a0 This value will cause scanning to stop with the first record that contains any of the scan strings.\u00a0 When used in combination with the 'C' \"Print Option\" setting (in column 7), 'F' in column 11 will cause only one line per member to be printed, and only for those members that contain the scan string.<\/li>\n  <li>\u00a0\u00a0 'E'\u00a0\u00a0 Print 'E'very match found.\u00a0 If 'E' is specified, then the output report will contain a line for each occurrence of the scan string, even if there are multiple occurrences on the same input record.<\/li>\n <\/ol>\n <\/li>\n<\/ul>\n","released_on":"2006-01-06T23:21:24.000000Z","deleted_at":null,"children":[]},{"id":143,"parent_id":null,"product_id":12,"release":"2.2","notes":"<ul>\r\n <li>A new version of GSRMAIN is included, named GSRMAINL.&nbsp; GSRMAINL can scan members up to 20,000 lines in size before writing the member to the CHANGED file.&nbsp; This prevents updating members that are not really changed unless they are greater than 20,000 lines long.<\/li>\r\n <li>A new \"userid\" option for ICCF members allows you to specify the userid to be used when an ICCF member is changed.&nbsp; (This prevents the DTSUTIL ADD from failing after the DELETE when the previous userid is no longer valid.)&nbsp;<\/li>\r\n <li>The limit on the number of programs that can be INCLUDEd or EXCLUDEd is increased from 100 to 1000.<\/li>\r\n <li>The \"line\" numbers of members are now printed under the member name, making it easier to identify the line being displayed.<\/li>\r\n <li>A new option to print a specified number of lines of the member after each matched line allows you to see the lines affected in context.<\/li>\r\n <li>GSRMAIN and GSRMAINL are compiled using COBOL\/VSE.&nbsp; (If you do not have COBOL\/VSE, continue to run release 2.1.)<\/li>\r\n <li>The RETURN-CODE variable ($RC or $MRC in the JCL)&nbsp; is now set to 0 if there are members to update, 1 if there are not, or a higher number if there was an error.&nbsp; This allows you to bypass the update step if there are no updates to perform.<\/li>\r\n<\/ul>","released_on":"2005-09-02T22:54:06.000000Z","deleted_at":null,"children":[]},{"id":144,"parent_id":null,"product_id":12,"release":"2.1","notes":"<p>Changed the password update method. Eliminated requirement to compile GSRMAIN.<\/p>","released_on":"2003-07-03T23:30:02.000000Z","deleted_at":null,"children":[]},{"id":145,"parent_id":null,"product_id":12,"release":"2.0","notes":"<p>Initial MVS release with PDS support. Changed the VSE release number to match MVS version.<\/p>","released_on":"1996-12-03T00:55:12.000000Z","deleted_at":null,"children":[]},{"id":146,"parent_id":null,"product_id":12,"release":"1.5","notes":"\n<ul>\n <li>Added three option card fields (and enhanced a fourth) to identify input\/output types and lengths. This will simplify installation procedures.<\/li>\n <li>Added password protection.<\/li>\n<\/ul>\n","released_on":"1995-09-25T21:21:24.000000Z","deleted_at":null,"children":[]},{"id":147,"parent_id":null,"product_id":12,"release":"1.4","notes":"<ul>\r\n <li>If there is a non-blank in position 72 (continuation character) and a replacement causes data to be shifted to the right, shifting stops at position 71.<\/li>\r\n <li>If a replacement causes data to be shifted to the left and position 72 is non-blank (continuation character) and position 71 is not a blank and not a ',' (comma), a truncation error message is printed.<\/li>\r\n<\/ul>","released_on":"1993-06-09T22:55:34.000000Z","deleted_at":null,"children":[]},{"id":148,"parent_id":null,"product_id":12,"release":"1.3","notes":"\n<ul>\n <li>When an unchanged member is written to the CHANGED file, a message is written to the print file (see item 4 under release 1.1 changes below).<\/li>\n <li>When COMPRESSED members are written to the CHANGED file, a DTSBATCH job is created to issue a SQUEEZE command for each of those members to recompress them after they are reloaded with DTSUTIL.<\/li>\n <li>A DELETE option was added to allow deleting any line that matches a given character string (NEW=$DELETE-LINE$).<\/li>\n<\/ul>\n","released_on":"1993-03-04T23:21:24.000000Z","deleted_at":null,"children":[]},{"id":149,"parent_id":null,"product_id":12,"release":"1.2","notes":"\n<ul>\n <li>A new option to scan PHASE entries in VSE libraries has been added. It can be used to find programs that use certain modules (CICS programs using CURRENT-DATE, TIME OF DAY, etc.).<\/li>\n <li>\u00a0\u00a0\u00a0 Show line number where match found.<\/li>\n<\/ul>\n","released_on":"1991-02-20T23:21:24.000000Z","deleted_at":null,"children":[]},{"id":150,"parent_id":null,"product_id":12,"release":"1.1","notes":"\n<ul>\n <li>The output file containing scanned\/changed members is not opened unless the input scan table contains at least one \"NEW=\" entry indicating a REPLACE will be attempted. If you are only scanning, you do not need JCL for the 'CHANGED' file and you should not run the RELOAD or DTSUTIL job to reload the CHANGED file.<\/li>\n <li>The 'blank' wildcard character (see OPTION CARD, column 10) can now be used as a place holder in a replacement character string to allow it to end with one or more spaces.<\/li>\n <li>A new print option (column 11 of the OPTION CARD) will reduce the volume of print by not printing the line which shows the matching character string.<\/li>\n <li>Only changed members and members longer that 5000 lines are written to the output file. A table (400,000 bytes) was added to GSRMAIN to store members as they are processed until we do a replace or the table gets full. GSRMAIN needs a partition large enough to run a 490K program.<\/li>\n<\/ul>\n","released_on":"1991-02-20T23:21:24.000000Z","deleted_at":null,"children":[]}],"releases":[{"id":141,"parent_id":null,"product_id":12,"release":"2.4","notes":"\n<ul>\n <li>For z\/VSE and z\/OS customers: \n <ul>\n  <li>Password maintenance has been simplified.<\/li>\n <\/ul>\n <\/li>\n <li>For z\/OS customers: \n <ul>\n  <li>A PROC is now provided to simplify usage from batch<\/li>\n  <li>Since IEBUPDTE is used to re-load the changed members, changed members containing any IEBUPDTE would caused problems replacing the member. Members are now checked for IEBUPDTE update statements and the job will fail if they are found.<\/li>\n <\/ul>\n <\/li>\n<\/ul>\n","released_on":"2007-09-10T21:21:24.000000Z","deleted_at":null,"children":[]},{"id":142,"parent_id":null,"product_id":12,"release":"2.3","notes":"\n<ul>\n <li>The previous behavior of printing a separate \"hit\" line on the report for every occurrence of the scan string within the same line has been changed.\u00a0 Beginning with this release, only one report line per input record should be printed.\u00a0 See item 2 below to revert GSRMAIN to the previous behavior.<\/li>\n <li>Two new \"Print Matching String\" option values (options record, column 11) have been added: \n <ol>\n  <li>\u00a0\u00a0 'F'\u00a0\u00a0 Print 'F'irst matching line only.\u00a0 This value will cause scanning to stop with the first record that contains any of the scan strings.\u00a0 When used in combination with the 'C' \"Print Option\" setting (in column 7), 'F' in column 11 will cause only one line per member to be printed, and only for those members that contain the scan string.<\/li>\n  <li>\u00a0\u00a0 'E'\u00a0\u00a0 Print 'E'very match found.\u00a0 If 'E' is specified, then the output report will contain a line for each occurrence of the scan string, even if there are multiple occurrences on the same input record.<\/li>\n <\/ol>\n <\/li>\n<\/ul>\n","released_on":"2006-01-06T23:21:24.000000Z","deleted_at":null,"children":[]},{"id":143,"parent_id":null,"product_id":12,"release":"2.2","notes":"<ul>\r\n <li>A new version of GSRMAIN is included, named GSRMAINL.&nbsp; GSRMAINL can scan members up to 20,000 lines in size before writing the member to the CHANGED file.&nbsp; This prevents updating members that are not really changed unless they are greater than 20,000 lines long.<\/li>\r\n <li>A new \"userid\" option for ICCF members allows you to specify the userid to be used when an ICCF member is changed.&nbsp; (This prevents the DTSUTIL ADD from failing after the DELETE when the previous userid is no longer valid.)&nbsp;<\/li>\r\n <li>The limit on the number of programs that can be INCLUDEd or EXCLUDEd is increased from 100 to 1000.<\/li>\r\n <li>The \"line\" numbers of members are now printed under the member name, making it easier to identify the line being displayed.<\/li>\r\n <li>A new option to print a specified number of lines of the member after each matched line allows you to see the lines affected in context.<\/li>\r\n <li>GSRMAIN and GSRMAINL are compiled using COBOL\/VSE.&nbsp; (If you do not have COBOL\/VSE, continue to run release 2.1.)<\/li>\r\n <li>The RETURN-CODE variable ($RC or $MRC in the JCL)&nbsp; is now set to 0 if there are members to update, 1 if there are not, or a higher number if there was an error.&nbsp; This allows you to bypass the update step if there are no updates to perform.<\/li>\r\n<\/ul>","released_on":"2005-09-02T22:54:06.000000Z","deleted_at":null,"children":[]},{"id":144,"parent_id":null,"product_id":12,"release":"2.1","notes":"<p>Changed the password update method. Eliminated requirement to compile GSRMAIN.<\/p>","released_on":"2003-07-03T23:30:02.000000Z","deleted_at":null,"children":[]},{"id":145,"parent_id":null,"product_id":12,"release":"2.0","notes":"<p>Initial MVS release with PDS support. Changed the VSE release number to match MVS version.<\/p>","released_on":"1996-12-03T00:55:12.000000Z","deleted_at":null,"children":[]},{"id":146,"parent_id":null,"product_id":12,"release":"1.5","notes":"\n<ul>\n <li>Added three option card fields (and enhanced a fourth) to identify input\/output types and lengths. This will simplify installation procedures.<\/li>\n <li>Added password protection.<\/li>\n<\/ul>\n","released_on":"1995-09-25T21:21:24.000000Z","deleted_at":null,"children":[]},{"id":147,"parent_id":null,"product_id":12,"release":"1.4","notes":"<ul>\r\n <li>If there is a non-blank in position 72 (continuation character) and a replacement causes data to be shifted to the right, shifting stops at position 71.<\/li>\r\n <li>If a replacement causes data to be shifted to the left and position 72 is non-blank (continuation character) and position 71 is not a blank and not a ',' (comma), a truncation error message is printed.<\/li>\r\n<\/ul>","released_on":"1993-06-09T22:55:34.000000Z","deleted_at":null,"children":[]},{"id":148,"parent_id":null,"product_id":12,"release":"1.3","notes":"\n<ul>\n <li>When an unchanged member is written to the CHANGED file, a message is written to the print file (see item 4 under release 1.1 changes below).<\/li>\n <li>When COMPRESSED members are written to the CHANGED file, a DTSBATCH job is created to issue a SQUEEZE command for each of those members to recompress them after they are reloaded with DTSUTIL.<\/li>\n <li>A DELETE option was added to allow deleting any line that matches a given character string (NEW=$DELETE-LINE$).<\/li>\n<\/ul>\n","released_on":"1993-03-04T23:21:24.000000Z","deleted_at":null,"children":[]},{"id":149,"parent_id":null,"product_id":12,"release":"1.2","notes":"\n<ul>\n <li>A new option to scan PHASE entries in VSE libraries has been added. It can be used to find programs that use certain modules (CICS programs using CURRENT-DATE, TIME OF DAY, etc.).<\/li>\n <li>\u00a0\u00a0\u00a0 Show line number where match found.<\/li>\n<\/ul>\n","released_on":"1991-02-20T23:21:24.000000Z","deleted_at":null,"children":[]},{"id":150,"parent_id":null,"product_id":12,"release":"1.1","notes":"\n<ul>\n <li>The output file containing scanned\/changed members is not opened unless the input scan table contains at least one \"NEW=\" entry indicating a REPLACE will be attempted. If you are only scanning, you do not need JCL for the 'CHANGED' file and you should not run the RELOAD or DTSUTIL job to reload the CHANGED file.<\/li>\n <li>The 'blank' wildcard character (see OPTION CARD, column 10) can now be used as a place holder in a replacement character string to allow it to end with one or more spaces.<\/li>\n <li>A new print option (column 11 of the OPTION CARD) will reduce the volume of print by not printing the line which shows the matching character string.<\/li>\n <li>Only changed members and members longer that 5000 lines are written to the output file. A table (400,000 bytes) was added to GSRMAIN to store members as they are processed until we do a replace or the table gets full. GSRMAIN needs a partition large enough to run a 490K program.<\/li>\n<\/ul>\n","released_on":"1991-02-20T23:21:24.000000Z","deleted_at":null,"children":[]},{"id":547,"parent_id":null,"product_id":12,"release":"2.5","notes":"<p>GSR release 2.5 for VSE includes the following enhancements:<\/p>\n<ul>\n<li>The Options statement is now optional when running GSR. A default\noptions statement will be supplied with the password from the GSRPOPTS\nmodule.\u00a0 See Section 1.3 for instructions on how to zap GSRPOPTS\nto set the default options you want to use. The former phase for\npasswords--GSRPPWDS is no longer used or distributed.<\/li>\n<li>JCL is simplified. When searching sublibrary members, a separate\ncall to JLIBR is no longer required in many cases. Also, the type of\ninput and output files (Disk, Tape or Punch) can be selected via the\nASSGN SYS004 and SYS006 statements. The type of input and output values\nin the default options statement will be replaced by the type of device\nassigned to the respective SYS00n numbers.<\/li>\n<li>The JCL PARM= value can be used to specify the sublibrary pattern\nto be searched via a SEARCH=lib.sublib parameter value. The JCL PARM\ncan also be used to supply FIND=, REPLACE=, and OPTION= values. This\nmakes it possible to create a JCL PROC to encapsulate the process and\nmake GSR very simple to use.<\/li>\n<li>The input statement format has been simplified. Synonyms for the\nsearch (S OLD=) and replace (S NEW=) commands can be specified.\u00a0\n'OLD=' can be also specified as 'FIND='.\u00a0\u00a0 'NEW=' can be\nspecified as 'REPLACE='.\u00a0\u00a0<\/li>\n<li>An alternate format for the 'P' statement can be specified\n'MEMBER=' will be converted internally to 'P' statements.<\/li>\n<li>The CHANGED file is now optional for search-only jobs. (Jobs with\nno 'NEW=' or 'REPLACE=' statements.)<\/li>\n<li>For jobs that need the CHANGED file, support for z\/VSE 4.3's 'punch\nto sublibrary member' is demonstrated, making the CHANGED file easier\nto define and work with.\u00a0<\/li>\n<li>A new function (WRITE ALL) will print all of the input members. If\na CHANGED file is specified for the WRITE ALL function, GSR will also\nwrite all input into a single file that could later be used to\nreload\/replace the sublibrary or ICCF members.<\/li>\n<li>The format of the ICCF statement is relaxed.\u00a0 For one library\nscans, only the beginning library number need be entered.\u00a0 Also\nfor one-library scans, the format can be as it was: 'ICCFnnnn', where\n'nnnn' = 4 digit library number.\u00a0 But it can also be 'ICCF nn' or\n'ICCF=nn' where 'nn' can be 1 to 4 digits. Also, the ICCF library(s) to\nsearch can be specified in the SEARCH value of the JCL\nPARM='SEARCH=ICCF=10'.<\/li>\n<li>A new command SET WILDCARD VARYING now allows you to match any\nnumber of characters between the values surrounding the wildcard\ncharacter in the S=OLD function.<\/li>\n<li>Usability is improved by providing the ability to include comment\nstatements in the input statements, so they can be described in the\nsame place they are defined.\u00a0<\/li>\n<li>Error messages have also been improved.<\/li>\n<li>Some of the logic was rewritten to improve performance.<\/li>\n<li>An optional zap is available to make GSRMAIN unable to perform\nupdates.<\/li>\n<\/ul>\n","released_on":"2013-08-01T21:21:24.000000Z","deleted_at":null,"children":[]},{"id":850,"parent_id":null,"product_id":12,"release":"2.6","notes":"<p><\/p><p>This release is a maintenance-only upgrade for z\/OS.&nbsp; Minor changes were made for the z\/VSE version of GSR.\r\n<\/p>","released_on":"2020-02-14T02:26:50.000000Z","deleted_at":null,"children":[]},{"id":851,"parent_id":null,"product_id":12,"release":"2.6","notes":"<p><\/p><p>This release is a maintenance-only upgrade for z\/OS.&nbsp; Minor changes were made for the z\/VSE version of GSR.\r\n<\/p>","released_on":"2020-02-14T02:26:53.000000Z","deleted_at":null,"children":[]},{"id":1028,"parent_id":null,"product_id":12,"release":"3.1","notes":"<p>Enhancements:<\/p>\r\n<ul><li>This release begins usage for the MacKinney License Keys software to manage license keys. Zapping the password&nbsp;is no longer required. Reference&nbsp;the&nbsp;<span class=\"fontstyle2\">MacKinney License Key Usage Guide&nbsp;<\/span><span class=\"fontstyle0\">manual for information on&nbsp;<\/span>installing Global Search and Replace Release 3.1 and later license keys.<\/li><\/ul>","released_on":"2025-10-31T14:14:49.000000Z","deleted_at":null,"children":[]}]}