HP OpenVMS Systems

ask the wizard
Content starts here

C argv and argc, strings, and descriptors?

» close window

The Question is:

 
Excuse my ignorance, but I am new to this. With Dec C 5.5, how can I pass
argv to a descriptor?
Thank you.
 
 


The Answer is :

 
  Please see the OpenVMS Frequently Asked Questions (FAQ) for information
  on string descriptors.  See the attached example for details of one way
  to "convert" from a null-terminated string (ASCIZ) over to a static string
  descriptor (ASCID) string.
 
	--
 
#include <descrip.h>
#include <lib$routines.h>
#include <ssdef.h>
#include <stdio.h>
#include <string.h>
#include <stsdef.h>
 
#define TEXTBUFLEN 32
main( int argc, char **argv )
  {
  int RetStat;
  struct dsc$descriptor TextDsc =
    { TEXTBUFLEN, DSC$K_DTYPE_T, DSC$K_CLASS_S, NULL };
  char TextBuf[TEXTBUFLEN];
 
  if ( argc != 2 )
    {
    printf("this is a foreign command; usage: argc text\n");
    return SS$_BADPARAM;
    }
 
  sscanf( argv[1], "%32s", TextBuf );
 
  TextDsc.dsc$w_length = strlen( TextBuf );
  TextDsc.dsc$a_pointer = TextBuf;
 
  RetStat = lib$put_output( &TextDsc );
  if (!$VMS_STATUS_SUCCESS( RetStat ))
    return RetStat;
 
  return RetStat;
  }
 

answer written or last revised on ( 14-JUL-1999 )

» close window