--- loncom/lonnet/perl/lonnet.pm	2004/04/29 07:18:10	1.490
+++ loncom/lonnet/perl/lonnet.pm	2004/04/29 07:57:47	1.491
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # TCP networking package
 #
-# $Id: lonnet.pm,v 1.490 2004/04/29 07:18:10 albertel Exp $
+# $Id: lonnet.pm,v 1.491 2004/04/29 07:57:47 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -4448,6 +4448,15 @@ sub latest_rnd_algorithm_id {
     return '64bit2';
 }
 
+sub getCODE {
+    if (defined($ENV{'form.CODE'})) { return $ENV{'form.CODE'}; }
+    if (defined($Apache::lonhomework::parsing_a_problem) &&
+	defined($Apache::lonhomework::history{'resource.CODE'})) {
+	return $Apache::lonhomework::history{'resource.CODE'};
+    }
+    return undef;
+}
+
 sub rndseed {
     my ($symb,$courseid,$domain,$username)=@_;
 
@@ -4459,8 +4468,7 @@ sub rndseed {
     if (!$domain) { $domain=$wdomain; }
     if (!$username) { $username=$wusername }
     my $which=$ENV{"course.$courseid.rndseed"};
-    my $CODE=$ENV{'form.CODE'};
-    if (defined($CODE)) {
+    if (defined(&getCODE())) {
 	return &rndseed_CODE_64bit($symb,$courseid,$domain,$username);
     } elsif ($which eq '64bit2') {
 	return &rndseed_64bit2($symb,$courseid,$domain,$username);
@@ -4535,8 +4543,8 @@ sub rndseed_CODE_64bit {
 	use integer;
 	my $symbchck=unpack("%32S*",$symb.' ') << 16;
 	my $symbseed=numval2($symb);
-	my $CODEchck=unpack("%32S*",$ENV{'form.CODE'}.' ') << 16;
-	my $CODEseed=numval($ENV{'form.CODE'});
+	my $CODEchck=unpack("%32S*",&getCODE().' ') << 16;
+	my $CODEseed=numval(&getCODE());
 	my $courseseed=unpack("%32S*",$courseid.' ');
 	my $num1=$symbseed+$CODEchck;
 	my $num2=$CODEseed+$courseseed+$symbchck;