WISP FAQ

  1. What is the latest release of WISP?
  2. What release of WISP supports Acucobol-GT X?
  3. What release of WISP supports Windows 10, Windows 7, Server 2008, Vista?
  4. Mouse isn’t working on Windows 10 consoles?
  5. What does “Terminating on an error detected by ACUCOBOL.” mean?
  6. What does “WISP-E-NOMSG WISP error, message number xxxxx” mean?
  7. What does error “(59836) %SHAREMEM-F-SHMAT Error getting PUTPARM shared memory address, shmid=xxxx, errno=13” mean?
  8. How do you build an ACUCOBOL runtime system that includes ACU4GL, ORACLE, and WISP?
  9. If I upgrade to the latest version of WISP do I need to re-translate and re-compile my applications?
  10. How does $UNIX_CODE work? Is there a $NT_CODE?
  11. What release of WISP supports Acucobol Vision 4 files?
  12. Does WISP support LBM’s UniQue on NT?
  13. If we are running multiple different terminal emulators do we need different videocap files?
  14. Can a user’s Print Mode Defaults be set for UniQue with Hold and Requeued (ie. ulp -M re,hold …)?
  15. What causes a “Load error” with Micro Focus COBOL and how do I fix it?
  16. How do you turn off the UniQue title message so it doesn’t appear in the wisperr.log file?
  17. What causes “%WEXITINT-F-SIGNAL User signaled interrupt,(1)”?
  18. What does the message “License file ‘wisp.4200/acu/wruncbl.alc’ inaccessible” mean?
  19. After a backup is restored the create date from READFDR is wrong. The “ls” command works, why doesn’t READFDR?
  20. Can I map the ESC key to be the HELP key in my videocap file?
  21. I’m having problems with PROCTRAN, what should I do?
  22. What version of CRID and CREATE support Micro Focus IDX4 files?
  23. On Windows how do you print files with embedded printer control codes?
  24. Why does my terminal emulator show BOLD fields as the same color are BOLD+BLINK+UNDERLINE fields?
  25. What GETPARM’s are issued by the wfopen3 routine?
  26. How do you tell a WISP migrated application it is running in background?
  27. What are the differences between WISP on UNIX and WISP on Windows (WIN32)?
  28. How do you determine the SIGN characteristics for zoned numeric data fields?

What is the latest release of WISP?

The latest release of WISP is 5.1.30.
The latest release of KCSI (C.R.I.D. and CREATE) is 4.2.02.

What release of WISP supports Acucobol-GT X?

WISP Release 5.1.30 support Acucobol-GT 10.3.x

WISP Release 5.1.20 support Acucobol-GT 10.2.x

WISP Release 5.1.00 support Acucobol-GT 8.x with patches available to support Acucobol-GT 9.x.

WISP Release 5.0.00 and later support Acucobol-GT 6.0 and Acucobol-GT 6.1.0.

Patches for WISP 5.0.01 are available to support
Acucobol-GT 8.1.x, 7.2.x and 6.2.x.

Customers with WISP support contracts can use the Contact form to request patches.

What release of WISP supports Windows 10, Windows 7, Server 2008, Vista?

WISP 5.1.00 supports Windows 10, Windows 7, Server 2008, Vista.

Patches for WISP 5.0.01 are available to support Vista.

Mouse isn’t working on Windows 10 consoles?

On Windows 10 the default options have changed for the Console windows.
To fix, run WSHELL (or any other console program) and right-click on upper-left corner and select Properties. Under ‘Edit Options’ you will want to ensure that the ‘QuickEdit Mode‘ is un-checked and ‘Use legacy console‘ is checked (older releases of Windows required you un-check ‘Extended text selection keys’).

What does “Terminating on an error detected by ACUCOBOL.” mean?

The message “Terminating on an error detected by ACUCOBOL.” means that Acucobol detected a problem and terminated the application. WISP is simply reporting that it’s Acucobol (and not WISP) that decided to terminate the application.

The most common reason for this is a CALL statement where the called program is not found. To capture the actual ACUCOBOL error message use the “+e” runtime option to redirect the errors to a file. You can then examine the error file to find out what program was not found or what other error has occurred.
Edit the WRUN Configuration file (wrun.cfg on Windows or wrunconfig on unix) in the $WISPCONFIG directory. Add “+e acuerr.log” to the “options=” line.
e.g.:

   options= -b +e acuerr.log

Rerun your application and when the error occurs you can then examine the acuerr.log file to see the Acucobol error message.

NOTE: You will often get this message when quitting out of the ACUCOBOL debugger, this is expected because your program is not terminating normally.

Version effected: All

What does “WISP-E-NOMSG WISP error, message number xxxxx” mean?

If you get this message it means that WISP was unable to find the message number in the message database file ($WISPCONFIG/wispmsg.dat). This either means the file wispmsg.dat file is missing or corrupted. You can get the message text from the file wispmsg.txt and you can recreate wispmsg.dat by running the wispmsg program.

Version effected: WISP 4.4.07 and earlier.

What does error “(59836) %SHAREMEM-F-SHMAT Error getting PUTPARM shared memory address, shmid=xxxx, errno=13” mean?

PUTPARM’s on UNIX are stored in shared memory ($ ipcs -m). Control files ($ ls /usr/tmp/wpparms) are used to locate the shared memory segments, and process group id’s ($WISPGID) are used to name the control files. This error indicates that the control files are out-of-sync with the shared memory segments. A control file is pointing to the wrong shared memory segment; the “errno=13” means access is denied to the segment. This condition can occur if programs are crashing, usually with a SIGNAL and not properly cleaning up shared memory segments.
To fix the problem, root can delete the shared memory segment indicated by “shmid=xxxx” in the error message using the “ipcrm -m” command. In an actual error message the “xxxx” will be a number.

    # ipcrm -m xxxx 

The problem can also usually be worked around by logging out and logging back in. This should reassign a new process group id and thus a new control file. Once this error occurs, the shared memory segments and control files should be re-synchronized at the earliest opportunity. The easiest way to do this is to reboot the computer and run “wsysinit”. To re-synchronize without reboot get all users out of the applications, run “wsysinit”, run “ipcs -m |grep 0xd5” to find orphaned shared memory segment created by the WISP runtime. Use “ipcrm -m xxxx” to delete any shared memory segments that have a KEY starting “0xd5”.

Version effected: WISP 4.4.07 and earlier.

How do you build an ACUCOBOL runtime system that includes ACU4GL, ORACLE, and WISP?

The makefile (wruncbl.umf) that comes with WISP is only a guideline. Changes to ACUCOBOL, ORACLE, and difference platforms will require changes to the makefile.
First try to build an ACU4GL runtime without WISP using the Makefile.ora that gets created by the ora_inst script supplied with Acucobol. If this does not succeed then call Acucobol support and they will help you though this step.
Once you can successfully build an Acucobol runtime with Oracle and without WISP then you know you have all the libraries and flags you need. You can then take that info from Makefile.ora and modify the wruncbl.umf file to build with WISP.

If I upgrade to the latest version of WISP do I need to re-translate and re-compile my applications?

No, you only need to re-link your COBOL runtime system.

How does $UNIX_CODE work? Is there a $NT_CODE?

The $UNIX_CODE conditional is active when the WISP translation is done on a UNIX machine. This was basically a bad idea as it is based on where the code was translated not where it will be run. It is perfectly valid to do the WISP translation on UNIX and run on NT or other systems.
There is no $NT_CODE conditional as we didn’t want to perpetuate a bad idea. You can use the $ACU_CODE and $MF_CODE for COBOL specific features then use the new “WISPPLAT” routine to retrieve the platform information at runtime. You can then write your own conditional code based on the platform information returned at runtime.

What release of WISP supports Acucobol Vision 4 files?

WISP 4.3 adds support for ACUCOBOL Vision 4 files. A Vision 4 file consists of two (or more) physical files that consists of a data portion and an index portion. The main data file by default has no extension and the main index file has an extension of “.vix”. The WISP routine “wfname” (used by “wfopen3”) will generate the filename path (used in the ASSIGN TO clause) to the main data file without any extension. ACUCOBOL allows Vision 4files to be separated so that the multiple physical files can exist in different directories. If a Vision 4 file consists of more then the two main physical files or if the physical files do not exist in the same directory then the routines “RENAME”, “SCRATCH”, “FILECOPY” and the utility WCOPY will not work correctly.

Does WISP support LBM’s UniQue on NT?

Yes, in version 4.3.02.

If we are running multiple different terminal emulators do we need different VIDEOCAP files?

It depends. If your terminal emulators all do a good job of emulating one terminal type (say vt220) then it’s possible to all use the same videocap file.
See the WISP manual Appendix D “VIDEOCAP” for a full description.

Can a user’s Print Mode Defaults be set for UniQue with Hold and Requeued (ie. ulp -M re,hold …)?

You can not specify both Hold and Requeue via the Print Mode. It can be done with the “PRINT” vssub. You would need to print with K=KEEP then call “PRINT” to queue it with Hold and Requeue options.

What causes a “Load error” with Micro Focus COBOL and how do I fix it?

You get the “load error: XXXX” message when the routine has not been included into the runtime. The wrunmf.c file references every WISP routine which is callable from COBOL and thus should be included in runtime.
In the past we have encountered several “releases” of Micro Focus which did not properly link routines into the runtime. Micro Focus has been good about fixing these once reported. If they have a newer release, get it.
To check if a routine actually made it into the runtime: rebuild the runtime with the “-g” flag on the “cob” command. This will cause the cob command to NOT strip symbol information from the runtime. You can then use the “nm” command to display the symbols and grep for the routine name.

   $ nm wrunmfe7 | grep XXXX

A properly linked routine will have at least 2 symbols, for “text” and “data”. A symbol marked as “extern” without either a “text” or “data” tag is a reference to the symbol not the routine itself, this means the symbol is unresolved.
Compare the results with a routine which is working correctly (e.g. wfname).

   $ nm wrunmfe7 | grep wfname 

If MicroFocus doesn’t have a fix you can force a symbol to be included by using the “-I” option on the cob command “-I XXXX”. (All the symbols needed are listed in wrunmf.c.)
FYI: If you include “-vDDD -Q -bloadmap:loadmap” on the cob command you get two things: a loadmap named “loadmap” which can help you resolve duplicate symbols. The -vDDD cause the tmp file not to be deleted and you can then examine the ldtab.s file which is the assembler file generated which contains all the entry points. If entry points are missing then ldtab.s usually has been generated wrong. So you can search it for “XXXX” and “wfname” and compare the results.

How do you turn off the UniQue title message so it doesn’t appear in the wisperr.log file?

The UniQue messages can be turned off by adding the “-q” flag to the ulp command by setting the UNIQUE_PRINT environment variable. (This is the default behavior in version 4.3.02.)

	$ UNIQUE_PRINT="ulp -q" 
	$ export UNIQUE_PRINT

What causes “%WEXITINT-F-SIGNAL User signaled interrupt,(1)”?

A hangup signal (1) can be generated by the user by turning off his terminal or by a modem line dropping connection or killing a terminal emulator without first exiting the running application.
For a description see “man 4 signal” and “man signal”.

What does the message “License file ‘wisp.4200/acu/wruncbl.alc’ inaccessible” mean?

The ALC file is Acucobol’s license file (not WISP license).
See your Acucobol installation instructions for further info.
They will need to copy and rename the Acucobol license file.

	$ cp $ACUDIR/bin/runcbl.alc $WISPDIR/acu/wruncbl.alc 

After a backup is restored the create date from READFDR is wrong. The “ls” command works, why doesn’t READFDR?

Unix does not maintain the “Create date” for a file. It maintains 3 dates for each file, they are: access time (st_atime), data mod time (st_mtime), and status change time (st_ctime). READFDR function “CD” returns st_time, and function “MD” returns st_mtime. This is all the info that is available on UNIX.
It appears that the ls command is reporting st_mtime. If this is what you want then change your program to use “MD” instead of “CD”.
For further info on st_ctime, and st_mtime see the “stat” routine in your unix manuals.
Refer to READFDR in chapter 5 of the WISP manual.

Can I map the ESC key to be the HELP key in my videocap file?

The ESC key in VT220 (or any “terminal” emulation) sends the escape character (\\E, or x1b). WISP can not map this character because it is the lead-in character for every function key and every special key.
If you are using Co*STAR it is possible to change the keyboard file vt220.kbd definition so that the ESC key sends a different value. You should be able to map it to ^e (x05) the generic help key.

I’m having problems with PROCTRAN, what should I do?

PROCTRAN is an obsolete utility which has been replaced by WPROC.
It is recommended they use WPROC instead of PROCTRAN.

What version of CRID and CREATE support Micro Focus IDX4 files?

CRID version 2.90, CREATE version 3.0 for Micro Focus support IDX4 files.

On Windows how do you print files with embedded printer control codes?

The WISP print facility is intended to work with files that contain plain text data. It reads the text and uses standard Windows GDI facility to format the text and sends it to a Windows printer driver. If you wish to print anything other then plain text, such as postscript or PCL, then you need to use the “raw” print facility available in WISP 4.3 and later. Starting with WISP 4.3 the FORMS file on Windows supports a new option “raw=1” that allows printing of a file that contains raw (fully rendered) data. This option is useful if your applications generate print files that contain printer control codes for a specific printer such as a postscript or PCL printer. If this option is specified then the file is sent to the printer without processing using the RAW print driver. If the “raw=1” options is used then all other FORMS options will be ignored so none should be specified.

Example FORMS file:

    012 pagelength=66 pagewidth=96 cpi=12 lpi=6 landscape=0
    017 cpi=16 lpi=8 lpp=88 pw=133 landscape=0
    200 raw=1 

Why does my terminal emulator show BOLD fields as the same color are BOLD+BLINK+UNDERLINE fields?

Terminal emulators often map the attributes BOLD, BLINK, UNDERLINE, REVERSED to individual colors. Low-end terminal emulators often don’t allow you to map combinations of attributes (e.g. BOLD+BLINK) to unique colors.
The problem is that, attributes are cumulative, and colors are not. It is possible to set multiple attributes but you can only set one color. Normally the last color that gets set is used.
A high-end emulator like Co*STAR does not have this problem.

What GETPARM’s are issued by the wfopen3 routine?

The WFOPEN routine issues an initial “hidden” GETPARM (type=ID). This GETPARM will not be displayed unless there is a matching PUTPARM of type “DISPLAY”, they are generated from a procedure RUN statement with a DISPLAY clause. If there is missing info or the OPEN fails then a “respecify” GETPARM (type=R) is issued, this one is always displayed unless the NORESPECIFY clause was in the SELECT statement. If a PUTPARM had been specified then a type=RD GETPARM is issued to update it.

How do you tell a WISP migrated application it is running in background?

WISP converted applications are expecting to be submitted to background using the SUBMIT vssub, or the SUBMIT statement in a procedure or the WSUBMIT utility. If you are running a application in background via some other mechanism (e.g. usubmit) then you need to tell the application it is running in background by setting the WISPBACKGRD variable to “true”.

  $ WISPBACKGRD=true
  $ export WISPBACKGRD 

Setting the WISPBACKGRD variable will tell the WISP converted applications that they are running in background.

What are the differences between WISP on UNIX and WISP on Windows (WIN32)?

The two versions of WISP are almost identical. There are no COBOL source code differences between UNIX and WIN32, in fact the WISP translator is identical with both products. The WIN32 version has a number of enhancements over the UNIX product to support the graphical nature of Windows, these include built-in mouse and color support. There is also direct support for the Windows print queue including enhanced print forms facilities for fonts, paper sizes, orientation etc.
The following facilities from the UNIX product are not available or behave substantially different on WIN32:

  • Micro Focus COBOL is not currently supported.
  • The ACP routines are not available.
  • The LOGOFF VSSUB terminates all of the link-levels but does not log the user off.
  • The BLDMF utility is not available, it has been replaced by WISPTRAN.EXE a graphic front-end to the WISP translator and the COBOL compiler.
  • The VSX utility is not provided as there is no O/S support for tape drives.
  • The VIEWKEY and VCAPKEYS utilities are not provided as there are no “terminal” types.
  • The WDELWRK utility is not provided as all work libraries are automatically deleted.
  • The obsolete UNIX shell utilities are not available (WDELAY, WEXISTS. WFIND, WPUTPARM, WRENAME, WRETCODE, WSCRATCH, WSUBMIT). All of their functionality is available through WPROC the Wang Procedure Interpreter.
  • The WSYSINIT utility is not provided as it is not required.
  • The WSYSCONF utility is not provided as all cleanup is automatically performed.
  • The VSEDIT utility does not allow you to translate and compiler from within it, on WIN32 you would do this in a separate window.

How do you determine the SIGN characteristics for zoned numeric data fields?

With signed zoned data fields (USAGE IS DISPLAY) you have a choice of how and where the sign is stored. The sign can be LEADING or TRIALING and it can be SEPARATE or by default included.
These options can be specified with a SIGN clause on the data field or they can be (and usually are) specified as compiler options. Experience shows that it is very rare to actually see a SIGN clause. This means that you can not tell what the sign characteristics are from simply looking at the COBOL source code. You need to look at the data files (using a hex editor) and determine how the sign is being stored. You can then lookup in the COBOL manual to find the compiler options needed to use the data as it was stored on the Wang.
As an example the Acucobol manual there is a section on Compiler Data Storage options that explains each of the options, the “-Ds” option specifies that the sign is TRIALING SEPARATE.