Looking for a SAS job or wanting to promote your SAS recruitment agency?

I’ve recently opened up new opportunities for two groups of registered members:

  • Recruiters wanting to promote their agencies.
  • SAS programmers looking for their next SAS job.

All of the forums in [Holland Numerics: Blog and Forums] now allow messages to be sent by registered members directly and privately to anyone posting a topic in a forum. This means that, if you post a new topic in the SAS Skills Discussion Forum (which is accessible to all registered members) describing your recruitment agency, or your own SAS programming skills, other registered members will be able to send you messages. The facility also removes the necessity to reveal your phone number or email address to anyone you don’t need to, as the messages will be collected on the blog site, and you will be notified by email of new messages there, and any forum topic will display a list of your own messages at the bottom of the web page.

However, please think carefully about what you include in your topic, as your agency profile, or your SAS job prospects, could be positively or negatively affected by what you write!

Note that there may also be a delay in the topic appearing if you are writing your first topic in the forum, as I will have to approve it. This is intended to protect you from spam postings. But as soon as it is visible to all registered members, then a [Send a Message] link will be seen in the topic under your name.

How Do You Successfully Debug Your Program?

For a long while now I have been reading discussions on a range of social media platforms where programmers have been asking for help with programs that don’t behave as expected. Many of these programmers have certificates relating to the relevant programming languages, yet appear to have never been taught how to debug a program. To me the ability to resolve issues in a program is the most vital skill a programmer of every programming languages has to possess, otherwise they simply cannot call themselves a “programmer” in that language. Without this skill I would only call them a “code writer”.

So is this ability to resolve issues in a program a difficult skill to learn? I would say no, because it just involves the following a set of simple instructions, with a little observation and logic. Note that these instructions are not at all specific to SAS programming, or indeed to any other programming language:

  1. Talk through the logic of the program with a colleague. Quite often you can spot potential problems yourself while trying to explain the logic to another programmer.
  2. Run the program, and then check the log for error and warning messages, as there should be none!
  3. Look for unexpected empty intermediate data sets in the log.
  4. Test your code with small data subsets first, so that you can follow the processing path of individual data records. These subsets ought to be special sample records which will exercise as much of the logic within the program as possible.
  5. Print out intermediate data sets, especially if these are not kept at the end of the program.
  6. Print out intermediate data values at different places in the data steps to show the effect of different sections of the code.
  7. Fix any issues in the program and then start again from step #2 until no more problems are found.
  8. Remove, or at least comment out, any additional debugging code used.

However, at this point I must emphasize that not all programming problems can be resolved using these steps, but these steps should be tried first before asking for help.

So how should help be requested? By following steps 1-6 above you will have already collected a lot of information that could be vital for another programmer to resolve your problem, so don’t ignore any of it, remembering that any particular bit of information may be the most important bit required to solve your problem. Therefore, most, if not all, of the following information should be included in every request for assistance:

  • A description of the expected output from your program.
  • The reason you chose to write the program in this way.
  • All of the program code, because what you think is the cause of any problems may not be the only cause.
  • All of the sample data records, or the real data records if they are causing problems and can be posted.
  • The warning and error messages from the log (at the very least!).

Comments can be made by registered members in a copy of this post in the SAS Skills Discussion Forum.

The SAS course now has 16 topics in 3 sections

The SAS course continues to grow, and now has 16 topics in 3 different sections:

  • [A] SAS components – 2 topics
  • [B] Data Steps – 11 topics
  • [F] PROC SQL – 3 topics

The SAS course topics themselves can only be accessed by Programmer level members, but Free members can read the SAS course – Home page and see the individual topic names.

More topics and sections are being developed, so register for free now to be kept up-to-date about all of the news, so you can take advantage of the Programmer level when it suits you best!