The variables at the top are not global (they are local to the script main function). You can make them visible to the functions with @Field annotation
Regards Andriy On Thu, Aug 10, 2023, 6:30 PM James McMahon <jsmcmah...@gmail.com> wrote: > Hello. I am trying to use a variable I define globally in a function that > follows within my script. Here is my code: > > def currentYear = LocalDate.now().getYear() > def yearValue > def monthValue > def dayValue > > boolean validateDate(String myYYYY, String myMM, String myDD) { > > // Acceptable range for years is assumed to be 120 years in the past > to 40 years into the future > > log.error("in validateDate, myYYYY is ${myYYYY}") > log.error("in validateDate, myMM is ${myMM}") > log.error("in validateDate, myDD is ${myDD}") > log.error("in validateDate, currentYear is 2023") > log.error("in validateDate, currentYear is ${currentYear}") > > yearValue = Integer.parseInt(myYYYY) > monthValue = Integer.parseInt(myMM.replaceFirst(/^0+/, '')) > dayValue = Integer.parseInt(myDD.replaceFirst(/^0+/, '')) > > > //if ((yearValue >= currentYear - 120 && yearValue <= currentYear + > 40) && \ > // (monthValue >= 1 && monthValue <= 12) && \ > // (dayValue >= 1 && dayValue <= 31) \ > // ) { return true } > // else { return false } > > //log.error("about to validate in validateDate, using > ${yearValue.toString()} and ${currentYear.toString()}") > log.error("about to validate in validateDate, using > ${yearValue.toString()} and 2023") > > //if ((yearValue >= (currentYear - 120)) && (yearValue <= (currentYear > + 40))) { return true } else { return false } > if ((yearValue >= (2023 - 120)) && (yearValue <= (2023 + 40))) { > return true } else { return false } > } > > In my log I find the first four log.error() output statements, but I do > not see the line that I expect: > in validateDate, currentYear is ${currentYear} > > currentYear does not seem to be known to my function validateDate(). What > ios my error here? How can I correct this? > > Thank you in advance for your help. >