Enumerations history from Powerbuilder 10.0 to 12.5

In this article I will explain how I extract pragmatically the enumerations differences between Powerbuilder releases using EmbeddingPerl library and the differents pbperlxxx interpreters.

Just run each version of pbperlxxx interpreter from command line :

pbperl100 -MPowerbuilder::EnumClasses -e "print join $/, sort grep{/^[^\d].*/} keys %Powerbuilder::EnumClasses;" > enums100.txt
pbperl105 -MPowerbuilder::EnumClasses -e "print join $/, sort grep{/^[^\d].*/} keys %Powerbuilder::EnumClasses;" > enums105.txt
pbperl110 -MPowerbuilder::EnumClasses -e "print join $/, sort grep{/^[^\d].*/} keys %Powerbuilder::EnumClasses;" > enums110.txt
pbperl115 -MPowerbuilder::EnumClasses -e "print join $/, sort grep{/^[^\d].*/} keys %Powerbuilder::EnumClasses;" > enums115.txt
pbperl120 -MPowerbuilder::EnumClasses -e "print join $/, sort grep{/^[^\d].*/} keys %Powerbuilder::EnumClasses;" > enums120.txt
pbperl125 -MPowerbuilder::EnumClasses -e "print join $/, sort grep{/^[^\d].*/} keys %Powerbuilder::EnumClasses;" > enums125.txt

Then I compare the results files using a diff tool to extract differences…

So I wrote a Perl script that does it for me :

my @versions = qw( 100 105 110 115 120 125);
sub compare{
  my ($a, $b) = @_;
  print "Between $a and $b:\n";  
  my $code = '-MPowerbuilder=":all" -MPowerbuilder::EnumClasses -e "print join $/, sort grep{/^[^\d].*/} keys %Powerbuilder::EnumClasses;"';
  `pbperl${a} $code > tmp${a}.txt`;
  `pbperl${b} $code > tmp${b}.txt`;
  print join $/, map{s/^[<]/-/; s/^[>]/+/;$_} grep {/^[<>]/ && !/^[<>] CLASS/} split /\n/, `diff tmp${a}.txt tmp${b}.txt`;
  unlink "tmp${a}.txt";
  unlink "tmp${b}.txt";
  print "\n\n";
  return 0;  #don't mind
}
$a = shift @versions;
while($b = shift @versions){
  compare( $a, $b );
  $a = $b;
}

And the ouput was :

Between 100 and 105:
+ argcallingconvention
+ datetimeformat
+ menustyle
+ toolbarstyle
+ webpagingmethod

Between 105 and 110:
+ dbnotification
+ orientationtype
+ syncprocesstype
+ windowanimationstyle

Between 110 and 115:
+ richtexttoolbaractivation
+ sqlfunction

Between 115 and 120:
+ flowdirection

Between 120 and 125: